[prev in list] [next in list] [prev in thread] [next in thread] 

List:       openembedded-core
Subject:    [OE-core] [PATCH 1/1] insane.bbclass: Add QA package check for mixed bins and libs
From:       Andrej Valek <andrej.valek () siemens ! com>
Date:       2019-04-30 9:59:17
Message-ID: 20190430095917.3680-2-andrej.valek () siemens ! com
[Download RAW message or body]

Warn about mixed binaries and libraries in the same package. This could
makes unexpected behavior in multi-lib cases.

Signed-off-by: Andrej Valek <andrej.valek@siemens.com>
---
 meta/classes/insane.bbclass | 27 +++++++++++++++++++++++++++
 1 file changed, 27 insertions(+)

diff --git a/meta/classes/insane.bbclass b/meta/classes/insane.bbclass
index a9be88e816..09b82529d9 100644
--- a/meta/classes/insane.bbclass
+++ b/meta/classes/insane.bbclass
@@ -17,6 +17,8 @@
 #  -Check that scripts in base_[bindir|sbindir|libdir] do not reference
 #   files under exec_prefix
 #  -Check if the package name is upper case
+#  -Check that binaries and libraries base_[bindir|sbindir|libdir] are
+#   not mixed in the same package
 
 QA_SANE = "True"
 
@@ -28,6 +30,7 @@ WARN_QA ?= "ldflags useless-rpaths rpaths staticdev libdir \
xorg-driver-abi \  pn-overrides infodir build-deps \
             unknown-configure-option symlink-to-sysroot multilib \
             invalid-packageconfig host-user-contaminated uppercase-pn patch-fuzz \
+            mixed-libs-bins-in-pkg \
             "
 ERROR_QA ?= "dev-so debug-deps dev-deps debug-files arch pkgconfig la \
             perms dep-cmp pkgvarcheck perm-config perm-line perm-link \
@@ -893,6 +896,30 @@ def package_qa_check_host_user(path, name, d, elf, messages):
     return True
 
 
+QAPKGTEST[mixed-libs-bins-in-pkg] = "package_qa_check_bins_libs"
+def package_qa_check_bins_libs(pkg, d, messages):
+    """Check for mixed binaries and libraries in the same package."""
+    pkgdest = d.getVar('PKGDEST')
+    pkg_dir = pkgdest + os.sep + pkg + os.sep
+
+    # Skip unneeded packages
+    if pkg.endswith("-dev") or pkg.endswith("-staticdev") or pkg.endswith("-dbg") or \
pkg.endswith("-ptest") or pkg.startswith("nativesdk-"): +        return True
+
+    binaries = [d.getVar('base_bindir'), d.getVar('base_sbindir'), \
d.getVar('bindir'), d.getVar('sbindir')] +    libraries = [d.getVar('base_libdir'), \
d.getVar('libdir') ] + d.getVar('MULTILIB_VARIANTS').split() + \
[d.getVar('exec_prefix') + x for x in d.getVar('MULTILIB_VARIANTS').split()] +
+    # Check pkg_dir content
+    for bin in binaries:
+        if os.path.exists(pkg_dir + bin) and not os.path.islink(pkg_dir + bin):
+          for lib in libraries:
+              if os.path.exists(pkg_dir + lib) and not os.path.islink(pkg_dir + \
lib): +                  package_qa_add_message(messages, "mixed-libs-bins-in-pkg", \
"Package %s has mixed binaries and libraries" % pkg) +                  return False
+
+    return True
+
+
 # The PACKAGE FUNC to scan each package
 python do_package_qa () {
     import subprocess
-- 
2.11.0

-- 
_______________________________________________
Openembedded-core mailing list
Openembedded-core@lists.openembedded.org
http://lists.openembedded.org/mailman/listinfo/openembedded-core


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic