diff options
author | Sam Thursfield <sam.thursfield@codethink.co.uk> | 2015-07-28 15:23:09 +0000 |
---|---|---|
committer | Sam Thursfield <sam.thursfield@codethink.co.uk> | 2015-10-14 14:34:29 +0000 |
commit | b8b8de2b123ff96e6469196934359485bcd06b04 (patch) | |
tree | 2bb774dcaf3db88d6dafb8ab34322b5df4550ce0 /morphlib/artifactsplitrule.py | |
parent | 3c59628c80ffe47992bf7347268ca587fc6d368d (diff) | |
download | morph-b8b8de2b123ff96e6469196934359485bcd06b04.tar.gz |
Add support for Baserock definitions version 7
This adds a new 'Defaults' class to represent definitions defaults
The Python 'jsonschema' module is used to validate the contents of the
Defaults file. This module is already included in Baserock 'build' and
'devel' reference systems by way of the 'openstack-common' stratum.
This commit embeds a copy of the JSON-Schema schema for the DEFAULTS
file. I think the canonical location of this schema should be in the
reference definitions.git, for now. In future, the schemas should maybe
have their own repos. Either way, Morph should embed a copy for the time
being so that we are sure the schema matches how Morph expects to parse
the file.
Morph's automated tests are all updated to use definitions version 7.
I removed most of the tests for built-in build systems, because the
built-ins themselves are no longer part of Morph. Only the mechanism for
defining them needs to be tested now.
Change-Id: I65f8f1c967683ef605852bfae5c68518e53f9981
Diffstat (limited to 'morphlib/artifactsplitrule.py')
-rw-r--r-- | morphlib/artifactsplitrule.py | 18 |
1 files changed, 13 insertions, 5 deletions
diff --git a/morphlib/artifactsplitrule.py b/morphlib/artifactsplitrule.py index b5ebdf83..ba5abe02 100644 --- a/morphlib/artifactsplitrule.py +++ b/morphlib/artifactsplitrule.py @@ -189,10 +189,6 @@ class SplitRules(collections.Iterable): for artifact, rule in self._rules) -# TODO: Work out a good way to feed new defaults in. This is good for -# the usual Linux userspace, but we may find issues and need a -# migration path to a more useful set, or develop a system with -# a different layout, like Android. DEFAULT_CHUNK_RULES = [ ('-bins', [ r"(usr/)?s?bin/.*" ]), ('-libs', [ @@ -229,6 +225,14 @@ DEFAULT_STRATUM_RULES = [ ] +# A 'no-op' set of split rules. An empty list would cause everything to be +# ignored, which is unlikely to ever be what a user wants, and breaks some +# internal bits of Morph. +EMPTY_RULES = [ + ('', [r'.*']) +] + + def unify_chunk_matches(morphology, default_rules=DEFAULT_CHUNK_RULES): '''Create split rules including defaults and per-chunk rules. @@ -237,6 +241,8 @@ def unify_chunk_matches(morphology, default_rules=DEFAULT_CHUNK_RULES): by building the chunk to the chunk artifact they should be put in. ''' + if default_rules is None or len(default_rules) == 0: + default_rules = EMPTY_RULES split_rules = SplitRules() @@ -265,6 +271,8 @@ def unify_stratum_matches(morphology, default_rules=DEFAULT_STRATUM_RULES): strata to the stratum artifact they should be put in. ''' + if default_rules is None or len(default_rules) == 0: + default_rules = EMPTY_RULES assignment_split_rules = SplitRules() for spec in morphology['chunks']: @@ -296,7 +304,7 @@ def unify_stratum_matches(morphology, default_rules=DEFAULT_STRATUM_RULES): match_split_rules)) -def unify_system_matches(morphology): +def unify_system_matches(morphology, default_rules=[]): '''Create split rules including defaults and per-chunk rules. With rules specified in the morphology's 'products' field and the |