From: Richard Purdie Date: Sat, 14 Jan 2017 14:17:13 +0000 (+0000) Subject: bitbake: fetch2: Avoid recursive errors X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=3f8d56d1132cc63fe13cf81dc97ba96a523e1d44;p=thirdparty%2Fopenembedded%2Fopenembedded-core-contrib.git bitbake: fetch2: Avoid recursive errors If PATH contains WORKDIR which contains PV which contains SRCPV we can end up in circular recursion within the fetcher. This code change allows for the recursion to be broken by giving PV a temporary dummy value in a data store copy. (Bitbake rev: ce1e70b8018340b54dba3a81d7d379182cb77514) Signed-off-by: Richard Purdie --- diff --git a/bitbake/lib/bb/fetch2/__init__.py b/bitbake/lib/bb/fetch2/__init__.py index d6d7850dfb1..525f47e4173 100644 --- a/bitbake/lib/bb/fetch2/__init__.py +++ b/bitbake/lib/bb/fetch2/__init__.py @@ -819,6 +819,15 @@ def runfetchcmd(cmd, d, quiet=False, cleanup=None, log=None, workdir=None): if not cleanup: cleanup = [] + # If PATH contains WORKDIR which contains PV which contains SRCPV we + # can end up in circular recursion here so give the option of breaking it + # in a data store copy. + try: + d.getVar("PV") + except bb.data_smart.ExpansionError: + d = bb.data.createCopy(d) + d.setVar("PV", "fetcheravoidrecurse") + origenv = d.getVar("BB_ORIGENV", False) for var in exportvars: val = d.getVar(var) or (origenv and origenv.getVar(var))