@@ -69,6 +69,20 @@ sub die_with_sample {
69
69
EOF
70
70
chomp $docker_slim_run_purge ;
71
71
72
+ my $docker_rm_sources = <<'OEF' ;
73
+ rm -fr ./cpanm /root/.cpanm /usr/src/perl /usr/src/{{cpanm_dist_name}}* /tmp/*
74
+ OEF
75
+ chomp $docker_rm_sources ;
76
+
77
+ my $docker_rm_sources_install = <<'OEF' ;
78
+ rm -fr ./cpanm /root/.cpanm /tmp/* /usr/src/{{cpanm_dist_name}}* \
79
+ && apt-get update \
80
+ && apt-get install --no-install-recommends -y gdb \
81
+ && rm -fr /var/cache/apt/* /var/lib/apt/lists/*
82
+ OEF
83
+ chomp $docker_rm_sources_install ;
84
+
85
+ chomp $docker_rm_sources ;
72
86
my $config = do {
73
87
open my $fh , ' <' , ' config.yml' or die " Couldn't open config" ;
74
88
local $/ ;
@@ -144,20 +158,24 @@ sub die_with_sample {
144
158
145
159
$release -> {extra_flags } ||= ' ' ;
146
160
$release -> {debian_release } ||= ' stretch' ;
161
+ my $debug_flags = ' ' ;
147
162
148
- if ($build =~ / main/ ) {
163
+ if ($build =~ / ( main|debug) / ) {
149
164
$release -> {image } = ' buildpack-deps' ;
150
165
$release -> {tag } = $release -> {debian_release };
166
+ if ($build =~ / debug/ ) {
167
+ # The beginning space here is important, it is here to reduce the
168
+ # size of the diff size for the non-debug Dockerfiles.
169
+ # Older versions may require -Doptimise=-g
170
+ $debug_flags = " -Doptimise=-g -DEBUGGING=both" ;
171
+ }
151
172
}
152
173
else {
153
174
$release -> {image } = ' debian' ;
154
175
$release -> {tag } = " @{[ $release ->{debian_release} ]}-slim" ;
155
176
}
156
177
157
178
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
179
162
180
if ($build =~ / slim/ ) {
163
181
$output =~ s /\{\{ docker_slim_run_install\}\} / $docker_slim_run_install / mg ;
@@ -168,6 +186,21 @@ sub die_with_sample {
168
186
$output =~ s /\{\{ docker_slim_run_purge\}\} / true/ mg ;
169
187
}
170
188
189
+ if ($build eq ' debug' ) {
190
+ $output =~ s /\{\{ docker_rm_sources\}\} / $docker_rm_sources_install / mg ;
191
+ }
192
+ else {
193
+ $output =~ s /\{\{ docker_rm_sources\}\} / $docker_rm_sources / mg ;
194
+ }
195
+
196
+ $output =~ s /\{\{ $_\}\} / $release ->{$_ }/ mg
197
+ for (qw( version pause extra_flags sha256 type url image tag cpanm_dist_name cpanm_dist_url cpanm_dist_sha256) );
198
+ $output =~ s /\{\{ args\}\} / $builds {$build }/ mg ;
199
+
200
+ # The beginning space here is important, it is here to reduce the
201
+ # size of the diff size for the non-debug Dockerfiles.
202
+ $output =~ s / \{\{ debug_flags\}\} / $debug_flags / mg ;
203
+
171
204
my $dir = sprintf " %i .%03i.%03i-%s " , ($release -> {version } =~ / (\d +)\. (\d +)\. (\d +)/ ), $build ;
172
205
173
206
mkdir $dir unless -d $dir ;
@@ -277,7 +310,7 @@ =head1 DESCRIPTION
277
310
&& gnuArch="$(dpkg-architecture --query DEB_BUILD_GNU_TYPE)" \
278
311
&& archBits="$(dpkg-architecture --query DEB_BUILD_ARCH_BITS)" \
279
312
&& archFlag="$([ "$archBits" = '64' ] && echo '-Duse64bitall' || echo '-Duse64bitint')" \
280
- && ./Configure -Darchname="$gnuArch" "$archFlag" {{args}} {{extra_flags}} -des \
313
+ && ./Configure -Darchname="$gnuArch" "$archFlag" {{args}} {{extra_flags}} {{debug_flags}} -des \
281
314
&& make -j$(nproc) \
282
315
&& {{test}} \
283
316
&& make install \
@@ -286,7 +319,7 @@ =head1 DESCRIPTION
286
319
&& echo '{{cpanm_dist_sha256}} *{{cpanm_dist_name}}.tar.gz' | sha256sum -c - \
287
320
&& tar -xzf {{cpanm_dist_name}}.tar.gz && cd {{cpanm_dist_name}} && perl bin/cpanm . && cd /root \
288
321
&& {{docker_slim_run_purge}} \
289
- && rm -fr ./cpanm /root/.cpanm /usr/src/perl /usr/src/{{cpanm_dist_name}}* /tmp/*
322
+ && {{docker_rm_sources}}
290
323
291
324
WORKDIR /root
292
325
0 commit comments