From 98744785306943953361eb3d43d800df2b3ac5fd Mon Sep 17 00:00:00 2001 From: "B. Watson" Date: Wed, 21 Jun 2023 16:01:22 -0400 Subject: sbopkglint: add static library test. --- sbopkglint.d/75-static_libs.t.sh | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 sbopkglint.d/75-static_libs.t.sh (limited to 'sbopkglint.d/75-static_libs.t.sh') 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 -- cgit v1.2.3