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
manifests
This commit is contained in:
parent
43b86ce282
commit
0f84782fcc
4 changed files with 19 additions and 5 deletions
|
@ -79,6 +79,12 @@ def setup_parser(subparser):
|
||||||
read_cray_manifest.add_argument(
|
read_cray_manifest.add_argument(
|
||||||
"--directory", default=None, help="specify a directory storing a group of manifest files"
|
"--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(
|
read_cray_manifest.add_argument(
|
||||||
"--dry-run",
|
"--dry-run",
|
||||||
action="store_true",
|
action="store_true",
|
||||||
|
@ -177,11 +183,16 @@ def external_read_cray_manifest(args):
|
||||||
manifest_directory=args.directory,
|
manifest_directory=args.directory,
|
||||||
dry_run=args.dry_run,
|
dry_run=args.dry_run,
|
||||||
fail_on_error=args.fail_on_error,
|
fail_on_error=args.fail_on_error,
|
||||||
|
ignore_default_dir=args.ignore_default_dir,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
def _collect_and_consume_cray_manifest_files(
|
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 = []
|
manifest_files = []
|
||||||
if manifest_file:
|
if manifest_file:
|
||||||
|
@ -191,7 +202,7 @@ def _collect_and_consume_cray_manifest_files(
|
||||||
if manifest_directory:
|
if manifest_directory:
|
||||||
manifest_dirs.append(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(
|
tty.debug(
|
||||||
"Cray manifest path {0} exists: collecting all files to read.".format(
|
"Cray manifest path {0} exists: collecting all files to read.".format(
|
||||||
cray_manifest.default_path
|
cray_manifest.default_path
|
||||||
|
|
|
@ -48,7 +48,8 @@ def translated_compiler_name(manifest_compiler_name):
|
||||||
def compiler_from_entry(entry):
|
def compiler_from_entry(entry):
|
||||||
compiler_name = translated_compiler_name(entry["name"])
|
compiler_name = translated_compiler_name(entry["name"])
|
||||||
paths = entry["executables"]
|
paths = entry["executables"]
|
||||||
version = entry["version"]
|
# to instantiate a compiler class we may need a concrete version:
|
||||||
|
version = "={}".format(entry["version"])
|
||||||
arch = entry["arch"]
|
arch = entry["arch"]
|
||||||
operating_system = arch["os"]
|
operating_system = arch["os"]
|
||||||
target = arch["target"]
|
target = arch["target"]
|
||||||
|
|
|
@ -37,7 +37,9 @@
|
||||||
|
|
||||||
|
|
||||||
def slingshot_network():
|
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):
|
def _target_name_from_craype_target_name(name):
|
||||||
|
|
|
@ -1060,7 +1060,7 @@ _spack_external_list() {
|
||||||
}
|
}
|
||||||
|
|
||||||
_spack_external_read_cray_manifest() {
|
_spack_external_read_cray_manifest() {
|
||||||
SPACK_COMPREPLY="-h --help --file --directory --dry-run --fail-on-error"
|
SPACK_COMPREPLY="-h --help --file --directory --ignore-default-dir --dry-run --fail-on-error"
|
||||||
}
|
}
|
||||||
|
|
||||||
_spack_fetch() {
|
_spack_fetch() {
|
||||||
|
|
Loading…
Reference in a new issue