summary: Add 'Subprojects' section to main project

pull/4649/head
Xavier Claessens 5 years ago
parent 38953d8ee3
commit a4bb0928e3
  1. 24
      mesonbuild/interpreter.py

@ -2529,15 +2529,18 @@ external dependencies (including libraries) must go to "dependencies".''')
dirname = args[0]
return self.do_subproject(dirname, 'meson', kwargs)
def disabled_subproject(self, dirname):
self.subprojects[dirname] = SubprojectHolder(None, self.subproject_dir, dirname)
return self.subprojects[dirname]
def disabled_subproject(self, dirname, feature=None):
sub = SubprojectHolder(None, self.subproject_dir, dirname)
if feature:
sub.disabled_feature = feature
self.subprojects[dirname] = sub
return sub
def do_subproject(self, dirname: str, method: str, kwargs):
disabled, required, feature = extract_required_kwarg(kwargs, self.subproject)
if disabled:
mlog.log('Subproject', mlog.bold(dirname), ':', 'skipped: feature', mlog.bold(feature), 'disabled')
return self.disabled_subproject(dirname)
return self.disabled_subproject(dirname, feature)
default_options = mesonlib.stringlistify(kwargs.get('default_options', []))
default_options = coredata.create_options_dict(default_options)
@ -2901,11 +2904,24 @@ external dependencies (including libraries) must go to "dependencies".''')
values = {key: value}
else:
raise InterpreterException('Summary accepts at most 3 arguments.')
self.summary_impl(section, values, kwargs)
def summary_impl(self, section, values, kwargs):
if self.subproject not in self.summary:
self.summary[self.subproject] = Summary(self.active_projectname, self.project_version)
self.summary[self.subproject].add_section(section, values, kwargs)
def _print_summary(self):
# Add automatic 'Supbrojects' section in main project.
all_subprojects = collections.OrderedDict()
for name, subp in sorted(self.subprojects.items()):
value = subp.found()
if not value and hasattr(subp, 'disabled_feature'):
value = 'Feature {!r} disabled'.format(subp.disabled_feature)
all_subprojects[name] = value
if all_subprojects:
self.summary_impl('Subprojects', all_subprojects, {'bool_yn': True})
# Print all summaries, main project last.
mlog.log('') # newline
main_summary = self.summary.pop('', None)
for _, summary in sorted(self.summary.items()):

Loading…
Cancel
Save