Skip to content

Commit 1464057

Browse files
authored
Merge pull request #1191 from douglasjacobsen/fix-spack-compiler-install
Fix `spack compiler info` call
2 parents 2b4c206 + c536b93 commit 1464057

File tree

3 files changed

+26
-14
lines changed

3 files changed

+26
-14
lines changed

lib/ramble/ramble/software_environments.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -844,7 +844,8 @@ def compiler_specs_for_environment(self, environment: object):
844844
environment (SoftwareEnvironment): Environment to extract compiler specs for
845845
846846
Yields:
847-
(str) Spec string for each compiler
847+
(str) Package spec string for each compiler
848+
(str) Compiler spec string for each compiler
848849
"""
849850

850851
root_compilers = []
@@ -874,7 +875,9 @@ def compiler_specs_for_environment(self, environment: object):
874875

875876
for comp in reversed(root_compilers + dep_compilers):
876877
comp_pkg = self._rendered_packages[pm_name][comp]
877-
yield comp_pkg.spec_str(all_packages=self._rendered_packages, compiler=False)
878+
yield comp_pkg.spec_str(
879+
all_packages=self._rendered_packages, compiler=False
880+
), comp_pkg.spec_str(all_packages=self._rendered_packages, compiler=True)
878881

879882
def package_specs_for_environment(self, environment: object):
880883
"""Iterator over package specs for a given environment

var/ramble/repos/builtin/package_managers/spack-lightweight/package_manager.py

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -89,12 +89,15 @@ def _software_install_requested_compilers(self, workspace, app_inst=None):
8989

9090
if software_env is not None:
9191
for (
92-
compiler_spec
92+
pkg_spec,
93+
compiler_spec,
9394
) in software_envs.compiler_specs_for_environment(
9495
software_env
9596
):
96-
logger.debug(f"Installing compiler: {compiler_spec}")
97-
self.runner.install_compiler(compiler_spec)
97+
logger.debug(
98+
f"Installing compiler: {compiler_spec} with pkg_spec {pkg_spec}"
99+
)
100+
self.runner.install_compiler(pkg_spec, compiler_spec)
98101

99102
except RunnerError as e:
100103
logger.die(e)
@@ -889,7 +892,7 @@ def _load_compiler_shell(self, spec, shell_flag, regex):
889892
env_var.group("var"), env_var.group("val")
890893
)
891894

892-
def install_compiler(self, spec):
895+
def install_compiler(self, pkg_spec, compiler_spec):
893896
"""
894897
Ensure a compiler is installed, before using it to install packages
895898
within an environment.
@@ -914,7 +917,7 @@ def install_compiler(self, spec):
914917
comp_info_args = []
915918
if self.compiler_config_dir:
916919
comp_info_args.extend(["-C", self.env_path])
917-
comp_info_args.extend(["compiler", "info", spec])
920+
comp_info_args.extend(["compiler", "info", compiler_spec])
918921

919922
compiler_find_flags = ramble.config.get(
920923
f"{self.compiler_find_config_name}:flags"
@@ -930,7 +933,7 @@ def install_compiler(self, spec):
930933
self._cmd_start(self.spack, comp_info_args)
931934
self.spack(*comp_info_args, output=os.devnull, error=os.devnull)
932935
self._cmd_end(self.spack, comp_info_args)
933-
logger.msg(f"{spec} is already an available compiler")
936+
logger.msg(f"{compiler_spec} is already an available compiler")
934937
return
935938
except ProcessError:
936939

@@ -943,16 +946,16 @@ def install_compiler(self, spec):
943946
for flag in shlex.split(install_flags):
944947
args.append(flag)
945948

946-
args.append(spec)
949+
args.append(pkg_spec)
947950

948951
self.execute(self.installer, args)
949952

950-
self.load_compiler(spec)
953+
self.load_compiler(pkg_spec)
951954

952955
self.execute(self.spack, compiler_find_args)
953956

954957
if not self.dry_run:
955-
self.compilers.append(spec)
958+
self.compilers.append(pkg_spec)
956959

957960
if self.active:
958961
self.spack.add_default_env(self.env_key, active_env)

var/ramble/repos/builtin/package_managers/spack-lightweight/test/spack_runner.py

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -378,19 +378,23 @@ def test_new_compiler_installs(tmpdir, capsys, request):
378378
"config:spack", {"global": {"flags": f"-C {config_path}"}}
379379
):
380380
try:
381+
pkg_spec = "[email protected] +binutils"
382+
compiler_spec = "[email protected]"
381383
sr = SpackRunner(dry_run=True)
382384
sr.create_env(os.getcwd())
383385
sr.activate()
384386
sr.add_include_file(packages_path)
385387
sr.add_include_file(compilers_path)
386388
sr.generate_env_file()
387-
sr.install_compiler("[email protected]")
389+
sr.install_compiler("[email protected] +binutils", "[email protected]")
388390
captured = capsys.readouterr()
389391

390392
assert (
391-
"[email protected] is already an available compiler"
393+
f"{compiler_spec} is already an available compiler"
392394
in captured.out
393395
)
396+
397+
assert f"{pkg_spec}" not in captured.out
394398
except RunnerError as e:
395399
pytest.skip("%s" % e)
396400

@@ -563,11 +567,13 @@ def test_config_compiler_find_attribute(
563567
"config:spack", {"compiler_find": {attr: value}}
564568
):
565569
try:
570+
pkg_spec = "[email protected] +binutils"
571+
compiler_spec = "[email protected]"
566572
sr = SpackRunner(dry_run=True)
567573
sr.create_env(os.getcwd())
568574
sr.activate()
569575
sr.add_include_file(compilers_path)
570-
sr.install_compiler("[email protected]")
576+
sr.install_compiler(pkg_spec, compiler_spec)
571577
captured = capsys.readouterr()
572578

573579
assert expected_str in captured.out

0 commit comments

Comments
 (0)