Signed-off-by: Sam James <s...@gentoo.org>
---
 metadata/install-qa-check.d/60libtool-la | 45 ++++++++++++++++++++++++
 1 file changed, 45 insertions(+)
 create mode 100644 metadata/install-qa-check.d/60libtool-la

diff --git a/metadata/install-qa-check.d/60libtool-la 
b/metadata/install-qa-check.d/60libtool-la
new file mode 100644
index 000000000000..fd21ec8406d3
--- /dev/null
+++ b/metadata/install-qa-check.d/60libtool-la
@@ -0,0 +1,45 @@
+# Check if we're installing .la files unnecessarily
+# https://projects.gentoo.org/qa/policy-guide/installed-files.html#pg0303
+
+libtool_la_check() {
+       if [[ ${CATEGORY}/${PN} == dev-libs/libltdl ]] ; then
+               # bug #293921
+               return
+       fi
+
+       # Bail out if there aren't any .la files being installed
+       local files=$(find "${ED}"/usr/lib* -name '*.la' -print 2>/dev/null)
+       [[ -n "${files[@]}" ]] || return
+
+       if grep -q "dev-libs/libltdl" <<<${RDEPEND}; then
+               # Nothing to do here
+               return
+       fi
+
+       # Iterate over all the .la files we are installing to verify there's
+       # a corresponding .a file - they're pointless without a corresponding
+       # static library.
+       local file
+       local dir
+       local base
+       local bad_files=()
+       for file in "${files[@]}" ; do
+               dir=$(dirname ${file})
+               base=${dir%/}
+               base=${base%.la}
+
+               if [[ ! -f ${dir}/${base}.a ]] ; then
+                       bad_files+=( ${file} )
+               fi
+       done
+
+       if [[ -n "${bad_files[@]}" ]] ; then
+               eqawarn "QA Notice: Installing libtool files (.la) without 
corresponding libraries!"
+               eqatag -v libtool-la.unnecessary "${bad_files[@]#${D}}"
+       fi
+}
+
+libtool_la_check
+: # guarantee successful exit
+
+# vim:ft=sh
-- 
2.35.1


Reply via email to