gcc-wrapper: make __DATE__/__TIME__ deterministic
...when NIX_ENFORCE_PURITY=1. @vcunat corrected the date according to docs. https://gcc.gnu.org/onlinedocs/cpp/Standard-Predefined-Macros.html In order to handle the spaces well, the extraAfter array had to be quoted more properly and appended by +=.
This commit is contained in:
parent
7141303c99
commit
aa119e1106
@ -84,11 +84,20 @@ fi
|
|||||||
extraAfter=($NIX_CFLAGS_COMPILE)
|
extraAfter=($NIX_CFLAGS_COMPILE)
|
||||||
extraBefore=()
|
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
|
if test "$dontLink" != "1"; then
|
||||||
|
|
||||||
# Add the flags that should only be passed to the compiler when
|
# Add the flags that should only be passed to the compiler when
|
||||||
# linking.
|
# linking.
|
||||||
extraAfter=(${extraAfter[@]} $NIX_CFLAGS_LINK)
|
extraAfter+=($NIX_CFLAGS_LINK)
|
||||||
|
|
||||||
# Add the flags that should be passed to the linker (and prevent
|
# Add the flags that should be passed to the linker (and prevent
|
||||||
# `ld-wrapper' from adding NIX_LDFLAGS again).
|
# `ld-wrapper' from adding NIX_LDFLAGS again).
|
||||||
@ -97,9 +106,9 @@ if test "$dontLink" != "1"; then
|
|||||||
done
|
done
|
||||||
for i in $NIX_LDFLAGS; do
|
for i in $NIX_LDFLAGS; do
|
||||||
if test "${i:0:3}" = "-L/"; then
|
if test "${i:0:3}" = "-L/"; then
|
||||||
extraAfter=(${extraAfter[@]} "$i")
|
extraAfter+=("$i")
|
||||||
else
|
else
|
||||||
extraAfter=(${extraAfter[@]} "-Wl,$i")
|
extraAfter+=("-Wl,$i")
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
export NIX_LDFLAGS_SET=1
|
export NIX_LDFLAGS_SET=1
|
||||||
@ -139,9 +148,9 @@ fi
|
|||||||
# `-B' flags, since they confuse some programs. Deep bash magic to
|
# `-B' flags, since they confuse some programs. Deep bash magic to
|
||||||
# apply grep to stderr (by swapping stdin/stderr twice).
|
# apply grep to stderr (by swapping stdin/stderr twice).
|
||||||
if test -z "$NIX_GCC_NEEDS_GREP"; then
|
if test -z "$NIX_GCC_NEEDS_GREP"; then
|
||||||
@gccProg@ ${extraBefore[@]} "${params[@]}" ${extraAfter[@]}
|
@gccProg@ ${extraBefore[@]} "${params[@]}" "${extraAfter[@]}"
|
||||||
else
|
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-
|
| (grep -v 'file path prefix' || true); exit ${PIPESTATUS[0]}) 3>&2 2>&1 1>&3-
|
||||||
exit $?
|
exit $?
|
||||||
fi
|
fi
|
||||||
|
Loading…
Reference in New Issue
Block a user