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
					Zack Galbreath
				
			
				
					committed by
					
						 Todd Gamblin
						Todd Gamblin
					
				
			
			
				
	
			
			
			 Todd Gamblin
						Todd Gamblin
					
				
			
						parent
						
							d7581697a5
						
					
				
				
					commit
					ae0ba373b8
				
			| @@ -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: | ||||
|   | ||||
| @@ -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 | ||||
|   | ||||
							
								
								
									
										11
									
								
								templates/reports/cdash/Update.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								templates/reports/cdash/Update.xml
									
									
									
									
									
										Normal 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> | ||||
		Reference in New Issue
	
	Block a user