generate.pl: Support building for multiple Debian releases

This adds generating Dockerfiles for each Perl version on multiple
Debian releases, such as for the current 5.30.x to support both Debian
10 (buster) and 9 (stretch).  We also change the directory structure to
better indicate which Debian release it provides for.
This commit is contained in:
Zak B. Elep 2019-07-18 12:08:11 +08:00
parent 92233bc529
commit 9e34ee448a

View file

@ -143,32 +143,33 @@ for my $release (@{$config->{releases}}) {
$release->{"cpanm_dist_$_"} = $cpanm{$_} for keys %cpanm;
$release->{extra_flags} ||= '';
$release->{debian_release} ||= 'stretch';
$release->{debian_release} ||= ['stretch'];
if ($build =~ /main/) {
$release->{image} = 'buildpack-deps';
$release->{tag} = $release->{debian_release};
}
else {
$release->{image} = 'debian';
$release->{tag} = "@{[ $release->{debian_release} ]}-slim";
$release->{image} = $build =~ /main/ ? 'buildpack-deps' : 'debian';
if (ref $release->{debian_release} ne 'ARRAY') {
$release->{debian_release} = [$release->{debian_release}];
}
for my $debian_release (@{$release->{debian_release}}) {
my $output = $template;
$output =~ s/\{\{$_\}\}/$release->{$_}/mg
for (qw(version pause extra_flags sha256 type url image tag cpanm_dist_name cpanm_dist_url cpanm_dist_sha256));
for (qw(version pause extra_flags sha256 type url image cpanm_dist_name cpanm_dist_url cpanm_dist_sha256));
$output =~ s/\{\{args\}\}/$builds{$build}/mg;
if ($build =~ /slim/) {
$output =~ s/\{\{docker_slim_run_install\}\}/$docker_slim_run_install/mg;
$output =~ s/\{\{docker_slim_run_purge\}\}/$docker_slim_run_purge/mg;
$output =~ s/\{\{tag\}\}/$debian_release-slim/mg;
}
else {
$output =~ s/\{\{docker_slim_run_install\}\}/true/mg;
$output =~ s/\{\{docker_slim_run_purge\}\}/true/mg;
$output =~ s/\{\{tag\}\}/$debian_release/mg;
}
my $dir = sprintf "%i.%03i.%03i-%s", ($release->{version} =~ /(\d+)\.(\d+)\.(\d+)/), $build;
my $dir = sprintf "%i.%03i.%03i-%s-%s", ($release->{version} =~ /(\d+)\.(\d+)\.(\d+)/), $build, $debian_release;
mkdir $dir unless -d $dir;
@ -192,6 +193,7 @@ for my $release (@{$config->{releases}}) {
print $dockerfile $output;
close $dockerfile;
}
}
}
=pod
@ -237,6 +239,15 @@ The Docker image tag which this Perl would build on, common to both the
L<https://hub.docker.com/_/buildpack-deps|buildpack-deps> and
L<https://hub.docker.com/_/debian|debian> Docker images.
This can be a single tag, or a list of tags to generate multiple
Dockerfiles for different Debian versions:
- version: 5.30.0
type: xz
debian_release:
- stretch
- buster
Defaults: C<stretch> for C<main> builds, C<stretch-slim> for C<slim>
builds.