add layout.conf awareness of thin-manifests
authorBrian Harring <ferringb@gmail.com>
Thu, 1 Sep 2011 21:50:25 +0000 (14:50 -0700)
committerZac Medico <zmedico@gentoo.org>
Mon, 12 Sep 2011 21:23:10 +0000 (14:23 -0700)
For any repo that wants thin (just src_uri digests), they just need to add

thin-manifests = true

to their layout.conf.  Again, this should only be used in repositories
were the backing vcs provides checksums for the ebuild data.

pym/portage/repository/config.py

index 9e308a8dcd1da966d1d796d8a8d100cdaf48ad44..17839d7b8f98e89450c55be83f50e1988867a668 100644 (file)
@@ -42,7 +42,7 @@ class RepoConfig(object):
        """Stores config of one repository"""
 
        __slots__ = ['aliases', 'eclass_overrides', 'eclass_locations', 'location', 'user_location', 'masters', 'main_repo',
-               'missing_repo_name', 'name', 'priority', 'sync', 'format', 'load_manifest']
+               'missing_repo_name', 'name', 'priority', 'sync', 'format', 'thin_manifest']
 
        def __init__(self, name, repo_opts):
                """Build a RepoConfig with options in repo_opts
@@ -111,7 +111,11 @@ class RepoConfig(object):
                        missing = False
                self.name = name
                self.missing_repo_name = missing
-               self.load_manifest = manifest.Manifest
+               self.thin_manifest = False
+
+       def load_manifest(self, *args, **kwds):
+               kwds['thin'] = self.thin_manifest
+               return manifest.Manifest(*args, **kwds)
 
        def update(self, new_repo):
                """Update repository with options in another RepoConfig"""
@@ -327,6 +331,9 @@ class RepoConfigLoader(object):
                                        aliases.extend(repo.aliases)
                                repo.aliases = tuple(sorted(set(aliases)))
 
+                       if layout_data.get('thin-manifests', '').lower() == 'true':
+                               repo.thin_manifest = True
+
                #Take aliases into account.
                new_prepos = {}
                for repo_name, repo in prepos.items():