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"))
+               local l
+               for l in "${sl[@]}"; do
+                       if [[ -f "${l%.a}.so" ]]; then
+                               rm -f "$l"
+                       fi
+               done
        fi
 
        if check_option "emptydirs" "n"; then
-- 
1.8.4.2


Reply via email to