summaryrefslogtreecommitdiffstats
path: root/bin/repoman
diff options
context:
space:
mode:
Diffstat (limited to 'bin/repoman')
-rwxr-xr-xbin/repoman25
1 files changed, 25 insertions, 0 deletions
diff --git a/bin/repoman b/bin/repoman
index 711fce98b..7943f54ef 100755
--- a/bin/repoman
+++ b/bin/repoman
@@ -587,6 +587,31 @@ manifest_hashes = repo_config.manifest_hashes
if manifest_hashes is None:
manifest_hashes = portage.const.MANIFEST2_HASH_DEFAULTS
+if options.mode in ("commit", "fix", "manifest"):
+ if portage.const.MANIFEST2_REQUIRED_HASH not in manifest_hashes:
+ msg = ("The 'manifest-hashes' setting in the '%s' repository's "
+ "metadata/layout.conf does not contain the '%s' hash which "
+ "is required by this portage version. You will have to "
+ "upgrade portage if you want to generate valid manifests for "
+ "this repository.") % \
+ (repo_config.name, portage.const.MANIFEST2_REQUIRED_HASH)
+ for line in textwrap.wrap(msg, 70):
+ logging.error(line)
+ sys.exit(1)
+
+ unsupported_hashes = manifest_hashes.difference(
+ portage.const.MANIFEST2_HASH_FUNCTIONS)
+ if unsupported_hashes:
+ msg = ("The 'manifest-hashes' setting in the '%s' repository's "
+ "metadata/layout.conf contains one or more hash types '%s' "
+ "which are not supported by this portage version. You will "
+ "have to upgrade portage if you want to generate valid "
+ "manifests for this repository.") % \
+ (repo_config.name, " ".join(sorted(unsupported_hashes)))
+ for line in textwrap.wrap(msg, 70):
+ logging.error(line)
+ sys.exit(1)
+
if "commit" == options.mode and \
repo_config.name == "gentoo" and \
"RMD160" in manifest_hashes and \