[OE-core] Complete rebuilds due to random hashes

Enrico Scholz enrico.scholz at sigma-chemnitz.de
Fri Dec 7 10:26:32 UTC 2012


Hello,

I have encountered the problem the whole distribution gets rebuilt when
I change a single, completely unrelated variable (e.g. BB_DISKMON_DIRS).

Dumping data in _build_data() (siggen.py) revealed that sometimes a
gitpkgv_do_configure() (or _do_compile/install...) function is in the
deps, sometimes not.  The recipes where this happens (e.g. m4) do not
inherit gitpkgv and it is not included globally either.

Further debugging[1] shows

| ERROR: calledvar=autotools_do_configure, vars=[['gitpkgv_do_configure', 'autotools_do_configure'], ['do_configure', 'gitpkgv_do_configure']], allvars=['do_configure', 'autotools_do_configure', 'gitpkgv_do_configure'], classes=[None, 'gitpkgv', 'autotools']

for such a recipe (note the 'gitpkgv_do_configure')


For me, it seems that this depends on the (random) order in which recipes
are read.  E.g. when a recipe using 'gitpkgv' is read first, the global
'classes' array will contain 'gitpkgv' and ExportFuncsNode() is constructed
with it.

But when m4 is read before the first recipe using 'gitpkgv', it won't be
contained in 'classes' and the corresponding ExportFuncsNode() will not
create this variable.


Does somebody know how to fix this?


Enrico

Footnotes: 
[1]  
--- a/lib/bb/parse/ast.py
+++ b/lib/bb/parse/ast.py
@@ -207,6 +207,8 @@ class ExportFuncsNode(AstNode):
 
                 for flag in [ "func", "python" ]:
                     if data.getVarFlag(calledvar, flag):
+                        if var == 'gitpkgv_do_configure':
+                            bb.error("calledvar=%s, vars=%s, allvars=%s, classes=%s" % (calledvar,vars,allvars,self.classes))
                         data.setVarFlag(var, flag, data.getVarFlag(calledvar, flag))
                 for flag in [ "dirs" ]:
                     if data.getVarFlag(var, flag):




More information about the Openembedded-core mailing list