From 2ad7fefadbe2b4d2dee0c6c1bc9db57dacc4c7a8 Mon Sep 17 00:00:00 2001 From: Christian Heusel <christian@heusel.eu> Date: Wed, 2 Aug 2023 12:33:59 +0200 Subject: [PATCH] dbscripts: fix createlinks for filenames that contain spaces So far the for loop recognized filenames with spaces as different words: $ for f in $(find pkg -type f); do echo "$f"; done pkg/usr/bin/Surge XT Effects pkg/usr/bin/Surge XT While the correct output here would have been: pkg/usr/bin/Surge XT Effects pkg/usr/bin/Surge XT We fix this by just passing everything directly to readelf, which also removes the loop overhead. This results in a significant speedup for packages with a lot of libraries and binaries. fixes: https://gitlab.archlinux.org/archlinux/infrastructure/-/issues/524 Co-Authored-By: Evangelos Foutras <evangelos@foutras.com> --- roles/dbscripts/files/createlinks | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/roles/dbscripts/files/createlinks b/roles/dbscripts/files/createlinks index cc99f0f0a..6388149ca 100755 --- a/roles/dbscripts/files/createlinks +++ b/roles/dbscripts/files/createlinks @@ -44,9 +44,7 @@ for repo in ${repos[@]}; do 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 + 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 fi done -- GitLab