summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gemato/profile.py20
-rw-r--r--gemato/recursiveloader.py2
-rw-r--r--tests/test_profile.py11
3 files changed, 33 insertions, 0 deletions
diff --git a/gemato/profile.py b/gemato/profile.py
index 3681bf1..cd5d641 100644
--- a/gemato/profile.py
+++ b/gemato/profile.py
@@ -13,6 +13,14 @@ class DefaultProfile(object):
correct behavior for a given use case.
"""
+ def set_loader_options(self, loader):
+ """
+ Alter loader @loader with profile-specific options. This
+ is called after applying the user-specified options, so it
+ should check them for None if overwriting is not desired.
+ """
+ pass
+
def get_entry_type_for_path(self, path):
"""
Get Manifest entry type appropriate for the specified path.
@@ -68,6 +76,18 @@ class EbuildRepositoryProfile(DefaultProfile):
return True
return False
+ def set_loader_options(self, loader):
+ if loader.hashes is None:
+ # layout.conf as of 2017-11-02
+ loader.hashes = ['SHA256', 'SHA512', 'WHIRLPOOL']
+ if loader.sort is None:
+ loader.sort = True
+ if loader.compress_watermark is None:
+ # GLEP 61 suggested value
+ loader.compress_watermark = 32768
+ if loader.compress_format is None:
+ loader.compress_format = 'gz'
+
class BackwardsCompatEbuildRepositoryProfile(EbuildRepositoryProfile):
"""
diff --git a/gemato/recursiveloader.py b/gemato/recursiveloader.py
index 0dde66f..d353f86 100644
--- a/gemato/recursiveloader.py
+++ b/gemato/recursiveloader.py
@@ -98,6 +98,8 @@ class ManifestRecursiveLoader(object):
self.compress_watermark = compress_watermark
self.compress_format = compress_format
+ self.profile.set_loader_options(self)
+
if self.verify_openpgp is None:
self.verify_openpgp = True
if self.sort is None:
diff --git a/tests/test_profile.py b/tests/test_profile.py
index b8cb02d..75da1d5 100644
--- a/tests/test_profile.py
+++ b/tests/test_profile.py
@@ -120,6 +120,17 @@ class EbuildRepositoryTests(TempDirTestCase):
"type mismatch for {}".format(f))
return m
+ def test_set_loader_options(self):
+ m = gemato.recursiveloader.ManifestRecursiveLoader(
+ os.path.join(self.dir, 'Manifest'),
+ profile=self.PROFILE(),
+ allow_create=True)
+ self.assertIsNotNone(m.hashes)
+ self.assertTrue(m.sort)
+ self.assertIsNotNone(m.compress_watermark)
+ self.assertIsNotNone(m.compress_format)
+
+
class BackwardsCompatEbuildRepositoryTests(EbuildRepositoryTests):
PROFILE = gemato.profile.BackwardsCompatEbuildRepositoryProfile