diff mbox series

[1/1] archiver: move exclusion logic in a dedicated function

Message ID 20230516155545.298359-2-antoningodard@pm.me
State New
Headers show
Series archiver: move exclusion logic in a dedicated function | expand

Commit Message

Antonin Godard May 16, 2023, 3:56 p.m. UTC
Extending archiver is not possible without duplicating the anonymous
function's logic. Move this logic in a separate function
"include_package" which returns a bool.

Signed-off-by: Antonin Godard <antoningodard@pm.me>
---
 meta/classes/archiver.bbclass | 30 ++++++++++++++++++------------
 1 file changed, 18 insertions(+), 12 deletions(-)

--
2.25.1
diff mbox series

Patch

diff --git a/meta/classes/archiver.bbclass b/meta/classes/archiver.bbclass
index 4049694d85..0eee1abefa 100644
--- a/meta/classes/archiver.bbclass
+++ b/meta/classes/archiver.bbclass
@@ -76,33 +76,39 @@  do_ar_original[dirs] = "${ARCHIVER_OUTDIR} ${ARCHIVER_WORKDIR}"

 # This is a convenience for the shell script to use it

-
-python () {
-    pn = d.getVar('PN')
-    assume_provided = (d.getVar("ASSUME_PROVIDED") or "").split()
-    if pn in assume_provided:
-        for p in d.getVar("PROVIDES").split():
-            if p != pn:
-                pn = p
-                break
+def include_package(d, pn):

     included, reason = copyleft_should_include(d)
     if not included:
         bb.debug(1, 'archiver: %s is excluded: %s' % (pn, reason))
-        return
+        return False
+
     else:
         bb.debug(1, 'archiver: %s is included: %s' % (pn, reason))

-
     # glibc-locale: do_fetch, do_unpack and do_patch tasks have been deleted,
     # so avoid archiving source here.
     if pn.startswith('glibc-locale'):
-        return
+        return False

     # We just archive gcc-source for all the gcc related recipes
     if d.getVar('BPN') in ['gcc', 'libgcc'] \
             and not pn.startswith('gcc-source'):
         bb.debug(1, 'archiver: %s is excluded, covered by gcc-source' % pn)
+        return False
+
+    return True
+
+python () {
+    pn = d.getVar('PN')
+    assume_provided = (d.getVar("ASSUME_PROVIDED") or "").split()
+    if pn in assume_provided:
+        for p in d.getVar("PROVIDES").split():
+            if p != pn:
+                pn = p
+                break
+
+    if not include_package(d, pn):
         return

     # TARGET_SYS in ARCHIVER_ARCH will break the stamp for gcc-source in multiconfig