@@ -139,58 +139,60 @@ sub die_with_sample {
139139 }
140140
141141 for my $build (keys %builds ) {
142- $release -> {url } = $url ;
142+ $release -> {url } = $url ;
143143 $release -> {" cpanm_dist_$_ " } = $cpanm {$_ } for keys %cpanm ;
144144
145145 $release -> {extra_flags } ||= ' ' ;
146- $release -> {debian_release } ||= ' stretch' ;
146+ $release -> {debian_release } ||= [ ' stretch' ] ;
147147
148- if ($build =~ / main/ ) {
149- $release -> {image } = ' buildpack-deps' ;
150- $release -> {tag } = $release -> {debian_release };
151- }
152- else {
153- $release -> {image } = ' debian' ;
154- $release -> {tag } = " @{[ $release ->{debian_release} ]}-slim" ;
155- }
148+ $release -> {image } = $build =~ / main/ ? ' buildpack-deps' : ' debian' ;
156149
157- my $output = $template ;
158- $output =~ s /\{\{ $_\}\} / $release ->{$_ }/ mg
159- for (qw( version pause extra_flags sha256 type url image tag cpanm_dist_name cpanm_dist_url cpanm_dist_sha256) );
160- $output =~ s /\{\{ args\}\} / $builds {$build }/ mg ;
161-
162- if ($build =~ / slim/ ) {
163- $output =~ s /\{\{ docker_slim_run_install\}\} / $docker_slim_run_install / mg ;
164- $output =~ s /\{\{ docker_slim_run_purge\}\} / $docker_slim_run_purge / mg ;
165- }
166- else {
167- $output =~ s /\{\{ docker_slim_run_install\}\} / true/ mg ;
168- $output =~ s /\{\{ docker_slim_run_purge\}\} / true/ mg ;
150+ if (ref $release -> {debian_release } ne ' ARRAY' ) {
151+ $release -> {debian_release } = [$release -> {debian_release }];
169152 }
170153
171- my $dir = sprintf " %i .%03i.%03i-%s " , ($release -> {version } =~ / (\d +)\. (\d +)\. (\d +)/ ), $build ;
172-
173- mkdir $dir unless -d $dir ;
174-
175- # Set up the generated DevelPatchPerl.patch
176- {
177- open my $fh , " >" , " $dir /DevelPatchPerl.patch" ;
178- print $fh $patch ;
154+ for my $debian_release (@{$release -> {debian_release }}) {
155+
156+ my $output = $template ;
157+ $output =~ s /\{\{ $_\}\} / $release ->{$_ }/ mg
158+ for (qw( version pause extra_flags sha256 type url image cpanm_dist_name cpanm_dist_url cpanm_dist_sha256) );
159+ $output =~ s /\{\{ args\}\} / $builds {$build }/ mg ;
160+
161+ if ($build =~ / slim/ ) {
162+ $output =~ s /\{\{ docker_slim_run_install\}\} / $docker_slim_run_install / mg ;
163+ $output =~ s /\{\{ docker_slim_run_purge\}\} / $docker_slim_run_purge / mg ;
164+ $output =~ s /\{\{ tag\}\} / $debian_release -slim/ mg ;
165+ }
166+ else {
167+ $output =~ s /\{\{ docker_slim_run_install\}\} / true/ mg ;
168+ $output =~ s /\{\{ docker_slim_run_purge\}\} / true/ mg ;
169+ $output =~ s /\{\{ tag\}\} / $debian_release / mg ;
170+ }
171+
172+ my $dir = sprintf " %i .%03i.%03i-%s -%s " , ($release -> {version } =~ / (\d +)\. (\d +)\. (\d +)/ ), $build , $debian_release ;
173+
174+ mkdir $dir unless -d $dir ;
175+
176+ # Set up the generated DevelPatchPerl.patch
177+ {
178+ open my $fh , " >" , " $dir /DevelPatchPerl.patch" ;
179+ print $fh $patch ;
180+ }
181+
182+ if (defined $release -> {test_parallel } && $release -> {test_parallel } eq " no" ) {
183+ $output =~ s /\{\{ test\}\} / make test_harness/ ;
184+ }
185+ elsif (!defined $release -> {test_parallel } || $release -> {test_parallel } eq " yes" ) {
186+ $output =~ s /\{\{ test\}\} / TEST_JOBS=\$ (nproc) make test_harness/ ;
187+ }
188+ else {
189+ die " test_parallel was provided for $release ->{version} but is invalid; should be 'yes' or 'no'\n " ;
190+ }
191+
192+ open my $dockerfile , " >" , " $dir /Dockerfile" or die " Couldn't open $dir /Dockerfile for writing" ;
193+ print $dockerfile $output ;
194+ close $dockerfile ;
179195 }
180-
181- if (defined $release -> {test_parallel } && $release -> {test_parallel } eq " no" ) {
182- $output =~ s /\{\{ test\}\} / make test_harness/ ;
183- }
184- elsif (!defined $release -> {test_parallel } || $release -> {test_parallel } eq " yes" ) {
185- $output =~ s /\{\{ test\}\} / TEST_JOBS=\$ (nproc) make test_harness/ ;
186- }
187- else {
188- die " test_parallel was provided for $release ->{version} but is invalid; should be 'yes' or 'no'\n " ;
189- }
190-
191- open my $dockerfile , " >" , " $dir /Dockerfile" or die " Couldn't open $dir /Dockerfile for writing" ;
192- print $dockerfile $output ;
193- close $dockerfile ;
194196 }
195197}
196198
@@ -237,6 +239,15 @@ =head1 DESCRIPTION
237239L<https://hub.docker.com/_/buildpack-deps|buildpack-deps> and
238240L<https://hub.docker.com/_/debian|debian> Docker images.
239241
242+ This can be a single tag, or a list of tags to generate multiple
243+ Dockerfiles for different Debian versions:
244+
245+ - version: 5.30.0
246+ type: xz
247+ debian_release:
248+ - stretch
249+ - buster
250+
240251Defaults: C<stretch > for C<main > builds, C<stretch-slim > for C<slim >
241252builds.
242253
0 commit comments