aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorÉrico Nogueira <erico.erc@gmail.com>2021-06-08 14:43:00 +0000
committerÉrico Nogueira Rolim <34201958+ericonr@users.noreply.github.com>2021-07-22 14:56:26 +0000
commit6303c2e6ce4e4cd8ba978dd06911ed82708a9087 (patch)
treed808f3e34db752d0c489bc36b8c957861769b06d
parente18333cb8f65b8ef7c438098e1d4b2165d5fffd2 (diff)
downloadvoid-packages-6303c2e6ce4e4cd8ba978dd06911ed82708a9087.tar
void-packages-6303c2e6ce4e4cd8ba978dd06911ed82708a9087.tar.gz
void-packages-6303c2e6ce4e4cd8ba978dd06911ed82708a9087.tar.bz2
void-packages-6303c2e6ce4e4cd8ba978dd06911ed82708a9087.tar.lz
void-packages-6303c2e6ce4e4cd8ba978dd06911ed82708a9087.tar.xz
void-packages-6303c2e6ce4e4cd8ba978dd06911ed82708a9087.tar.zst
void-packages-6303c2e6ce4e4cd8ba978dd06911ed82708a9087.zip
common/hooks: speed up generate-runtime-deps.
Instead of using file(1) to check for ELF files, just read bytes directly from the file and check if they are the ELF magic bytes. Should probably be factored out into a common function that can be used in other places, if necessary. Also use awk instead of "grep|awk" for some minor speedup.
-rw-r--r--common/hooks/pre-pkg/04-generate-runtime-deps.sh23
1 files changed, 11 insertions, 12 deletions
diff --git a/common/hooks/pre-pkg/04-generate-runtime-deps.sh b/common/hooks/pre-pkg/04-generate-runtime-deps.sh
index 8ffd3a71d8e..c8f8c04d488 100644
--- a/common/hooks/pre-pkg/04-generate-runtime-deps.sh
+++ b/common/hooks/pre-pkg/04-generate-runtime-deps.sh
@@ -47,7 +47,7 @@ store_pkgdestdir_rundeps() {
}
hook() {
- local depsftmp f lf j mapshlibs sorequires _curdep
+ local depsftmp f lf j mapshlibs sorequires _curdep elfmagic
# Disable trap on ERR, xbps-uhelper cmd might return error... but not something
# to be worried about because if there are broken shlibs this hook returns
@@ -72,18 +72,17 @@ hook() {
msg_normal "Skipping dependency scan for ${lf}\n"
continue
fi
- case "$(file -bi "$f")" in
- application/x-*executable*|application/x-sharedlib*)
- for nlib in $($OBJDUMP -p "$f"|grep NEEDED|awk '{print $2}'); do
- [ -z "$verify_deps" ] && verify_deps="$nlib" && continue
- found=0
- for j in ${verify_deps}; do
- [[ $j == $nlib ]] && found=1 && break
- done
- [[ $found -eq 0 ]] && verify_deps="$verify_deps $nlib"
+ read -n4 elfmagic < "$f"
+ if [ "$elfmagic" = $'\177ELF' ]; then
+ for nlib in $($OBJDUMP -p "$f"|awk '/NEEDED/{print $2}'); do
+ [ -z "$verify_deps" ] && verify_deps="$nlib" && continue
+ found=0
+ for j in ${verify_deps}; do
+ [[ $j == $nlib ]] && found=1 && break
done
- ;;
- esac
+ [[ $found -eq 0 ]] && verify_deps="$verify_deps $nlib"
+ done
+ fi
done
exec 0<&3 # restore stdin
rm -f $depsftmp