summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorGreg Becker <becker33@llnl.gov>2023-05-19 02:31:27 -0700
committerGitHub <noreply@github.com>2023-05-19 11:31:27 +0200
commit16e92794209a10588d70b62420059459d4aed334 (patch)
treed45944bb3d560f684a054074433e17610a6d7acb /lib
parentac0903ef9f57b0bda1f483fa991bada882d97a1d (diff)
downloadspack-16e92794209a10588d70b62420059459d4aed334.tar.gz
spack-16e92794209a10588d70b62420059459d4aed334.tar.bz2
spack-16e92794209a10588d70b62420059459d4aed334.tar.xz
spack-16e92794209a10588d70b62420059459d4aed334.zip
compiler specs: do not print '@=' when clear from context (#37787)
Ensure that spack compiler add/find/list and lists of concrete specs print the compiler effectively as {compiler.name}{@compiler.version}. Co-authored-by: Harmen Stoppels <harmenstoppels@gmail.com>
Diffstat (limited to 'lib')
-rw-r--r--lib/spack/spack/cmd/__init__.py2
-rw-r--r--lib/spack/spack/cmd/compiler.py10
-rw-r--r--lib/spack/spack/spec.py14
-rw-r--r--lib/spack/spack/test/cmd/compiler.py8
4 files changed, 22 insertions, 12 deletions
diff --git a/lib/spack/spack/cmd/__init__.py b/lib/spack/spack/cmd/__init__.py
index df482edfd4..c8a8b3ee13 100644
--- a/lib/spack/spack/cmd/__init__.py
+++ b/lib/spack/spack/cmd/__init__.py
@@ -347,7 +347,7 @@ def iter_groups(specs, indent, all_headers):
spack.spec.architecture_color,
architecture if architecture else "no arch",
spack.spec.compiler_color,
- f"{compiler}" if compiler else "no compiler",
+ f"{compiler.display_str}" if compiler else "no compiler",
)
# Sometimes we want to display specs that are not yet concretized.
diff --git a/lib/spack/spack/cmd/compiler.py b/lib/spack/spack/cmd/compiler.py
index 854b8205a6..563142bc8f 100644
--- a/lib/spack/spack/cmd/compiler.py
+++ b/lib/spack/spack/cmd/compiler.py
@@ -98,7 +98,7 @@ def compiler_find(args):
config = spack.config.config
filename = config.get_config_filename(args.scope, "compilers")
tty.msg("Added %d new compiler%s to %s" % (n, s, filename))
- colify(reversed(sorted(c.spec for c in new_compilers)), indent=4)
+ colify(reversed(sorted(c.spec.display_str for c in new_compilers)), indent=4)
else:
tty.msg("Found no new compilers")
tty.msg("Compilers are defined in the following files:")
@@ -112,13 +112,13 @@ def compiler_remove(args):
tty.die("No compilers match spec %s" % cspec)
elif not args.all and len(compilers) > 1:
tty.error("Multiple compilers match spec %s. Choose one:" % cspec)
- colify(reversed(sorted([c.spec for c in compilers])), indent=4)
+ colify(reversed(sorted([c.spec.display_str for c in compilers])), indent=4)
tty.msg("Or, use `spack compiler remove -a` to remove all of them.")
sys.exit(1)
for compiler in compilers:
spack.compilers.remove_compiler_from_config(compiler.spec, scope=args.scope)
- tty.msg("Removed compiler %s" % compiler.spec)
+ tty.msg("Removed compiler %s" % compiler.spec.display_str)
def compiler_info(args):
@@ -130,7 +130,7 @@ def compiler_info(args):
tty.die("No compilers match spec %s" % cspec)
else:
for c in compilers:
- print(str(c.spec) + ":")
+ print(c.spec.display_str + ":")
print("\tpaths:")
for cpath in ["cc", "cxx", "f77", "fc"]:
print("\t\t%s = %s" % (cpath, getattr(c, cpath, None)))
@@ -188,7 +188,7 @@ def compiler_list(args):
os_str += "-%s" % target
cname = "%s{%s} %s" % (spack.spec.compiler_color, name, os_str)
tty.hline(colorize(cname), char="-")
- colify(reversed(sorted(c.spec for c in compilers)))
+ colify(reversed(sorted(c.spec.display_str for c in compilers)))
def compiler(parser, args):
diff --git a/lib/spack/spack/spec.py b/lib/spack/spack/spec.py
index 522485f57e..1605152450 100644
--- a/lib/spack/spack/spec.py
+++ b/lib/spack/spack/spec.py
@@ -679,6 +679,16 @@ class CompilerSpec(object):
d = d["compiler"]
return CompilerSpec(d["name"], vn.VersionList.from_dict(d))
+ @property
+ def display_str(self):
+ """Equivalent to {compiler.name}{@compiler.version} for Specs, without extra
+ @= for readability."""
+ if self.concrete:
+ return f"{self.name}@{self.version}"
+ elif self.versions != vn.any_version:
+ return f"{self.name}@{self.versions}"
+ return self.name
+
def __str__(self):
out = self.name
if self.versions and self.versions != vn.any_version:
@@ -1730,14 +1740,14 @@ class Spec(object):
def short_spec(self):
"""Returns a version of the spec with the dependencies hashed
instead of completely enumerated."""
- spec_format = "{name}{@version}{%compiler}"
+ spec_format = "{name}{@version}{%compiler.name}{@compiler.version}"
spec_format += "{variants}{arch=architecture}{/hash:7}"
return self.format(spec_format)
@property
def cshort_spec(self):
"""Returns an auto-colorized version of ``self.short_spec``."""
- spec_format = "{name}{@version}{%compiler}"
+ spec_format = "{name}{@version}{%compiler.name}{@compiler.version}"
spec_format += "{variants}{arch=architecture}{/hash:7}"
return self.cformat(spec_format)
diff --git a/lib/spack/spack/test/cmd/compiler.py b/lib/spack/spack/test/cmd/compiler.py
index df39671dcc..bca913f358 100644
--- a/lib/spack/spack/test/cmd/compiler.py
+++ b/lib/spack/spack/test/cmd/compiler.py
@@ -204,8 +204,8 @@ def test_compiler_find_mixed_suffixes(no_compilers_yaml, working_env, clangdir):
os.environ["PATH"] = str(clangdir)
output = compiler("find", "--scope=site")
- assert "clang@=11.0.0" in output
- assert "gcc@=8.4.0" in output
+ assert "clang@11.0.0" in output
+ assert "gcc@8.4.0" in output
config = spack.compilers.get_compiler_config("site", False)
clang = next(c["compiler"] for c in config if c["compiler"]["spec"] == "clang@=11.0.0")
@@ -246,8 +246,8 @@ def test_compiler_find_prefer_no_suffix(no_compilers_yaml, working_env, clangdir
os.environ["PATH"] = str(clangdir)
output = compiler("find", "--scope=site")
- assert "clang@=11.0.0" in output
- assert "gcc@=8.4.0" in output
+ assert "clang@11.0.0" in output
+ assert "gcc@8.4.0" in output
config = spack.compilers.get_compiler_config("site", False)
clang = next(c["compiler"] for c in config if c["compiler"]["spec"] == "clang@=11.0.0")