[pacman-dev] [PATCH] makepkg: only remove static libraries if they have a shared version

Allan McRae allan at archlinux.org
Thu Oct 31 09:25:36 EDT 2013


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 at 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"))
+		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



More information about the pacman-dev mailing list