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 <allan@archlinux.org> --- 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