未验证 提交 8354ff9f 编写于 作者: O openharmony_ci 提交者: Gitee

!557 支持syscap默认值配置和产品可配置

Merge pull request !557 from 刘家辉/master
......@@ -44,6 +44,28 @@ def get_features(features):
pairs['features'] = feats
return pairs
def get_syscap(syscap):
feats = {}
for feat in syscap:
if not feat:
continue
if '=' not in feat:
raise Exception("Error: invalid syscap [{}]".format(feat))
match = feat.index("=")
key = feat[:match].strip()
val = feat[match+1:].strip().strip('"')
if val == 'true':
feats[key] = True
elif val == 'false':
feats[key] = False
elif re.match(r'[0-9]+', val):
feats[key] = int(val)
else:
feats[key] = val.replace('\"', '"')
pairs = dict()
pairs['syscap'] = feats
return pairs
def get_exclusion_modules(exclusions):
pairs = dict()
......@@ -60,18 +82,22 @@ def from_ss_to_parts(subsystems):
for com in components:
com_name = com.get('component')
features = com.get('features')
syscap = com.get('syscap')
exclusions = com.get('exclusions')
if features:
pairs = get_features(features)
parts['{}:{}'.format(ss_name, com_name)] = pairs
else:
parts['{}:{}'.format(ss_name, com_name)] = dict()
if syscap:
pairs = get_syscap(syscap)
parts.get('{}:{}'.format(ss_name, com_name)).update(pairs)
if exclusions:
pairs = get_exclusion_modules(exclusions)
parts.get('{}:{}'.format(ss_name, com_name)).update(pairs)
# Copy other key-values
for key, val in com.items():
if key in [ 'component', 'features', 'exclusions' ]:
if key in [ 'component', 'features', 'syscap', 'exclusions' ]:
continue
parts['{}:{}'.format(ss_name, com_name)][key] = val
return parts
......
......@@ -128,6 +128,20 @@ def _output_parts_features(all_parts, output_file):
dump_json_file(output_file, parts_feature_info)
return all_features
def _output_parts_syscap(all_parts, output_file):
all_syscap = {}
part_syscap_map = {}
for _part_name, vals in all_parts.items():
_syscap = vals.get('syscap')
if _syscap:
all_syscap.update(_syscap)
part_syscap_map[_part_name.split(':')[1]] = _syscap
parts_syscap_info = {
"syscap": all_syscap,
"part_to_syscap": part_syscap_map
}
dump_json_file(output_file, parts_syscap_info)
def _output_exclusion_modules_json(all_parts, output_file):
exclusions = {}
......@@ -494,6 +508,7 @@ class Outputs:
self.parts_config_json = os.path.join(output_dir, 'parts_config.json')
self.build_gnargs_prop = os.path.join(output_dir, 'build_gnargs.prop')
self.features_json = os.path.join(output_dir, 'features.json')
self.syscap_json = os.path.join(output_dir, 'syscap.json')
self.exclusion_modules_json = os.path.join(output_dir,
'exclusion_modules.json')
self.subsystem_config_json = os.path.join(output_dir,
......@@ -571,6 +586,9 @@ class Preloader():
all_features = _output_parts_features(all_parts,
self._outputs.features_json)
# save syscap to syscap_json
_output_parts_syscap(all_parts, self._outputs.syscap_json)
# Save gn args to build_gnargs_prop
_output_gnargs_prop(all_features, self._outputs.build_gnargs_prop)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册