On 31/10/13 23:38, Dave Reisner wrote: > On Thu, Oct 31, 2013 at 11:25:36PM +1000, Allan McRae wrote: >> It is fairly common that packages contain static libraries with no >> shared counterpart. These should not be removed with !staticlibs. >> >> Signed-off-by: Allan McRae <[email protected]> >> --- >> doc/PKGBUILD.5.txt | 2 +- >> doc/makepkg.conf.5.txt | 2 +- >> scripts/makepkg.sh.in | 8 +++++++- >> 3 files changed, 9 insertions(+), 3 deletions(-) >> >> diff --git a/doc/PKGBUILD.5.txt b/doc/PKGBUILD.5.txt >> index 4ac7dc1..6c5ef84 100644 >> --- a/doc/PKGBUILD.5.txt >> +++ b/doc/PKGBUILD.5.txt >> @@ -250,7 +250,7 @@ A normal sync or upgrade will not use its value. >> >> *staticlibs*;; >> Leave static library (.a) files in packages. Specify >> `!staticlibs` to >> - remove them. >> + remove them (if they have a shared counterpart). >> >> *emptydirs*;; >> Leave empty directories in packages. >> diff --git a/doc/makepkg.conf.5.txt b/doc/makepkg.conf.5.txt >> index be5b809..ef64d17 100644 >> --- a/doc/makepkg.conf.5.txt >> +++ b/doc/makepkg.conf.5.txt >> @@ -162,7 +162,7 @@ Options >> >> *staticlibs*;; >> Leave static library (.a) files in packages. Specify >> `!staticlibs` to >> - remove them. >> + remove them (if they have a shared counterpart). >> >> *emptydirs*;; >> Leave empty directories in packages. >> diff --git a/scripts/makepkg.sh.in b/scripts/makepkg.sh.in >> index b2cc8e2..67bd7f1 100644 >> --- a/scripts/makepkg.sh.in >> +++ b/scripts/makepkg.sh.in >> @@ -1584,7 +1584,13 @@ tidy_install() { >> >> if check_option "staticlibs" "n"; then >> msg2 "$(gettext "Removing static library files...")" >> - find . ! -type d -name "*.a" -exec rm -f -- '{}' + >> + local sl=($(find . ! -type d -name "*.a")) > > Prone to rampant word splitting and glob expansion. > >> + local l >> + for l in "${sl[@]}"; do > > -for ... > +while read -rd '' l; do > >> + if [[ -f "${l%.a}.so" ]]; then >> + rm -f "$l" > > Maybe we shouldn't use -f here, since we would probably care about > deletion failures?
Agreed. I have pushed the updated version to my working branch. >> + fi >> + done > > -done > +done < <(find . ! -type d -name "*.a" -print0) > >> fi >> >> if check_option "emptydirs" "n"; then >> -- >> 1.8.4.2 >> >> > > >
