CDash report for concretization errors

Capture any concretization errors and record them in a CTest Update.xml file.
This commit is contained in:
Zack Galbreath 2018-04-19 15:20:48 -04:00 committed by Todd Gamblin
parent d7581697a5
commit ae0ba373b8
3 changed files with 35 additions and 1 deletions

View File

@ -36,6 +36,7 @@
import spack.cmd.common.arguments as arguments
import spack.fetch_strategy
import spack.report
from spack.error import SpackError
description = "build and install packages"
@ -203,7 +204,11 @@ def install(parser, args, **kwargs):
for spec in specs:
spack.package_testing.test(spec.name)
specs = spack.cmd.parse_specs(args.package, concretize=True)
try:
specs = spack.cmd.parse_specs(args.package, concretize=True)
except SpackError as e:
reporter.concretization_report(e.message)
raise
# 2. Concrete specs from yaml files
for file in args.specfiles:

View File

@ -360,6 +360,24 @@ def cdash_build_report(self, report_data):
t = env.get_template(phase_template)
f.write(t.render(report_data))
def concretization_report(self, msg):
if not self.format_name == 'cdash':
return
report_data = {}
report_data['starttime'] = self.starttime
report_data['endtime'] = self.starttime
self.cdash_initialize_report(report_data)
report_data['msg'] = msg
env = spack.tengine.make_environment()
update_template = os.path.join(templates[self.format_name],
'Update.xml')
t = env.get_template(update_template)
output_filename = os.path.join(self.filename, 'Update.xml')
with open(output_filename, 'w') as f:
f.write(t.render(report_data))
def __exit__(self, exc_type, exc_val, exc_tb):
if self.format_name:
# Close the collector and restore the

View File

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<Update>
<Site>{{ hostname }}</Site>
<BuildName>{{ install_command }}</BuildName>
<BuildStamp>{{ buildstamp }}</BuildStamp>
<StartTime>{{ starttime }}</StartTime>
<EndTime>{{ endtime }}</EndTime>
{% if msg %}
<UpdateReturnStatus>{{ msg }}</UpdateReturnStatus>
{% endif %}
</Update>