diff --git a/pkgs/build-support/gcc-wrapper/gcc-wrapper.sh b/pkgs/build-support/gcc-wrapper/gcc-wrapper.sh index 2ad7783a442..d6e91ebc666 100644 --- a/pkgs/build-support/gcc-wrapper/gcc-wrapper.sh +++ b/pkgs/build-support/gcc-wrapper/gcc-wrapper.sh @@ -84,11 +84,20 @@ fi extraAfter=($NIX_CFLAGS_COMPILE) extraBefore=() +# When enforcing purity, pretend gcc can't find the current date and +# time +if test "$NIX_ENFORCE_PURITY" = "1"; then + extraAfter+=('-D__DATE__=??? ?? ????' + '-D__TIME__=??:??:??' + -Wno-builtin-macro-redefined) +fi + + if test "$dontLink" != "1"; then # Add the flags that should only be passed to the compiler when # linking. - extraAfter=(${extraAfter[@]} $NIX_CFLAGS_LINK) + extraAfter+=($NIX_CFLAGS_LINK) # Add the flags that should be passed to the linker (and prevent # `ld-wrapper' from adding NIX_LDFLAGS again). @@ -97,9 +106,9 @@ if test "$dontLink" != "1"; then done for i in $NIX_LDFLAGS; do if test "${i:0:3}" = "-L/"; then - extraAfter=(${extraAfter[@]} "$i") + extraAfter+=("$i") else - extraAfter=(${extraAfter[@]} "-Wl,$i") + extraAfter+=("-Wl,$i") fi done export NIX_LDFLAGS_SET=1 @@ -139,9 +148,9 @@ fi # `-B' flags, since they confuse some programs. Deep bash magic to # apply grep to stderr (by swapping stdin/stderr twice). if test -z "$NIX_GCC_NEEDS_GREP"; then - @gccProg@ ${extraBefore[@]} "${params[@]}" ${extraAfter[@]} + @gccProg@ ${extraBefore[@]} "${params[@]}" "${extraAfter[@]}" else - (@gccProg@ ${extraBefore[@]} "${params[@]}" ${extraAfter[@]} 3>&2 2>&1 1>&3- \ + (@gccProg@ ${extraBefore[@]} "${params[@]}" "${extraAfter[@]}" 3>&2 2>&1 1>&3- \ | (grep -v 'file path prefix' || true); exit ${PIPESTATUS[0]}) 3>&2 2>&1 1>&3- exit $? fi