Spec to string: show %compiler at the end (#49439)
In Spack v1.0 we plan to parse caret ^ and percent % the same. Their meaning is direct and transitive dependency respectively. It means that variants, versions, arch, platform, os, target and dag hash should go before the %, so that they apply to dependent not the %dependency.
This commit is contained in:
parent
cd3068dc0b
commit
a45d09abcd
@ -224,7 +224,7 @@ def rebuild_filter(s: spack.spec.Spec) -> RebuildDecision:
|
|||||||
|
|
||||||
def _format_pruning_message(spec: spack.spec.Spec, prune: bool, reasons: List[str]) -> str:
|
def _format_pruning_message(spec: spack.spec.Spec, prune: bool, reasons: List[str]) -> str:
|
||||||
reason_msg = ", ".join(reasons)
|
reason_msg = ", ".join(reasons)
|
||||||
spec_fmt = "{name}{@version}{%compiler}{/hash:7}"
|
spec_fmt = "{name}{@version}{/hash:7}{%compiler}"
|
||||||
|
|
||||||
if not prune:
|
if not prune:
|
||||||
status = colorize("@*g{[x]} ")
|
status = colorize("@*g{[x]} ")
|
||||||
|
@ -330,7 +330,7 @@ def ensure_single_spec_or_die(spec, matching_specs):
|
|||||||
if len(matching_specs) <= 1:
|
if len(matching_specs) <= 1:
|
||||||
return
|
return
|
||||||
|
|
||||||
format_string = "{name}{@version}{%compiler.name}{@compiler.version}{ arch=architecture}"
|
format_string = "{name}{@version}{ arch=architecture} {%compiler.name}{@compiler.version}"
|
||||||
args = ["%s matches multiple packages." % spec, "Matching packages:"]
|
args = ["%s matches multiple packages." % spec, "Matching packages:"]
|
||||||
args += [
|
args += [
|
||||||
colorize(" @K{%s} " % s.dag_hash(7)) + s.cformat(format_string) for s in matching_specs
|
colorize(" @K{%s} " % s.dag_hash(7)) + s.cformat(format_string) for s in matching_specs
|
||||||
@ -471,12 +471,11 @@ def get_arg(name, default=None):
|
|||||||
nfmt = "{fullname}" if namespaces else "{name}"
|
nfmt = "{fullname}" if namespaces else "{name}"
|
||||||
ffmt = ""
|
ffmt = ""
|
||||||
if full_compiler or flags:
|
if full_compiler or flags:
|
||||||
ffmt += "{%compiler.name}"
|
ffmt += "{compiler_flags} {%compiler.name}"
|
||||||
if full_compiler:
|
if full_compiler:
|
||||||
ffmt += "{@compiler.version}"
|
ffmt += "{@compiler.version}"
|
||||||
ffmt += " {compiler_flags}"
|
|
||||||
vfmt = "{variants}" if variants else ""
|
vfmt = "{variants}" if variants else ""
|
||||||
format_string = nfmt + "{@version}" + ffmt + vfmt
|
format_string = nfmt + "{@version}" + vfmt + ffmt
|
||||||
|
|
||||||
def fmt(s, depth=0):
|
def fmt(s, depth=0):
|
||||||
"""Formatter function for all output specs"""
|
"""Formatter function for all output specs"""
|
||||||
|
@ -55,7 +55,7 @@ def dependencies(parser, args):
|
|||||||
env = ev.active_environment()
|
env = ev.active_environment()
|
||||||
spec = spack.cmd.disambiguate_spec(specs[0], env)
|
spec = spack.cmd.disambiguate_spec(specs[0], env)
|
||||||
|
|
||||||
format_string = "{name}{@version}{%compiler}{/hash:7}"
|
format_string = "{name}{@version}{/hash:7}{%compiler}"
|
||||||
if sys.stdout.isatty():
|
if sys.stdout.isatty():
|
||||||
tty.msg("Dependencies of %s" % spec.format(format_string, color=True))
|
tty.msg("Dependencies of %s" % spec.format(format_string, color=True))
|
||||||
deps = spack.store.STORE.db.installed_relatives(
|
deps = spack.store.STORE.db.installed_relatives(
|
||||||
|
@ -93,7 +93,7 @@ def dependents(parser, args):
|
|||||||
env = ev.active_environment()
|
env = ev.active_environment()
|
||||||
spec = spack.cmd.disambiguate_spec(specs[0], env)
|
spec = spack.cmd.disambiguate_spec(specs[0], env)
|
||||||
|
|
||||||
format_string = "{name}{@version}{%compiler}{/hash:7}"
|
format_string = "{name}{@version}{/hash:7}{%compiler}"
|
||||||
if sys.stdout.isatty():
|
if sys.stdout.isatty():
|
||||||
tty.msg("Dependents of %s" % spec.cformat(format_string))
|
tty.msg("Dependents of %s" % spec.cformat(format_string))
|
||||||
deps = spack.store.STORE.db.installed_relatives(spec, "parents", args.transitive)
|
deps = spack.store.STORE.db.installed_relatives(spec, "parents", args.transitive)
|
||||||
|
@ -73,7 +73,7 @@
|
|||||||
boxlib @B{dim=2} boxlib built for 2 dimensions
|
boxlib @B{dim=2} boxlib built for 2 dimensions
|
||||||
libdwarf @g{%intel} ^libelf@g{%gcc}
|
libdwarf @g{%intel} ^libelf@g{%gcc}
|
||||||
libdwarf, built with intel compiler, linked to libelf built with gcc
|
libdwarf, built with intel compiler, linked to libelf built with gcc
|
||||||
mvapich2 @g{%gcc} @B{fabrics=psm,mrail,sock}
|
mvapich2 @B{fabrics=psm,mrail,sock} @g{%gcc}
|
||||||
mvapich2, built with gcc compiler, with support for multiple fabrics
|
mvapich2, built with gcc compiler, with support for multiple fabrics
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
@ -383,8 +383,10 @@ def modules_cmd(parser, args, module_type, callbacks=callbacks):
|
|||||||
query = " ".join(str(s) for s in args.constraint_specs)
|
query = " ".join(str(s) for s in args.constraint_specs)
|
||||||
msg = f"the constraint '{query}' matches multiple packages:\n"
|
msg = f"the constraint '{query}' matches multiple packages:\n"
|
||||||
for s in specs:
|
for s in specs:
|
||||||
spec_fmt = "{hash:7} {name}{@version}{%compiler}"
|
spec_fmt = (
|
||||||
spec_fmt += "{compiler_flags}{variants}{arch=architecture}"
|
"{hash:7} {name}{@version}{compiler_flags}{variants}"
|
||||||
|
"{arch=architecture} {%compiler}"
|
||||||
|
)
|
||||||
msg += "\t" + s.cformat(spec_fmt) + "\n"
|
msg += "\t" + s.cformat(spec_fmt) + "\n"
|
||||||
tty.die(msg, "In this context exactly *one* match is needed.")
|
tty.die(msg, "In this context exactly *one* match is needed.")
|
||||||
|
|
||||||
|
@ -166,7 +166,7 @@ def __init__(
|
|||||||
" ".join(self._install_target(s.safe_name()) for s in item.prereqs),
|
" ".join(self._install_target(s.safe_name()) for s in item.prereqs),
|
||||||
item.target.spec_hash(),
|
item.target.spec_hash(),
|
||||||
item.target.unsafe_format(
|
item.target.unsafe_format(
|
||||||
"{name}{@version}{%compiler}{variants}{arch=architecture}"
|
"{name}{@version}{variants}{ arch=architecture} {%compiler}"
|
||||||
),
|
),
|
||||||
item.buildcache_flag,
|
item.buildcache_flag,
|
||||||
)
|
)
|
||||||
|
@ -643,7 +643,7 @@ def print_status(self, *specs, **kwargs):
|
|||||||
specs.sort()
|
specs.sort()
|
||||||
|
|
||||||
abbreviated = [
|
abbreviated = [
|
||||||
s.cformat("{name}{@version}{%compiler}{compiler_flags}{variants}")
|
s.cformat("{name}{@version}{compiler_flags}{variants}{%compiler}")
|
||||||
for s in specs
|
for s in specs
|
||||||
]
|
]
|
||||||
|
|
||||||
|
@ -482,7 +482,7 @@ class SimpleDAG(DotGraphBuilder):
|
|||||||
"""Simple DOT graph, with nodes colored uniformly and edges without properties"""
|
"""Simple DOT graph, with nodes colored uniformly and edges without properties"""
|
||||||
|
|
||||||
def node_entry(self, node):
|
def node_entry(self, node):
|
||||||
format_option = "{name}{@version}{%compiler}{/hash:7}"
|
format_option = "{name}{@version}{/hash:7}{%compiler}"
|
||||||
return node.dag_hash(), f'[label="{node.format(format_option)}"]'
|
return node.dag_hash(), f'[label="{node.format(format_option)}"]'
|
||||||
|
|
||||||
def edge_entry(self, edge):
|
def edge_entry(self, edge):
|
||||||
@ -515,7 +515,7 @@ def visit(self, edge):
|
|||||||
super().visit(edge)
|
super().visit(edge)
|
||||||
|
|
||||||
def node_entry(self, node):
|
def node_entry(self, node):
|
||||||
node_str = node.format("{name}{@version}{%compiler}{/hash:7}")
|
node_str = node.format("{name}{@version}{/hash:7}{%compiler}")
|
||||||
options = f'[label="{node_str}", group="build_dependencies", fillcolor="coral"]'
|
options = f'[label="{node_str}", group="build_dependencies", fillcolor="coral"]'
|
||||||
if node.dag_hash() in self.main_unified_space:
|
if node.dag_hash() in self.main_unified_space:
|
||||||
options = f'[label="{node_str}", group="main_psid"]'
|
options = f'[label="{node_str}", group="main_psid"]'
|
||||||
|
@ -175,15 +175,17 @@
|
|||||||
#: Spec(Spec("string").format()) == Spec("string)"
|
#: Spec(Spec("string").format()) == Spec("string)"
|
||||||
DEFAULT_FORMAT = (
|
DEFAULT_FORMAT = (
|
||||||
"{name}{@versions}"
|
"{name}{@versions}"
|
||||||
"{%compiler.name}{@compiler.versions}{compiler_flags}"
|
"{compiler_flags}"
|
||||||
"{variants}{ namespace=namespace_if_anonymous}{ arch=architecture}{/abstract_hash}"
|
"{variants}{ namespace=namespace_if_anonymous}{ arch=architecture}{/abstract_hash}"
|
||||||
|
" {%compiler.name}{@compiler.versions}"
|
||||||
)
|
)
|
||||||
|
|
||||||
#: Display format, which eliminates extra `@=` in the output, for readability.
|
#: Display format, which eliminates extra `@=` in the output, for readability.
|
||||||
DISPLAY_FORMAT = (
|
DISPLAY_FORMAT = (
|
||||||
"{name}{@version}"
|
"{name}{@version}"
|
||||||
"{%compiler.name}{@compiler.version}{compiler_flags}"
|
"{compiler_flags}"
|
||||||
"{variants}{ namespace=namespace_if_anonymous}{ arch=architecture}{/abstract_hash}"
|
"{variants}{ namespace=namespace_if_anonymous}{ arch=architecture}{/abstract_hash}"
|
||||||
|
" {%compiler.name}{@compiler.version}"
|
||||||
)
|
)
|
||||||
|
|
||||||
#: Regular expression to pull spec contents out of clearsigned signature
|
#: Regular expression to pull spec contents out of clearsigned signature
|
||||||
@ -2106,16 +2108,18 @@ def long_spec(self):
|
|||||||
def short_spec(self):
|
def short_spec(self):
|
||||||
"""Returns a version of the spec with the dependencies hashed
|
"""Returns a version of the spec with the dependencies hashed
|
||||||
instead of completely enumerated."""
|
instead of completely enumerated."""
|
||||||
spec_format = "{name}{@version}{%compiler.name}{@compiler.version}"
|
return self.format(
|
||||||
spec_format += "{variants}{ arch=architecture}{/hash:7}"
|
"{name}{@version}{variants}{ arch=architecture}"
|
||||||
return self.format(spec_format)
|
"{/hash:7}{%compiler.name}{@compiler.version}"
|
||||||
|
)
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def cshort_spec(self):
|
def cshort_spec(self):
|
||||||
"""Returns an auto-colorized version of ``self.short_spec``."""
|
"""Returns an auto-colorized version of ``self.short_spec``."""
|
||||||
spec_format = "{name}{@version}{%compiler.name}{@compiler.version}"
|
return self.cformat(
|
||||||
spec_format += "{variants}{ arch=architecture}{/hash:7}"
|
"{name}{@version}{variants}{ arch=architecture}"
|
||||||
return self.cformat(spec_format)
|
"{/hash:7}{%compiler.name}{@compiler.version}"
|
||||||
|
)
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def prefix(self) -> spack.util.prefix.Prefix:
|
def prefix(self) -> spack.util.prefix.Prefix:
|
||||||
@ -5295,8 +5299,10 @@ def __init__(self, spec):
|
|||||||
|
|
||||||
class AmbiguousHashError(spack.error.SpecError):
|
class AmbiguousHashError(spack.error.SpecError):
|
||||||
def __init__(self, msg, *specs):
|
def __init__(self, msg, *specs):
|
||||||
spec_fmt = "{namespace}.{name}{@version}{%compiler}{compiler_flags}"
|
spec_fmt = (
|
||||||
spec_fmt += "{variants}{ arch=architecture}{/hash:7}"
|
"{namespace}.{name}{@version}{compiler_flags}{variants}"
|
||||||
|
"{ arch=architecture}{/hash:7}{%compiler}"
|
||||||
|
)
|
||||||
specs_str = "\n " + "\n ".join(spec.format(spec_fmt) for spec in specs)
|
specs_str = "\n " + "\n ".join(spec.format(spec_fmt) for spec in specs)
|
||||||
super().__init__(msg + specs_str)
|
super().__init__(msg + specs_str)
|
||||||
|
|
||||||
|
@ -1779,7 +1779,7 @@ def test_roots_display_with_variants():
|
|||||||
with ev.read("test"):
|
with ev.read("test"):
|
||||||
out = find(output=str)
|
out = find(output=str)
|
||||||
|
|
||||||
assert "boost +shared" in out
|
assert "boost+shared" in out
|
||||||
|
|
||||||
|
|
||||||
def test_uninstall_keeps_in_env(mock_stage, mock_fetch, install_mockery):
|
def test_uninstall_keeps_in_env(mock_stage, mock_fetch, install_mockery):
|
||||||
|
@ -320,7 +320,7 @@ def test_find_very_long(database, config):
|
|||||||
@pytest.mark.db
|
@pytest.mark.db
|
||||||
def test_find_show_compiler(database, config):
|
def test_find_show_compiler(database, config):
|
||||||
output = find("--no-groups", "--show-full-compiler", "mpileaks")
|
output = find("--no-groups", "--show-full-compiler", "mpileaks")
|
||||||
assert "mpileaks@2.3%gcc@10.2.1" in output
|
assert "mpileaks@2.3 %gcc@10.2.1" in output
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.db
|
@pytest.mark.db
|
||||||
@ -464,7 +464,7 @@ def test_environment_with_version_range_in_compiler_doesnt_fail(tmp_path):
|
|||||||
|
|
||||||
with test_environment:
|
with test_environment:
|
||||||
output = find()
|
output = find()
|
||||||
assert "zlib%gcc@12.1.0" in output
|
assert "zlib %gcc@12.1.0" in output
|
||||||
|
|
||||||
|
|
||||||
_pkga = (
|
_pkga = (
|
||||||
|
@ -166,7 +166,7 @@ def _specfile_for(spec_str, filename):
|
|||||||
Token(SpecTokens.COMPILER_AND_VERSION, value="%bar@1.0"),
|
Token(SpecTokens.COMPILER_AND_VERSION, value="%bar@1.0"),
|
||||||
Token(SpecTokens.VERSION, value="@2.0"),
|
Token(SpecTokens.VERSION, value="@2.0"),
|
||||||
],
|
],
|
||||||
"foo@2.0%bar@1.0",
|
"foo@2.0 %bar@1.0",
|
||||||
),
|
),
|
||||||
# Single dependency with version
|
# Single dependency with version
|
||||||
dependency_with_version("openmpi ^hwloc@1.2e6"),
|
dependency_with_version("openmpi ^hwloc@1.2e6"),
|
||||||
@ -188,7 +188,7 @@ def _specfile_for(spec_str, filename):
|
|||||||
Token(SpecTokens.UNQUALIFIED_PACKAGE_NAME, value="stackwalker"),
|
Token(SpecTokens.UNQUALIFIED_PACKAGE_NAME, value="stackwalker"),
|
||||||
Token(SpecTokens.VERSION, value="@8.1_1e"),
|
Token(SpecTokens.VERSION, value="@8.1_1e"),
|
||||||
],
|
],
|
||||||
"mvapich_foo ^_openmpi@1.2:1.4,1.6%intel@12.1+debug~qt_4 ^stackwalker@8.1_1e",
|
"mvapich_foo ^_openmpi@1.2:1.4,1.6+debug~qt_4 %intel@12.1 ^stackwalker@8.1_1e",
|
||||||
),
|
),
|
||||||
(
|
(
|
||||||
"mvapich_foo ^_openmpi@1.2:1.4,1.6%intel@12.1~qt_4 debug=2 ^stackwalker@8.1_1e",
|
"mvapich_foo ^_openmpi@1.2:1.4,1.6%intel@12.1~qt_4 debug=2 ^stackwalker@8.1_1e",
|
||||||
@ -204,7 +204,7 @@ def _specfile_for(spec_str, filename):
|
|||||||
Token(SpecTokens.UNQUALIFIED_PACKAGE_NAME, value="stackwalker"),
|
Token(SpecTokens.UNQUALIFIED_PACKAGE_NAME, value="stackwalker"),
|
||||||
Token(SpecTokens.VERSION, value="@8.1_1e"),
|
Token(SpecTokens.VERSION, value="@8.1_1e"),
|
||||||
],
|
],
|
||||||
"mvapich_foo ^_openmpi@1.2:1.4,1.6%intel@12.1~qt_4 debug=2 ^stackwalker@8.1_1e",
|
"mvapich_foo ^_openmpi@1.2:1.4,1.6~qt_4 debug=2 %intel@12.1 ^stackwalker@8.1_1e",
|
||||||
),
|
),
|
||||||
(
|
(
|
||||||
"mvapich_foo ^_openmpi@1.2:1.4,1.6%intel@12.1 cppflags=-O3 +debug~qt_4 "
|
"mvapich_foo ^_openmpi@1.2:1.4,1.6%intel@12.1 cppflags=-O3 +debug~qt_4 "
|
||||||
@ -222,7 +222,7 @@ def _specfile_for(spec_str, filename):
|
|||||||
Token(SpecTokens.UNQUALIFIED_PACKAGE_NAME, value="stackwalker"),
|
Token(SpecTokens.UNQUALIFIED_PACKAGE_NAME, value="stackwalker"),
|
||||||
Token(SpecTokens.VERSION, value="@8.1_1e"),
|
Token(SpecTokens.VERSION, value="@8.1_1e"),
|
||||||
],
|
],
|
||||||
"mvapich_foo ^_openmpi@1.2:1.4,1.6%intel@12.1 cppflags=-O3 +debug~qt_4 "
|
"mvapich_foo ^_openmpi@1.2:1.4,1.6 cppflags=-O3 +debug~qt_4 %intel@12.1 "
|
||||||
"^stackwalker@8.1_1e",
|
"^stackwalker@8.1_1e",
|
||||||
),
|
),
|
||||||
# Specs containing YAML or JSON in the package name
|
# Specs containing YAML or JSON in the package name
|
||||||
@ -236,7 +236,7 @@ def _specfile_for(spec_str, filename):
|
|||||||
Token(SpecTokens.UNQUALIFIED_PACKAGE_NAME, value="boost"),
|
Token(SpecTokens.UNQUALIFIED_PACKAGE_NAME, value="boost"),
|
||||||
Token(SpecTokens.VERSION, value="@3.1.4"),
|
Token(SpecTokens.VERSION, value="@3.1.4"),
|
||||||
],
|
],
|
||||||
"yaml-cpp@0.1.8%intel@12.1 ^boost@3.1.4",
|
"yaml-cpp@0.1.8 %intel@12.1 ^boost@3.1.4",
|
||||||
),
|
),
|
||||||
(
|
(
|
||||||
r"builtin.yaml-cpp%gcc",
|
r"builtin.yaml-cpp%gcc",
|
||||||
@ -244,7 +244,7 @@ def _specfile_for(spec_str, filename):
|
|||||||
Token(SpecTokens.FULLY_QUALIFIED_PACKAGE_NAME, value="builtin.yaml-cpp"),
|
Token(SpecTokens.FULLY_QUALIFIED_PACKAGE_NAME, value="builtin.yaml-cpp"),
|
||||||
Token(SpecTokens.COMPILER, value="%gcc"),
|
Token(SpecTokens.COMPILER, value="%gcc"),
|
||||||
],
|
],
|
||||||
"yaml-cpp%gcc",
|
"yaml-cpp %gcc",
|
||||||
),
|
),
|
||||||
(
|
(
|
||||||
r"testrepo.yaml-cpp%gcc",
|
r"testrepo.yaml-cpp%gcc",
|
||||||
@ -252,7 +252,7 @@ def _specfile_for(spec_str, filename):
|
|||||||
Token(SpecTokens.FULLY_QUALIFIED_PACKAGE_NAME, value="testrepo.yaml-cpp"),
|
Token(SpecTokens.FULLY_QUALIFIED_PACKAGE_NAME, value="testrepo.yaml-cpp"),
|
||||||
Token(SpecTokens.COMPILER, value="%gcc"),
|
Token(SpecTokens.COMPILER, value="%gcc"),
|
||||||
],
|
],
|
||||||
"yaml-cpp%gcc",
|
"yaml-cpp %gcc",
|
||||||
),
|
),
|
||||||
(
|
(
|
||||||
r"builtin.yaml-cpp@0.1.8%gcc@7.2.0 ^boost@3.1.4",
|
r"builtin.yaml-cpp@0.1.8%gcc@7.2.0 ^boost@3.1.4",
|
||||||
@ -264,7 +264,7 @@ def _specfile_for(spec_str, filename):
|
|||||||
Token(SpecTokens.UNQUALIFIED_PACKAGE_NAME, value="boost"),
|
Token(SpecTokens.UNQUALIFIED_PACKAGE_NAME, value="boost"),
|
||||||
Token(SpecTokens.VERSION, value="@3.1.4"),
|
Token(SpecTokens.VERSION, value="@3.1.4"),
|
||||||
],
|
],
|
||||||
"yaml-cpp@0.1.8%gcc@7.2.0 ^boost@3.1.4",
|
"yaml-cpp@0.1.8 %gcc@7.2.0 ^boost@3.1.4",
|
||||||
),
|
),
|
||||||
(
|
(
|
||||||
r"builtin.yaml-cpp ^testrepo.boost ^zlib",
|
r"builtin.yaml-cpp ^testrepo.boost ^zlib",
|
||||||
@ -491,7 +491,7 @@ def _specfile_for(spec_str, filename):
|
|||||||
Token(SpecTokens.COMPILER_AND_VERSION, value="% intel @ 12.1:12.6"),
|
Token(SpecTokens.COMPILER_AND_VERSION, value="% intel @ 12.1:12.6"),
|
||||||
Token(SpecTokens.BOOL_VARIANT, value="+ debug"),
|
Token(SpecTokens.BOOL_VARIANT, value="+ debug"),
|
||||||
],
|
],
|
||||||
"%intel@12.1:12.6+debug",
|
"+debug %intel@12.1:12.6",
|
||||||
),
|
),
|
||||||
(
|
(
|
||||||
"@ 12.1:12.6 + debug - qt_4",
|
"@ 12.1:12.6 + debug - qt_4",
|
||||||
@ -516,7 +516,7 @@ def _specfile_for(spec_str, filename):
|
|||||||
Token(SpecTokens.VERSION, value="@:0.4"),
|
Token(SpecTokens.VERSION, value="@:0.4"),
|
||||||
Token(SpecTokens.COMPILER, value="% nvhpc"),
|
Token(SpecTokens.COMPILER, value="% nvhpc"),
|
||||||
],
|
],
|
||||||
"@:0.4%nvhpc",
|
"@:0.4 %nvhpc",
|
||||||
),
|
),
|
||||||
(
|
(
|
||||||
"^[virtuals=mpi] openmpi",
|
"^[virtuals=mpi] openmpi",
|
||||||
|
@ -54,7 +54,7 @@ def patch(self):
|
|||||||
# it takes a very long time to rebuild!
|
# it takes a very long time to rebuild!
|
||||||
tty.info(
|
tty.info(
|
||||||
"Build for "
|
"Build for "
|
||||||
+ self.spec["openfoam"].format("{name}{@version}{%compiler}{compiler_flags}{variants}")
|
+ self.spec["openfoam"].format("{name}{@version}{compiler_flags}{variants}{%compiler}")
|
||||||
)
|
)
|
||||||
|
|
||||||
def configure(self, spec, prefix):
|
def configure(self, spec, prefix):
|
||||||
|
Loading…
Reference in New Issue
Block a user