From f9e2960c018103be756a7f8a506816b49d662514 Mon Sep 17 00:00:00 2001 From: Carl Dong Date: Tue, 20 Apr 2021 15:44:38 -0400 Subject: guix: Construct $OUTDIR in ${DISTSRC}/output While files are being output to $OUTDIR, it will be under ${DISTSRC}/output, and only when everything is done, will ${DISTSRC}/output be moved to the actual $OUTDIR. This makes it so that a Ctrl-C in the middle of a build is less likely to result in a partially-constructed $OUTDIR. In fact, if I understand correctly, if $OUTDIR and $DISTSRC reside on the same filesystem, the move (rename) is likely atomic. Also, since the "working $OUTDIR" is under ${DISTSRC}/output, it will be cleaned properly by the guix-clean script. --- contrib/guix/libexec/build.sh | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'contrib/guix/libexec/build.sh') diff --git a/contrib/guix/libexec/build.sh b/contrib/guix/libexec/build.sh index 21062751ab..1bd4fee884 100644 --- a/contrib/guix/libexec/build.sh +++ b/contrib/guix/libexec/build.sh @@ -33,6 +33,9 @@ Required environment variables as seen inside the container: OUTDIR: ${OUTDIR:?not set} EOF +ACTUAL_OUTDIR="${OUTDIR}" +OUTDIR="${DISTSRC}/output" + ##################### # Environment Setup # ##################### @@ -429,3 +432,5 @@ mkdir -p "$DISTSRC" ;; esac ) # $DISTSRC + +mv --no-target-directory "$OUTDIR" "$ACTUAL_OUTDIR" -- cgit v1.2.3