1
0
mirror of https://git.yoctoproject.org/poky synced 2026-06-01 00:59:48 +00:00

bitbake: fetch2: Make fetcher_compare_revisions() work

This seems to have been broken for a very long time. Now it also works
regardless of BB_SRCREV_POLICY.

(Bitbake rev: ffd663a8e07e2e39e8ca2d2493f4f98037c5f9e4)

Signed-off-by: Peter Kjellerstedt <peter.kjellerstedt@axis.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Peter Kjellerstedt
2020-02-15 04:29:54 +01:00
committed by Richard Purdie
parent f8d1ac6653
commit 96074fa9bd
+14 -19
View File
@@ -485,17 +485,22 @@ def fetcher_init(d):
Called to initialize the fetchers once the configuration data is known. Called to initialize the fetchers once the configuration data is known.
Calls before this must not hit the cache. Calls before this must not hit the cache.
""" """
revs = bb.persist_data.persist('BB_URI_HEADREVS', d)
try:
# fetcher_init is called multiple times, so make sure we only save the
# revs the first time it is called.
if not bb.fetch2.saved_headrevs:
bb.fetch2.saved_headrevs = dict(revs)
except:
pass
# When to drop SCM head revisions controlled by user policy # When to drop SCM head revisions controlled by user policy
srcrev_policy = d.getVar('BB_SRCREV_POLICY') or "clear" srcrev_policy = d.getVar('BB_SRCREV_POLICY') or "clear"
if srcrev_policy == "cache": if srcrev_policy == "cache":
logger.debug(1, "Keeping SRCREV cache due to cache policy of: %s", srcrev_policy) logger.debug(1, "Keeping SRCREV cache due to cache policy of: %s", srcrev_policy)
elif srcrev_policy == "clear": elif srcrev_policy == "clear":
logger.debug(1, "Clearing SRCREV cache due to cache policy of: %s", srcrev_policy) logger.debug(1, "Clearing SRCREV cache due to cache policy of: %s", srcrev_policy)
revs = bb.persist_data.persist('BB_URI_HEADREVS', d)
try:
bb.fetch2.saved_headrevs = revs.items()
except:
pass
revs.clear() revs.clear()
else: else:
raise FetchError("Invalid SRCREV cache policy of: %s" % srcrev_policy) raise FetchError("Invalid SRCREV cache policy of: %s" % srcrev_policy)
@@ -514,22 +519,12 @@ def fetcher_parse_done():
def fetcher_compare_revisions(d): def fetcher_compare_revisions(d):
""" """
Compare the revisions in the persistant cache with current values and Compare the revisions in the persistent cache with the saved values from
return true/false on whether they've changed. when bitbake was started and return true if they have changed.
""" """
data = bb.persist_data.persist('BB_URI_HEADREVS', d).items() headrevs = dict(bb.persist_data.persist('BB_URI_HEADREVS', d))
data2 = bb.fetch2.saved_headrevs return headrevs != bb.fetch2.saved_headrevs
changed = False
for key in data:
if key not in data2 or data2[key] != data[key]:
logger.debug(1, "%s changed", key)
changed = True
return True
else:
logger.debug(2, "%s did not change", key)
return False
def mirror_from_string(data): def mirror_from_string(data):
mirrors = (data or "").replace('\\n',' ').split() mirrors = (data or "").replace('\\n',' ').split()