Merge pull request #218783 from timbertson/stripExcludeExtensions
This commit is contained in:
commit
31c9deb4f7
2 changed files with 31 additions and 1 deletions
|
@ -937,6 +937,28 @@ Like `stripDebugList`, but only applies to packages’ target platform. By defau
|
|||
|
||||
Flags passed to the `strip` command applied to the files in the directories listed in `stripDebugList`. Defaults to `-S` (i.e. `--strip-debug`).
|
||||
|
||||
##### `stripExclude` {#var-stdenv-stripExclude}
|
||||
|
||||
A list of filenames or path patterns to avoid stripping. A file is excluded if its name _or_ path (from the derivation root) matches.
|
||||
|
||||
This example prevents all `*.rlib` files from being stripped:
|
||||
|
||||
```nix
|
||||
stdenv.mkDerivation {
|
||||
# ...
|
||||
stripExclude = [ "*.rlib" ]
|
||||
}
|
||||
```
|
||||
|
||||
This example prevents files within certain paths from being stripped:
|
||||
|
||||
```nix
|
||||
stdenv.mkDerivation {
|
||||
# ...
|
||||
stripExclude = [ "lib/modules/*/build/* ]
|
||||
}
|
||||
```
|
||||
|
||||
##### `dontPatchELF` {#var-stdenv-dontPatchELF}
|
||||
|
||||
If set, the `patchelf` command is not used to remove unnecessary `RPATH` entries. Only applies to Linux.
|
||||
|
|
|
@ -49,11 +49,19 @@ stripDirs() {
|
|||
local ranlibCmd="$2"
|
||||
local paths="$3"
|
||||
local stripFlags="$4"
|
||||
local excludeFlags=()
|
||||
local pathsNew=
|
||||
|
||||
[ -z "$cmd" ] && echo "stripDirs: Strip command is empty" 1>&2 && exit 1
|
||||
[ -z "$ranlibCmd" ] && echo "stripDirs: Ranlib command is empty" 1>&2 && exit 1
|
||||
|
||||
local pattern
|
||||
if [ -n "${stripExclude:-}" ]; then
|
||||
for pattern in "${stripExclude[@]}"; do
|
||||
excludeFlags+=(-a '!' '(' -name "$pattern" -o -wholename "$prefix/$pattern" ')' )
|
||||
done
|
||||
fi
|
||||
|
||||
local p
|
||||
for p in ${paths}; do
|
||||
if [ -e "$prefix/$p" ]; then
|
||||
|
@ -67,7 +75,7 @@ stripDirs() {
|
|||
local striperr
|
||||
striperr="$(mktemp --tmpdir="$TMPDIR" 'striperr.XXXXXX')"
|
||||
# Do not strip lib/debug. This is a directory used by setup-hooks/separate-debug-info.sh.
|
||||
find $paths -type f -a '!' -path "$prefix/lib/debug/*" -print0 |
|
||||
find $paths -type f "${excludeFlags[@]}" -a '!' -path "$prefix/lib/debug/*" -print0 |
|
||||
# Make sure we process files under symlinks only once. Otherwise
|
||||
# 'strip` can corrupt files when writes to them in parallel:
|
||||
# https://github.com/NixOS/nixpkgs/issues/246147#issuecomment-1657072039
|
||||
|
|
Loading…
Reference in a new issue