diff options
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 |
commit | 6303c2e6ce4e4cd8ba978dd06911ed82708a9087 (patch) | |
tree | d808f3e34db752d0c489bc36b8c957861769b06d | |
parent | e18333cb8f65b8ef7c438098e1d4b2165d5fffd2 (diff) | |
download | void-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.sh | 23 |
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 |