diff options
author | Peter Kjellerstedt <pkj@axis.com> | 2020-02-15 04:29:55 +0100 |
---|---|---|
committer | Armin Kuster <akuster808@gmail.com> | 2020-04-19 09:07:19 -0700 |
commit | 282920d985d63db6f2284718dc3db2196c6fbf6f (patch) | |
tree | 9f049ff5745a0ecfd9372b99a4f24c313cdec730 /lib/bb/fetch2/__init__.py | |
parent | 226be487f58a2ab11418af9a6c909c5ba097cb1e (diff) | |
download | bitbake-contrib-stable/1.44-nut.tar.gz |
fetch2: Allow ${AUTOREV} to be used when BB_SRCREV_POLICY is "cache"stable/1.44-nutstable/1.44-next
Mark any keys used to cache the srcrevs for a recipe as "dontcache" if
BB_DONT_CACHE is set for the recipe. Remove any such keys upon the
next bitbake run even if BB_SRCREV_POLICY is set to "cache". This will
make sure the srcrev is updated as expected if ${AUTOREV} is used.
Signed-off-by: Peter Kjellerstedt <peter.kjellerstedt@axis.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit ba093a38539960e645e994a66ed7872a604c00a9)
Signed-off-by: Armin Kuster <akuster808@gmail.com>
Diffstat (limited to 'lib/bb/fetch2/__init__.py')
-rw-r--r-- | lib/bb/fetch2/__init__.py | 18 |
1 files changed, 14 insertions, 4 deletions
diff --git a/lib/bb/fetch2/__init__.py b/lib/bb/fetch2/__init__.py index 140054920..397367f37 100644 --- a/lib/bb/fetch2/__init__.py +++ b/lib/bb/fetch2/__init__.py @@ -498,6 +498,11 @@ def fetcher_init(d): srcrev_policy = d.getVar('BB_SRCREV_POLICY') or "clear" if srcrev_policy == "cache": logger.debug(1, "Keeping SRCREV cache due to cache policy of: %s", srcrev_policy) + # We still need to remove keys that are marked with "dontcache". + for key in list(revs.keys()): + if key.startswith("dontcache-"): + logger.debug(1, "Removing SRCREV key: %s" % key) + revs.pop(key) elif srcrev_policy == "clear": logger.debug(1, "Clearing SRCREV cache due to cache policy of: %s", srcrev_policy) revs.clear() @@ -717,9 +722,8 @@ def subprocess_setup(): signal.signal(signal.SIGPIPE, signal.SIG_DFL) def get_autorev(d): - # only not cache src rev in autorev case - if d.getVar('BB_SRCREV_POLICY') != "cache": - d.setVar('BB_DONT_CACHE', '1') + # Do not cache the srcrev in the autorev case + d.setVar('BB_DONT_CACHE', '1') return "AUTOINC" def get_srcrev(d, method_name='sortable_revision'): @@ -1562,7 +1566,13 @@ class FetchMethod(object): return True, str(latest_rev) def generate_revision_key(self, ud, d, name): - return self._revision_key(ud, d, name) + key = self._revision_key(ud, d, name) + if d.getVar('BB_DONT_CACHE'): + # Mark the key so it can be removed on the next bitbake run even if + # BB_SRCREV_POLICY is "cache". + return "dontcache-%s" % key + else: + return key def latest_versionstring(self, ud, d): """ |