Merge pull request #185537 from trofi/decouple-strip-and-separate-debug
setup-hooks/separate-debug-info.sh: don't inhibit strip hook
This commit is contained in:
commit
3ceb8a59a6
@ -531,7 +531,6 @@ buildStdenv.mkDerivation ({
|
|||||||
header "separating debug info from $i (build ID $id)"
|
header "separating debug info from $i (build ID $id)"
|
||||||
mkdir -p "$dst/''${id:0:2}"
|
mkdir -p "$dst/''${id:0:2}"
|
||||||
$OBJCOPY --only-keep-debug "$i" "$dst/''${id:0:2}/''${id:2}.debug"
|
$OBJCOPY --only-keep-debug "$i" "$dst/''${id:0:2}/''${id:2}.debug"
|
||||||
$STRIP --strip-debug "$i"
|
|
||||||
|
|
||||||
# Also a create a symlink <original-name>.debug.
|
# Also a create a symlink <original-name>.debug.
|
||||||
ln -sfn ".build-id/''${id:0:2}/''${id:2}.debug" "$dst/../$(basename "$i")"
|
ln -sfn ".build-id/''${id:0:2}/''${id:2}.debug" "$dst/../$(basename "$i")"
|
||||||
|
@ -2,7 +2,6 @@ export NIX_SET_BUILD_ID=1
|
|||||||
export NIX_LDFLAGS+=" --compress-debug-sections=zlib"
|
export NIX_LDFLAGS+=" --compress-debug-sections=zlib"
|
||||||
export NIX_CFLAGS_COMPILE+=" -ggdb -Wa,--compress-debug-sections"
|
export NIX_CFLAGS_COMPILE+=" -ggdb -Wa,--compress-debug-sections"
|
||||||
export RUSTFLAGS+=" -g"
|
export RUSTFLAGS+=" -g"
|
||||||
dontStrip=1
|
|
||||||
|
|
||||||
fixupOutputHooks+=(_separateDebugInfo)
|
fixupOutputHooks+=(_separateDebugInfo)
|
||||||
|
|
||||||
@ -35,7 +34,6 @@ _separateDebugInfo() {
|
|||||||
# firmware blobs in QEMU.)
|
# firmware blobs in QEMU.)
|
||||||
(
|
(
|
||||||
$OBJCOPY --only-keep-debug "$i" "$dst/${id:0:2}/${id:2}.debug"
|
$OBJCOPY --only-keep-debug "$i" "$dst/${id:0:2}/${id:2}.debug"
|
||||||
$STRIP --strip-debug "$i"
|
|
||||||
|
|
||||||
# Also a create a symlink <original-name>.debug.
|
# Also a create a symlink <original-name>.debug.
|
||||||
ln -sfn ".build-id/${id:0:2}/${id:2}.debug" "$dst/../$(basename "$i")"
|
ln -sfn ".build-id/${id:0:2}/${id:2}.debug" "$dst/../$(basename "$i")"
|
||||||
|
@ -38,26 +38,27 @@ _doStrip() {
|
|||||||
stripDirs() {
|
stripDirs() {
|
||||||
local cmd="$1"
|
local cmd="$1"
|
||||||
local ranlibCmd="$2"
|
local ranlibCmd="$2"
|
||||||
local dirs="$3"
|
local paths="$3"
|
||||||
local stripFlags="$4"
|
local stripFlags="$4"
|
||||||
local dirsNew=
|
local pathsNew=
|
||||||
|
|
||||||
local d
|
local p
|
||||||
for d in ${dirs}; do
|
for p in ${paths}; do
|
||||||
if [ -e "$prefix/$d" ]; then
|
if [ -e "$prefix/$p" ]; then
|
||||||
dirsNew="${dirsNew} $prefix/$d "
|
pathsNew="${pathsNew} $prefix/$p"
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
dirs=${dirsNew}
|
paths=${pathsNew}
|
||||||
|
|
||||||
if [ -n "${dirs}" ]; then
|
if [ -n "${paths}" ]; then
|
||||||
echo "stripping (with command $cmd and flags $stripFlags) in$dirs"
|
echo "stripping (with command $cmd and flags $stripFlags) in $paths"
|
||||||
find $dirs -type f -exec $cmd $stripFlags '{}' \; 2>/dev/null
|
# Do not strip lib/debug. This is a directory used by setup-hooks/separate-debug-info.sh.
|
||||||
|
find $paths -type f -a '!' -wholename "$prefix/lib/debug/*" -exec $cmd $stripFlags '{}' \; 2>/dev/null
|
||||||
# 'strip' does not normally preserve archive index in .a files.
|
# 'strip' does not normally preserve archive index in .a files.
|
||||||
# This usually causes linking failures against static libs like:
|
# This usually causes linking failures against static libs like:
|
||||||
# ld: ...-i686-w64-mingw32-stage-final-gcc-13.0.0-lib/i686-w64-mingw32/lib/libstdc++.dll.a:
|
# ld: ...-i686-w64-mingw32-stage-final-gcc-13.0.0-lib/i686-w64-mingw32/lib/libstdc++.dll.a:
|
||||||
# error adding symbols: archive has no index; run ranlib to add one
|
# error adding symbols: archive has no index; run ranlib to add one
|
||||||
# Restore the index by running 'ranlib'.
|
# Restore the index by running 'ranlib'.
|
||||||
find $dirs -name '*.a' -type f -exec $ranlibCmd '{}' \; 2>/dev/null
|
find $paths -name '*.a' -type f -exec $ranlibCmd '{}' \; 2>/dev/null
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
@ -430,11 +430,6 @@ in with passthru; stdenv.mkDerivation {
|
|||||||
# This allows build Python to import host Python's sysconfigdata
|
# This allows build Python to import host Python's sysconfigdata
|
||||||
mkdir -p "$out/${sitePackages}"
|
mkdir -p "$out/${sitePackages}"
|
||||||
ln -s "$out/lib/${libPrefix}/"_sysconfigdata*.py "$out/${sitePackages}/"
|
ln -s "$out/lib/${libPrefix}/"_sysconfigdata*.py "$out/${sitePackages}/"
|
||||||
|
|
||||||
# debug info can't be separated from a static library and would otherwise be
|
|
||||||
# left in place by a separateDebugInfo build. force its removal here to save
|
|
||||||
# space in output.
|
|
||||||
$STRIP -S $out/lib/${libPrefix}/config-*/libpython*.a || true
|
|
||||||
'' + optionalString stripConfig ''
|
'' + optionalString stripConfig ''
|
||||||
rm -R $out/bin/python*-config $out/lib/python*/config-*
|
rm -R $out/bin/python*-config $out/lib/python*/config-*
|
||||||
'' + optionalString stripIdlelib ''
|
'' + optionalString stripIdlelib ''
|
||||||
|
@ -127,15 +127,6 @@ callPackage ./common.nix { inherit stdenv; } {
|
|||||||
ln -sf $out/lib/libdl.so.2 $out/lib/libdl.so
|
ln -sf $out/lib/libdl.so.2 $out/lib/libdl.so
|
||||||
ln -sf $out/lib/libutil.so.1 $out/lib/libutil.so
|
ln -sf $out/lib/libutil.so.1 $out/lib/libutil.so
|
||||||
touch $out/lib/libpthread.a
|
touch $out/lib/libpthread.a
|
||||||
''
|
|
||||||
# For some reason these aren't stripped otherwise and retain reference
|
|
||||||
# to bootstrap-tools; on cross-arm this stripping would break objects.
|
|
||||||
+ lib.optionalString (stdenv.hostPlatform == stdenv.buildPlatform) ''
|
|
||||||
|
|
||||||
for i in "$out"/lib/*.a; do
|
|
||||||
[ "$i" = "$out/lib/libm.a" ] || $STRIP -S "$i"
|
|
||||||
done
|
|
||||||
'' + ''
|
|
||||||
|
|
||||||
# Put libraries for static linking in a separate output. Note
|
# Put libraries for static linking in a separate output. Note
|
||||||
# that libc_nonshared.a and libpthread_nonshared.a are required
|
# that libc_nonshared.a and libpthread_nonshared.a are required
|
||||||
|
@ -102,15 +102,11 @@ stdenv.mkDerivation rec {
|
|||||||
# Apparently glibc provides scsi itself?
|
# Apparently glibc provides scsi itself?
|
||||||
(cd $dev/include && ln -s $(ls -d ${linuxHeaders}/include/* | grep -v "scsi$") .)
|
(cd $dev/include && ln -s $(ls -d ${linuxHeaders}/include/* | grep -v "scsi$") .)
|
||||||
|
|
||||||
# Strip debug out of the static library
|
|
||||||
$STRIP -S $out/lib/libc.a
|
|
||||||
mkdir -p $out/bin
|
mkdir -p $out/bin
|
||||||
|
|
||||||
|
|
||||||
${if (stdenv.targetPlatform.libc == "musl" && stdenv.targetPlatform.isx86_32) then
|
${lib.optionalString (stdenv.targetPlatform.libc == "musl" && stdenv.targetPlatform.isx86_32)
|
||||||
"install -D libssp_nonshared.a $out/lib/libssp_nonshared.a
|
"install -D libssp_nonshared.a $out/lib/libssp_nonshared.a"
|
||||||
$STRIP -S $out/lib/libssp_nonshared.a"
|
|
||||||
else ""
|
|
||||||
}
|
}
|
||||||
|
|
||||||
# Create 'ldd' symlink, builtin
|
# Create 'ldd' symlink, builtin
|
||||||
|
Loading…
Reference in New Issue
Block a user