Bugfix: cray manifest parsing regression (#37909)
fa7719a changed syntax for specifying exact versions, which are
required for some compiler specs (including those read as part
of parsing a Cray manifest). This fixes that and also makes a
couple other improvements to manifest parsing.
* Instantiate compiler specs with exact versions (fixes #37893)
* fix slingshot network detection (CPE 22.10+ has libcxi.so
  in /usr/lib64)
* "spack external find": add arg to ignore default dir for cray
  manifestsThis commit is contained in:
		| @@ -79,6 +79,12 @@ def setup_parser(subparser): | ||||
|     read_cray_manifest.add_argument( | ||||
|         "--directory", default=None, help="specify a directory storing a group of manifest files" | ||||
|     ) | ||||
|     read_cray_manifest.add_argument( | ||||
|         "--ignore-default-dir", | ||||
|         action="store_true", | ||||
|         default=False, | ||||
|         help="ignore the default directory of manifest files", | ||||
|     ) | ||||
|     read_cray_manifest.add_argument( | ||||
|         "--dry-run", | ||||
|         action="store_true", | ||||
| @@ -177,11 +183,16 @@ def external_read_cray_manifest(args): | ||||
|         manifest_directory=args.directory, | ||||
|         dry_run=args.dry_run, | ||||
|         fail_on_error=args.fail_on_error, | ||||
|         ignore_default_dir=args.ignore_default_dir, | ||||
|     ) | ||||
| 
 | ||||
| 
 | ||||
| def _collect_and_consume_cray_manifest_files( | ||||
|     manifest_file=None, manifest_directory=None, dry_run=False, fail_on_error=False | ||||
|     manifest_file=None, | ||||
|     manifest_directory=None, | ||||
|     dry_run=False, | ||||
|     fail_on_error=False, | ||||
|     ignore_default_dir=False, | ||||
| ): | ||||
|     manifest_files = [] | ||||
|     if manifest_file: | ||||
| @@ -191,7 +202,7 @@ def _collect_and_consume_cray_manifest_files( | ||||
|     if manifest_directory: | ||||
|         manifest_dirs.append(manifest_directory) | ||||
| 
 | ||||
|     if os.path.isdir(cray_manifest.default_path): | ||||
|     if not ignore_default_dir and os.path.isdir(cray_manifest.default_path): | ||||
|         tty.debug( | ||||
|             "Cray manifest path {0} exists: collecting all files to read.".format( | ||||
|                 cray_manifest.default_path | ||||
|   | ||||
| @@ -48,7 +48,8 @@ def translated_compiler_name(manifest_compiler_name): | ||||
| def compiler_from_entry(entry): | ||||
|     compiler_name = translated_compiler_name(entry["name"]) | ||||
|     paths = entry["executables"] | ||||
|     version = entry["version"] | ||||
|     # to instantiate a compiler class we may need a concrete version: | ||||
|     version = "={}".format(entry["version"]) | ||||
|     arch = entry["arch"] | ||||
|     operating_system = arch["os"] | ||||
|     target = arch["target"] | ||||
|   | ||||
| @@ -37,7 +37,9 @@ | ||||
| 
 | ||||
| 
 | ||||
| def slingshot_network(): | ||||
|     return os.path.exists("/opt/cray/pe") and os.path.exists("/lib64/libcxi.so") | ||||
|     return os.path.exists("/opt/cray/pe") and ( | ||||
|         os.path.exists("/lib64/libcxi.so") or os.path.exists("/usr/lib64/libcxi.so") | ||||
|     ) | ||||
| 
 | ||||
| 
 | ||||
| def _target_name_from_craype_target_name(name): | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Tiziano Müller
					Tiziano Müller