stdenv: move --enable-deterministic-archives flag into GNU wrapper
`--enable-deterministic-archives` is a GNU specific strip flag and causes other strip implementations (for example LLVM's, see #138013) to fail. Since strip failures are ignored, this means that stripping doesn't work at all in certain situation (causing unnecessary dependencies etc.). To fix this, no longer pass `--enable-deterministic-archives` unconditionally, but instead add it in a GNU binutils specific strip wrapper only. `commonStripFlags` was only used for this flag, so we can remove it altogether. Future work could be to make a generic strip wrapper, with support for nix-support/strip-flags-{before,after} and NIX_STRIP_FLAGS_{BEFORE,AFTER}. This possibly overkill and unnecessary though -- also with the additional challenge of incorporating the darwin strip wrapper somehow.
This commit is contained in:
parent
1174f3030c
commit
11fe2fc3cf
4 changed files with 16 additions and 7 deletions
|
@ -324,6 +324,16 @@ stdenv.mkDerivation {
|
|||
echo "-arch ${targetPlatform.darwinArch}" >> $out/nix-support/libc-ldflags
|
||||
''
|
||||
|
||||
##
|
||||
## GNU specific extra strip flags
|
||||
##
|
||||
|
||||
# TODO(@sternenseemann): make a generic strip wrapper?
|
||||
+ optionalString (bintools.isGNU or false) ''
|
||||
wrap ${targetPrefix}strip ${./gnu-binutils-strip-wrapper.sh} \
|
||||
"${bintools_bin}/bin/${targetPrefix}strip"
|
||||
''
|
||||
|
||||
###
|
||||
### Remove LC_UUID
|
||||
###
|
||||
|
|
|
@ -0,0 +1,4 @@
|
|||
#! @shell@
|
||||
# shellcheck shell=bash
|
||||
|
||||
exec @prog@ --enable-deterministic-archives "$@"
|
|
@ -51,7 +51,7 @@ stripDirs() {
|
|||
|
||||
if [ -n "${dirs}" ]; then
|
||||
header "stripping (with command $cmd and flags $stripFlags) in$dirs"
|
||||
find $dirs -type f -exec $cmd $commonStripFlags $stripFlags '{}' \; 2>/dev/null
|
||||
find $dirs -type f -exec $cmd $stripFlags '{}' \; 2>/dev/null
|
||||
stopNest
|
||||
fi
|
||||
}
|
||||
|
|
|
@ -375,12 +375,7 @@ in
|
|||
targetPlatform = localSystem;
|
||||
inherit config;
|
||||
|
||||
preHook = ''
|
||||
# Make "strip" produce deterministic output, by setting
|
||||
# timestamps etc. to a fixed value.
|
||||
commonStripFlags="--enable-deterministic-archives"
|
||||
${commonPreHook}
|
||||
'';
|
||||
preHook = commonPreHook;
|
||||
|
||||
initialPath =
|
||||
((import ../common-path.nix) {pkgs = prevStage;});
|
||||
|
|
Loading…
Reference in a new issue