summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorZac Medico <zmedico@gentoo.org>2011-09-12 22:48:36 -0700
committerZac Medico <zmedico@gentoo.org>2011-09-12 22:48:36 -0700
commit9cb089047e10b300100e7bbdc4274ecf8866b0bb (patch)
treec54da424216761c0b2d9382504738d448073993a
parentc646a13990bc1267ab5f557d72f3c02c08be82ad (diff)
downloadportage-9cb089047e10b300100e7bbdc4274ecf8866b0bb.tar.gz
portage-9cb089047e10b300100e7bbdc4274ecf8866b0bb.tar.bz2
portage-9cb089047e10b300100e7bbdc4274ecf8866b0bb.zip
metadata/layout.conf: "sign-manifests = false"
This allows repos to disable manifest signatures, which is useful if they want to prevent merge conflicts like those that thin-manifests is designed to prevent.
-rwxr-xr-xbin/repoman10
-rw-r--r--pym/portage/repository/config.py6
2 files changed, 11 insertions, 5 deletions
diff --git a/bin/repoman b/bin/repoman
index 38b327328..e0cdf6ed4 100755
--- a/bin/repoman
+++ b/bin/repoman
@@ -592,11 +592,13 @@ repo_info = portdb._repo_info[portdir_overlay]
portdb.porttrees = list(repo_info.eclass_db.porttrees)
portdir = portdb.porttrees[0]
-# Thin manifests imply reliance on the VCS for file integrity,
-# which implies that manifest signatures are not needed.
-sign_manifests = "sign" in repoman_settings.features and not \
+# In order to disable manifest signatures, repos may set
+# "sign-manifests = false" in metadata/layout.conf. This
+# can be used to prevent merge conflicts like those that
+# thin-manifests is designed to prevent.
+sign_manifests = "sign" in repoman_settings.features and \
repoman_settings.repositories.get_repo_for_location(
- portdir_overlay).thin_manifest
+ portdir_overlay).sign_manifest
# Generate an appropriate PORTDIR_OVERLAY value for passing into the
# profile-specific config constructor calls.
diff --git a/pym/portage/repository/config.py b/pym/portage/repository/config.py
index 17839d7b8..5cfe82f4a 100644
--- a/pym/portage/repository/config.py
+++ b/pym/portage/repository/config.py
@@ -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', 'thin_manifest']
+ 'missing_repo_name', 'name', 'priority', 'sync', 'format', 'sign_manifest', 'thin_manifest']
def __init__(self, name, repo_opts):
"""Build a RepoConfig with options in repo_opts
@@ -111,6 +111,7 @@ class RepoConfig(object):
missing = False
self.name = name
self.missing_repo_name = missing
+ self.sign_manifest = True
self.thin_manifest = False
def load_manifest(self, *args, **kwds):
@@ -331,6 +332,9 @@ class RepoConfigLoader(object):
aliases.extend(repo.aliases)
repo.aliases = tuple(sorted(set(aliases)))
+ if layout_data.get('sign-manifests', '').lower() == 'false':
+ repo.sign_manifest = False
+
if layout_data.get('thin-manifests', '').lower() == 'true':
repo.thin_manifest = True