summaryrefslogtreecommitdiffstats
path: root/bitbake/lib/bb/fetch2/__init__.py
diff options
context:
space:
mode:
Diffstat (limited to 'bitbake/lib/bb/fetch2/__init__.py')
-rw-r--r--bitbake/lib/bb/fetch2/__init__.py33
1 files changed, 20 insertions, 13 deletions
diff --git a/bitbake/lib/bb/fetch2/__init__.py b/bitbake/lib/bb/fetch2/__init__.py
index b194a79be9..add742bfad 100644
--- a/bitbake/lib/bb/fetch2/__init__.py
+++ b/bitbake/lib/bb/fetch2/__init__.py
@@ -23,13 +23,14 @@ import collections
23import subprocess 23import subprocess
24import pickle 24import pickle
25import errno 25import errno
26import bb.persist_data, bb.utils 26import bb.utils
27import bb.checksum 27import bb.checksum
28import bb.process 28import bb.process
29import bb.event 29import bb.event
30 30
31__version__ = "2" 31__version__ = "2"
32_checksum_cache = bb.checksum.FileChecksumCache() 32_checksum_cache = bb.checksum.FileChecksumCache()
33_revisions_cache = bb.checksum.RevisionsCache()
33 34
34logger = logging.getLogger("BitBake.Fetcher") 35logger = logging.getLogger("BitBake.Fetcher")
35 36
@@ -493,18 +494,23 @@ methods = []
493urldata_cache = {} 494urldata_cache = {}
494saved_headrevs = {} 495saved_headrevs = {}
495 496
496def fetcher_init(d): 497def fetcher_init(d, servercontext=True):
497 """ 498 """
498 Called to initialize the fetchers once the configuration data is known. 499 Called to initialize the fetchers once the configuration data is known.
499 Calls before this must not hit the cache. 500 Calls before this must not hit the cache.
500 """ 501 """
501 502
502 revs = bb.persist_data.persist('BB_URI_HEADREVS', d) 503 _checksum_cache.init_cache(d.getVar("BB_CACHEDIR"))
504 _revisions_cache.init_cache(d.getVar("BB_CACHEDIR"))
505
506 if not servercontext:
507 return
508
503 try: 509 try:
504 # fetcher_init is called multiple times, so make sure we only save the 510 # fetcher_init is called multiple times, so make sure we only save the
505 # revs the first time it is called. 511 # revs the first time it is called.
506 if not bb.fetch2.saved_headrevs: 512 if not bb.fetch2.saved_headrevs:
507 bb.fetch2.saved_headrevs = dict(revs) 513 bb.fetch2.saved_headrevs = _revisions_cache.get_revs()
508 except: 514 except:
509 pass 515 pass
510 516
@@ -514,11 +520,10 @@ def fetcher_init(d):
514 logger.debug("Keeping SRCREV cache due to cache policy of: %s", srcrev_policy) 520 logger.debug("Keeping SRCREV cache due to cache policy of: %s", srcrev_policy)
515 elif srcrev_policy == "clear": 521 elif srcrev_policy == "clear":
516 logger.debug("Clearing SRCREV cache due to cache policy of: %s", srcrev_policy) 522 logger.debug("Clearing SRCREV cache due to cache policy of: %s", srcrev_policy)
517 revs.clear() 523 _revisions_cache.clear_cache()
518 else: 524 else:
519 raise FetchError("Invalid SRCREV cache policy of: %s" % srcrev_policy) 525 raise FetchError("Invalid SRCREV cache policy of: %s" % srcrev_policy)
520 526
521 _checksum_cache.init_cache(d.getVar("BB_CACHEDIR"))
522 527
523 for m in methods: 528 for m in methods:
524 if hasattr(m, "init"): 529 if hasattr(m, "init"):
@@ -526,9 +531,11 @@ def fetcher_init(d):
526 531
527def fetcher_parse_save(): 532def fetcher_parse_save():
528 _checksum_cache.save_extras() 533 _checksum_cache.save_extras()
534 _revisions_cache.save_extras()
529 535
530def fetcher_parse_done(): 536def fetcher_parse_done():
531 _checksum_cache.save_merge() 537 _checksum_cache.save_merge()
538 _revisions_cache.save_merge()
532 539
533def fetcher_compare_revisions(d): 540def fetcher_compare_revisions(d):
534 """ 541 """
@@ -536,7 +543,7 @@ def fetcher_compare_revisions(d):
536 when bitbake was started and return true if they have changed. 543 when bitbake was started and return true if they have changed.
537 """ 544 """
538 545
539 headrevs = dict(bb.persist_data.persist('BB_URI_HEADREVS', d)) 546 headrevs = _revisions_cache.get_revs()
540 return headrevs != bb.fetch2.saved_headrevs 547 return headrevs != bb.fetch2.saved_headrevs
541 548
542def mirror_from_string(data): 549def mirror_from_string(data):
@@ -1662,13 +1669,13 @@ class FetchMethod(object):
1662 if not hasattr(self, "_latest_revision"): 1669 if not hasattr(self, "_latest_revision"):
1663 raise ParameterError("The fetcher for this URL does not support _latest_revision", ud.url) 1670 raise ParameterError("The fetcher for this URL does not support _latest_revision", ud.url)
1664 1671
1665 revs = bb.persist_data.persist('BB_URI_HEADREVS', d)
1666 key = self.generate_revision_key(ud, d, name) 1672 key = self.generate_revision_key(ud, d, name)
1667 try: 1673
1668 return revs[key] 1674 rev = _revisions_cache.get_rev(key)
1669 except KeyError: 1675 if rev is None:
1670 revs[key] = rev = self._latest_revision(ud, d, name) 1676 rev = self._latest_revision(ud, d, name)
1671 return rev 1677 _revisions_cache.set_rev(key, rev)
1678 return rev
1672 1679
1673 def sortable_revision(self, ud, d, name): 1680 def sortable_revision(self, ud, d, name):
1674 latest_rev = self._build_revision(ud, d, name) 1681 latest_rev = self._build_revision(ud, d, name)