aboutsummaryrefslogtreecommitdiff
path: root/sbopkglint.d/75-static_libs.t.sh
diff options
context:
space:
mode:
authorB. Watson <urchlay@slackware.uk>2023-06-21 16:01:22 -0400
committerB. Watson <urchlay@slackware.uk>2023-06-21 16:01:22 -0400
commit98744785306943953361eb3d43d800df2b3ac5fd (patch)
tree5600d6187a69b0a862cd3e05711ab107704a68b3 /sbopkglint.d/75-static_libs.t.sh
parent919b0a7dfa853bb2bc448956992bc427c17f9a3d (diff)
downloadsbo-maintainer-tools-98744785306943953361eb3d43d800df2b3ac5fd.tar.gz
sbopkglint: add static library test.
Diffstat (limited to 'sbopkglint.d/75-static_libs.t.sh')
-rw-r--r--sbopkglint.d/75-static_libs.t.sh34
1 files changed, 34 insertions, 0 deletions
diff --git a/sbopkglint.d/75-static_libs.t.sh b/sbopkglint.d/75-static_libs.t.sh
new file mode 100644
index 0000000..b0cdcdd
--- /dev/null
+++ b/sbopkglint.d/75-static_libs.t.sh
@@ -0,0 +1,34 @@
+#!/bin/sh
+
+# sbopkglint test, must be sourced by sbopkglint (not run standalone).
+
+# PKG, PRGNAM, VERSION, ARCH are set by sbopkglint. also the current
+# directory is the root of the installed package tree.
+
+########################################################################
+# checks permissions and ownership of static libraries lib dirs.
+# checks that static libraries actually *are* static libraries.
+# if the package includes both a static and shared library, a note is
+# triggered, suggesting removal of the static lib. this is not an error.
+
+for libdir in lib lib64 usr/lib usr/lib64; do
+ if [ -d $libdir ]; then
+ find_warnfiles "bad static library ownership (should be root:root):" \
+ $libdir -mindepth 1 -maxdepth 1 -name '*.a' \! \( -user root -a -group root \)
+ find_warnfiles "bad static library permissions (should be 0644 or 0444):" \
+ $libdir -mindepth 1 -maxdepth 1 -name '*.a' \! \( -perm 444 -o -perm 644 \)
+ find $libdir -mindepth 1 -maxdepth 1 -name '*.a' | while read static; do
+ ftype="$( file -b --mime-type "$static" )"
+ case "$ftype" in
+ "application/x-archive") ;; # OK
+ *) warn "$static is not a valid static library. MIME type is '$ftype'." ;;
+ esac
+ shared=$libdir/"$( basename "$static" .a)".so
+ if [ -e "$shared" ]; then
+ shname="$( basename "$shared" )"
+ stname="$( basename "$static" )"
+ note "$libdir has both $shname and $stname; unless it's needed by a dependee, consider removing $stname"
+ fi
+ done
+ fi
+done