From 0a3fd7d5f00913e08f452ca9dae0926f7124bb4d Mon Sep 17 00:00:00 2001 From: Dave Reisner Date: Sat, 5 May 2012 17:54:25 -0400 Subject: createlinks: avoid for loop in parsing shared libs readelf can take multiple targets, so parse everything at once since we only care about the complete set of dependencies rather than deps per ELF object. --- createlinks | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/createlinks b/createlinks index 52ade34..cf8fa3d 100755 --- a/createlinks +++ b/createlinks @@ -7,6 +7,8 @@ arches=('i686' 'x86_64') lock='/tmp/mirrorsync.lck' tmp="$(mktemp -d)" +extractinc=(--include={opt,{,usr/}{lib{,32},{s,}bin}}'/*') + [ -f "${lock}" ] && exit 1 touch "${lock}" trap "rm -rf '${lock}' '${tmp}'" EXIT INT TERM @@ -48,10 +50,9 @@ for repo in ${repos[@]}; do else echo "$repo/$arch: $pkgname" mkdir -p ${tmppkgdir}/pkg - bsdtar -xof $pkg -C ${tmppkgdir}/pkg --include={opt,{,usr/}{lib{,32},{s,}bin}}'/*' 2>/dev/null - for f in $(find ${tmppkgdir}/pkg -type f); do - readelf -d "$f" 2> /dev/null | sed -nr 's/.*Shared library: \[(.*)\].*/\1/p' - done | sort -u > ${tmppkgdir}/links + bsdtar -xof "$pkg" -C "$tmppkgdir/pkg" "${extractinc[@]}" 2>/dev/null + find "$tmppkgdir/pkg" -type f -exec readelf -d {} + 2>/dev/null | + sed -nr 's/.*Shared library: \[(.*)\]$/\1/p' | sort -u >"$tmppkgdir/links" rm -rf ${tmppkgdir}/pkg cached=false fi -- cgit v1.2.3-24-g4f1b