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
|
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
|
### 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
|
if [ -n "${dirs}" ]; then
|
||||||
header "stripping (with command $cmd and flags $stripFlags) in$dirs"
|
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
|
stopNest
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
|
@ -375,12 +375,7 @@ in
|
||||||
targetPlatform = localSystem;
|
targetPlatform = localSystem;
|
||||||
inherit config;
|
inherit config;
|
||||||
|
|
||||||
preHook = ''
|
preHook = commonPreHook;
|
||||||
# Make "strip" produce deterministic output, by setting
|
|
||||||
# timestamps etc. to a fixed value.
|
|
||||||
commonStripFlags="--enable-deterministic-archives"
|
|
||||||
${commonPreHook}
|
|
||||||
'';
|
|
||||||
|
|
||||||
initialPath =
|
initialPath =
|
||||||
((import ../common-path.nix) {pkgs = prevStage;});
|
((import ../common-path.nix) {pkgs = prevStage;});
|
||||||
|
|
Loading…
Reference in a new issue