[OE-core] [RFC][PATCH] packagegroup.bbclass: Drop build-time dependencies

Richard Purdie richard.purdie at linuxfoundation.org
Fri Nov 1 18:14:03 UTC 2013


On Fri, 2013-11-01 at 13:37 +0000, Paul Eggleton wrote:
> Hi Martin,
> 
> On Friday 01 November 2013 13:12:12 Martin Jansa wrote:
> > * RFC because:
> >   packagegroup.bbclass inherits allarch and by default sets
> >   PACKAGE_ARCH = "all", but then it has runtime-dependency on
> >   TUNE_PKGARCH packages and different signatures, so instead
> >   of setting INHIBIT_DEFAULT_DEPS in addition to inherit allarch
> >   I would like to drop default allarch completely.
> 
> The fix looks OK, but I don't think we should be going further and removing the 
> inherit. To my mind, the question of dependencies comes down to whether or not 
> the packagegroup output changes depending on TUNE_PKGARCH, which in the 
> general case it should not do.
> 
> If we need to do some optimisation to avoid the packagegroup recipe rebuilding 
> when it shouldn't due to packages it "contains" changing, we can certainly 
> look at that.

A better idea might be something like:

diff --git a/meta/lib/oe/sstatesig.py b/meta/lib/oe/sstatesig.py
index 852fb7e..23e28f0 100644
--- a/meta/lib/oe/sstatesig.py
+++ b/meta/lib/oe/sstatesig.py
@@ -11,6 +11,8 @@ def sstate_rundepfilter(siggen, fn, recipename, task, dep, depname, dataCache):
     def isKernel(fn):
         inherits = " ".join(dataCache.inherits[fn])
         return inherits.find("module-base.bbclass") != -1 or inherits.find("linux-kernel-base.bbclass") != -1
+    def isPackageGroup(x):
+        return "packagegroup-" in x
 
     # Always include our own inter-task dependencies
     if recipename == depname:
@@ -27,6 +29,10 @@ def sstate_rundepfilter(siggen, fn, recipename, task, dep, depname, dataCache):
 
     # Only target packages beyond here
 
+    # packagegroups are assumed to have well behaved names which don't change between architecures/tunes
+    if isPackageGroup(recipename):
+        return False  
+
     # Drop native/cross/nativesdk dependencies from target recipes
     if isNative(depname) or isCross(depname) or isNativeSDK(depname):
         return False

although this is untested and needs more careful thought...

Cheers,

Richard




More information about the Openembedded-core mailing list