From 9cb089047e10b300100e7bbdc4274ecf8866b0bb Mon Sep 17 00:00:00 2001 From: Zac Medico Date: Mon, 12 Sep 2011 22:48:36 -0700 Subject: 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. --- bin/repoman | 10 ++++++---- pym/portage/repository/config.py | 6 +++++- 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 -- cgit v1.2.3-1-g7c22