diff options
Diffstat (limited to 'bitbake/lib/bb/fetch2/__init__.py')
-rw-r--r-- | bitbake/lib/bb/fetch2/__init__.py | 33 |
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 | |||
23 | import subprocess | 23 | import subprocess |
24 | import pickle | 24 | import pickle |
25 | import errno | 25 | import errno |
26 | import bb.persist_data, bb.utils | 26 | import bb.utils |
27 | import bb.checksum | 27 | import bb.checksum |
28 | import bb.process | 28 | import bb.process |
29 | import bb.event | 29 | import 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 | ||
34 | logger = logging.getLogger("BitBake.Fetcher") | 35 | logger = logging.getLogger("BitBake.Fetcher") |
35 | 36 | ||
@@ -493,18 +494,23 @@ methods = [] | |||
493 | urldata_cache = {} | 494 | urldata_cache = {} |
494 | saved_headrevs = {} | 495 | saved_headrevs = {} |
495 | 496 | ||
496 | def fetcher_init(d): | 497 | def 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 | ||
527 | def fetcher_parse_save(): | 532 | def fetcher_parse_save(): |
528 | _checksum_cache.save_extras() | 533 | _checksum_cache.save_extras() |
534 | _revisions_cache.save_extras() | ||
529 | 535 | ||
530 | def fetcher_parse_done(): | 536 | def fetcher_parse_done(): |
531 | _checksum_cache.save_merge() | 537 | _checksum_cache.save_merge() |
538 | _revisions_cache.save_merge() | ||
532 | 539 | ||
533 | def fetcher_compare_revisions(d): | 540 | def 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 | ||
542 | def mirror_from_string(data): | 549 | def 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) |