diff options
author | Brian Harring <ferringb@chromium.org> | 2011-09-23 16:43:28 -0700 |
---|---|---|
committer | Zac Medico <zmedico@gentoo.org> | 2011-09-27 23:31:54 -0700 |
commit | f3101b3adce6731790f80f83fafece54b7bd8a63 (patch) | |
tree | 4bc1d857c88c74386628eed2e84be48c2d3586b3 /pym/_emerge/EbuildFetcher.py | |
parent | 28ce242ff1bf55605227b1877aaba0b76388714c (diff) | |
download | portage-f3101b3adce6731790f80f83fafece54b7bd8a63.tar.gz portage-f3101b3adce6731790f80f83fafece54b7bd8a63.tar.bz2 portage-f3101b3adce6731790f80f83fafece54b7bd8a63.zip |
manifest: controllable per repo
This adds three states to layout.conf key use-manifest; false, true, and strict.
false means "don't use manifests at all"
true means "use and generate manifests, but allow them to be missing"
strict means "manifests must be used everywhere in this repo"
BUG=chromium-os:11308
TEST=repoman manifest usage.
Diffstat (limited to 'pym/_emerge/EbuildFetcher.py')
-rw-r--r-- | pym/_emerge/EbuildFetcher.py | 21 |
1 files changed, 12 insertions, 9 deletions
diff --git a/pym/_emerge/EbuildFetcher.py b/pym/_emerge/EbuildFetcher.py index 4389f8408..61c7848ad 100644 --- a/pym/_emerge/EbuildFetcher.py +++ b/pym/_emerge/EbuildFetcher.py @@ -21,7 +21,7 @@ class EbuildFetcher(SpawnProcess): __slots__ = ("config_pool", "ebuild_path", "fetchonly", "fetchall", "pkg", "prefetch") + \ - ("_digests", "_settings", "_uri_map") + ("_digests", "_manifest", "_settings", "_uri_map") def already_fetched(self, settings): """ @@ -40,7 +40,7 @@ class EbuildFetcher(SpawnProcess): digests = self._get_digests() distdir = settings["DISTDIR"] - allow_missing = "allow-missing-manifests" in settings.features + allow_missing = self._get_manifest().allow_missing for filename in uri_map: # Use stat rather than lstat since fetch() creates @@ -179,7 +179,7 @@ class EbuildFetcher(SpawnProcess): not in ('yes', 'true') rval = 1 - allow_missing = 'allow-missing-manifests' in self._settings.features + allow_missing = self._get_manifest().allow_missing try: if fetch(self._uri_map, self._settings, fetchonly=self.fetchonly, digests=copy.deepcopy(self._get_digests()), @@ -203,13 +203,16 @@ class EbuildFetcher(SpawnProcess): raise AssertionError("ebuild not found for '%s'" % self.pkg.cpv) return self.ebuild_path + def _get_manifest(self): + if self._manifest is None: + pkgdir = os.path.dirname(self._get_ebuild_path()) + self._manifest = self.pkg.root_config.settings.repositories.get_repo_for_location( + os.path.dirname(os.path.dirname(pkgdir))).load_manifest(pkgdir, None) + return self._manifest + def _get_digests(self): - if self._digests is not None: - return self._digests - pkgdir = os.path.dirname(self._get_ebuild_path()) - mf = self.pkg.root_config.settings.repositories.get_repo_for_location( - os.path.dirname(os.path.dirname(pkgdir))) - self._digests = mf.load_manifest(pkgdir, None).getTypeDigests("DIST") + if self._digests is None: + self._digests = self._get_manifest().getTypeDigests("DIST") return self._digests def _get_uri_map(self): |