214214 ;;
215215 esac
216216esac
217+
218+ case ${DOCKER_BUILDKIT-0} in
219+ 1)
220+ # With buildkit we cannot retrieve failed builds.
221+ # So we do not allow the main step of a build stage to fail.
222+ # Instead we record the exit code in the file STATUS.
223+ THEN_SAVE_STATUS=' ; echo $? > STATUS'
224+ # ... and at the beginning of the next build stage,
225+ # we check the status and exit with an error status.
226+ CHECK_STATUS_THEN=' STATUS=$(cat STATUS 2>/dev/null); case "$STATUS" in ""|0) ;; *) exit $STATUS;; esac; '
227+ esac
228+
217229cat << EOF
218230
219231FROM with-system-packages as bootstrapped
@@ -230,20 +242,20 @@ $ADD pkgs pkgs
230242$ADD build ./build
231243$ADD .upstream.d ./.upstream.d
232244ARG BOOTSTRAP=./bootstrap
233- $RUN sh -x -c "\$ {BOOTSTRAP}" $ENDRUN
245+ $RUN sh -x -c "\$ {BOOTSTRAP}" $ENDRUN $THEN_SAVE_STATUS
234246
235247FROM bootstrapped as configured
236248#:configuring:
237- RUN mkdir -p logs/pkgs; rm -f config.log; ln -s logs/pkgs/config.log config.log
249+ RUN $CHECK_STATUS_THEN mkdir -p logs/pkgs; rm -f config.log; ln -s logs/pkgs/config.log config.log
238250ARG EXTRA_CONFIGURE_ARGS=""
239251EOF
240252if [ ${WITH_SYSTEM_SPKG} = " force" ]; then
241253 cat << EOF
242- $RUN echo "****** Configuring: ./configure --enable-build-as-root $CONFIGURE_ARGS \$ {EXTRA_CONFIGURE_ARGS} *******"; ./configure --enable-build-as-root $CONFIGURE_ARGS \$ {EXTRA_CONFIGURE_ARGS} || (echo "********** configuring without forcing ***********"; echo "::group::config.log"; cat config.log; echo "::endgroup::"; ./configure --enable-build-as-root; echo "::group::config.log"; cat config.log; echo "::endgroup::"; exit 1) $ENDRUN
254+ $RUN echo "****** Configuring: ./configure --enable-build-as-root $CONFIGURE_ARGS \$ {EXTRA_CONFIGURE_ARGS} *******"; ./configure --enable-build-as-root $CONFIGURE_ARGS \$ {EXTRA_CONFIGURE_ARGS} || (echo "********** configuring without forcing ***********"; echo "::group::config.log"; cat config.log; echo "::endgroup::"; ./configure --enable-build-as-root; echo "::group::config.log"; cat config.log; echo "::endgroup::"; exit 1) $ENDRUN $THEN_SAVE_STATUS
243255EOF
244256else
245257 cat << EOF
246- $RUN echo "****** Configuring: ./configure --enable-build-as-root $CONFIGURE_ARGS \$ {EXTRA_CONFIGURE_ARGS} *******"; ./configure --enable-build-as-root $CONFIGURE_ARGS \$ {EXTRA_CONFIGURE_ARGS} || (echo "::group::config.log"; cat config.log; echo "::endgroup::"; exit 1) $ENDRUN
258+ $RUN echo "****** Configuring: ./configure --enable-build-as-root $CONFIGURE_ARGS \$ {EXTRA_CONFIGURE_ARGS} *******"; ./configure --enable-build-as-root $CONFIGURE_ARGS \$ {EXTRA_CONFIGURE_ARGS} || (echo "::group::config.log"; cat config.log; echo "::endgroup::"; exit 1) $ENDRUN $THEN_SAVE_STATUS
247259EOF
248260fi
249261cat << EOF
@@ -256,7 +268,7 @@ ARG USE_MAKEFLAGS="-k V=0"
256268ENV SAGE_CHECK=warn
257269ENV SAGE_CHECK_PACKAGES="!cython,!r,!python3,!gap,!cysignals,!linbox,!git,!ppl,!cmake,!rpy2,!sage_sws2rst"
258270#:toolchain:
259- $RUN make \$ {USE_MAKEFLAGS} base-toolchain $ENDRUN
271+ $RUN $CHECK_STATUS_THEN make \$ {USE_MAKEFLAGS} base-toolchain $ENDRUN $THEN_SAVE_STATUS
260272
261273FROM with-base-toolchain as with-targets-pre
262274ARG NUMPROC=8
@@ -266,7 +278,7 @@ ENV SAGE_CHECK=warn
266278ENV SAGE_CHECK_PACKAGES="!cython,!r,!python3,!gap,!cysignals,!linbox,!git,!ppl,!cmake,!rpy2,!sage_sws2rst"
267279#:make:
268280ARG TARGETS_PRE="all-sage-local"
269- $RUN make SAGE_SPKG="sage-spkg -y -o" \$ {USE_MAKEFLAGS} \$ {TARGETS_PRE} $ENDRUN
281+ $RUN $CHECK_STATUS_THEN make SAGE_SPKG="sage-spkg -y -o" \$ {USE_MAKEFLAGS} \$ {TARGETS_PRE} $ENDRUN $THEN_SAVE_STATUS
270282
271283FROM with-targets-pre as with-targets
272284ARG NUMPROC=8
@@ -276,7 +288,7 @@ ENV SAGE_CHECK=warn
276288ENV SAGE_CHECK_PACKAGES="!cython,!r,!python3,!gap,!cysignals,!linbox,!git,!ppl,!cmake,!rpy2,!sage_sws2rst"
277289$ADD src src
278290ARG TARGETS="build"
279- $RUN make SAGE_SPKG="sage-spkg -y -o" \$ {USE_MAKEFLAGS} \$ {TARGETS} $ENDRUN
291+ $RUN $CHECK_STATUS_THEN make SAGE_SPKG="sage-spkg -y -o" \$ {USE_MAKEFLAGS} \$ {TARGETS} $ENDRUN $THEN_SAVE_STATUS
280292
281293FROM with-targets as with-targets-optional
282294ARG NUMPROC=8
@@ -285,7 +297,7 @@ ARG USE_MAKEFLAGS="-k V=0"
285297ENV SAGE_CHECK=warn
286298ENV SAGE_CHECK_PACKAGES="!cython,!r,!python3,!gap,!cysignals,!linbox,!git,!ppl,!cmake,!rpy2,!sage_sws2rst"
287299ARG TARGETS_OPTIONAL="ptest"
288- $RUN make SAGE_SPKG="sage-spkg -y -o" \$ {USE_MAKEFLAGS} \$ {TARGETS_OPTIONAL} || echo "(error ignored)" $ENDRUN
300+ $RUN $CHECK_STATUS_THEN make SAGE_SPKG="sage-spkg -y -o" \$ {USE_MAKEFLAGS} \$ {TARGETS_OPTIONAL} || echo "(error ignored)" $ENDRUN $THEN_SAVE_STATUS
289301
290302#:end:
291303EOF
0 commit comments