libmakepkg: move helper functions into tidy/strip
Signed-off-by: Allan McRae <allan@archlinux.org>
This commit is contained in:
parent
22a5128985
commit
f9cb4f3b9c
2 changed files with 50 additions and 48 deletions
|
@ -30,6 +30,56 @@ source "$LIBRARY/util/option.sh"
|
||||||
packaging_options+=('strip' 'debug')
|
packaging_options+=('strip' 'debug')
|
||||||
tidy_modify+=('tidy_strip')
|
tidy_modify+=('tidy_strip')
|
||||||
|
|
||||||
|
|
||||||
|
build_id() {
|
||||||
|
LANG=C readelf -n $1 | sed -n '/Build ID/ { s/.*: //p; q; }'
|
||||||
|
}
|
||||||
|
|
||||||
|
strip_file() {
|
||||||
|
local binary=$1; shift
|
||||||
|
|
||||||
|
if check_option "debug" "y"; then
|
||||||
|
local bid=$(build_id "$binary")
|
||||||
|
|
||||||
|
# has this file already been stripped
|
||||||
|
if [[ -n "$bid" ]]; then
|
||||||
|
if [[ -f "$dbgdir/.build-id/${bid:0:2}/${bid:2}.debug" ]]; then
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
elif [[ -f "$dbgdir/$binary.debug" ]]; then
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
|
||||||
|
mkdir -p "$dbgdir/${binary%/*}"
|
||||||
|
objcopy --only-keep-debug "$binary" "$dbgdir/$binary.debug"
|
||||||
|
objcopy --add-gnu-debuglink="$dbgdir/${binary#/}.debug" "$binary"
|
||||||
|
|
||||||
|
# create any needed hardlinks
|
||||||
|
while read -rd '' file ; do
|
||||||
|
if [[ "${binary}" -ef "${file}" && ! -f "$dbgdir/${file}.debug" ]]; then
|
||||||
|
mkdir -p "$dbgdir/${file%/*}"
|
||||||
|
ln "$dbgdir/${binary}.debug" "$dbgdir/${file}.debug"
|
||||||
|
fi
|
||||||
|
done < <(find . -type f -perm -u+w -print0 2>/dev/null)
|
||||||
|
|
||||||
|
if [[ -n "$bid" ]]; then
|
||||||
|
local target
|
||||||
|
mkdir -p "$dbgdir/.build-id/${bid:0:2}"
|
||||||
|
|
||||||
|
target="../../../../../${binary#./}"
|
||||||
|
target="${target/..\/..\/usr\/lib\/}"
|
||||||
|
target="${target/..\/usr\/}"
|
||||||
|
ln -s "$target" "$dbgdir/.build-id/${bid:0:2}/${bid:2}"
|
||||||
|
|
||||||
|
target="../../${binary#./}.debug"
|
||||||
|
ln -s "$target" "$dbgdir/.build-id/${bid:0:2}/${bid:2}.debug"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
strip $@ "$binary"
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
tidy_strip() {
|
tidy_strip() {
|
||||||
if check_option "strip" "y"; then
|
if check_option "strip" "y"; then
|
||||||
msg2 "$(gettext "Stripping unneeded symbols from binaries and libraries...")"
|
msg2 "$(gettext "Stripping unneeded symbols from binaries and libraries...")"
|
||||||
|
|
|
@ -1615,54 +1615,6 @@ run_package() {
|
||||||
run_function_safe "$pkgfunc"
|
run_function_safe "$pkgfunc"
|
||||||
}
|
}
|
||||||
|
|
||||||
build_id() {
|
|
||||||
LANG=C readelf -n $1 | sed -n '/Build ID/ { s/.*: //p; q; }'
|
|
||||||
}
|
|
||||||
|
|
||||||
strip_file() {
|
|
||||||
local binary=$1; shift
|
|
||||||
|
|
||||||
if check_option "debug" "y"; then
|
|
||||||
local bid=$(build_id "$binary")
|
|
||||||
|
|
||||||
# has this file already been stripped
|
|
||||||
if [[ -n "$bid" ]]; then
|
|
||||||
if [[ -f "$dbgdir/.build-id/${bid:0:2}/${bid:2}.debug" ]]; then
|
|
||||||
return
|
|
||||||
fi
|
|
||||||
elif [[ -f "$dbgdir/$binary.debug" ]]; then
|
|
||||||
return
|
|
||||||
fi
|
|
||||||
|
|
||||||
mkdir -p "$dbgdir/${binary%/*}"
|
|
||||||
objcopy --only-keep-debug "$binary" "$dbgdir/$binary.debug"
|
|
||||||
objcopy --add-gnu-debuglink="$dbgdir/${binary#/}.debug" "$binary"
|
|
||||||
|
|
||||||
# create any needed hardlinks
|
|
||||||
while read -rd '' file ; do
|
|
||||||
if [[ "${binary}" -ef "${file}" && ! -f "$dbgdir/${file}.debug" ]]; then
|
|
||||||
mkdir -p "$dbgdir/${file%/*}"
|
|
||||||
ln "$dbgdir/${binary}.debug" "$dbgdir/${file}.debug"
|
|
||||||
fi
|
|
||||||
done < <(find . -type f -perm -u+w -print0 2>/dev/null)
|
|
||||||
|
|
||||||
if [[ -n "$bid" ]]; then
|
|
||||||
local target
|
|
||||||
mkdir -p "$dbgdir/.build-id/${bid:0:2}"
|
|
||||||
|
|
||||||
target="../../../../../${binary#./}"
|
|
||||||
target="${target/..\/..\/usr\/lib\/}"
|
|
||||||
target="${target/..\/usr\/}"
|
|
||||||
ln -s "$target" "$dbgdir/.build-id/${bid:0:2}/${bid:2}"
|
|
||||||
|
|
||||||
target="../../${binary#./}.debug"
|
|
||||||
ln -s "$target" "$dbgdir/.build-id/${bid:0:2}/${bid:2}.debug"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
strip $@ "$binary"
|
|
||||||
}
|
|
||||||
|
|
||||||
find_libdepends() {
|
find_libdepends() {
|
||||||
local d sodepends;
|
local d sodepends;
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue