update compiler config with bootstrapped compiler when already installed (#16221)
Update compiler config with bootstrapped compiler when it was already installed and added config defaults to code so mutable_config test fixture works.
This commit is contained in:
parent
46e90692e8
commit
ec23e4ffe5
@ -415,7 +415,7 @@ def _set_variables_for_single_module(pkg, module):
|
|||||||
if getattr(module, marker, False):
|
if getattr(module, marker, False):
|
||||||
return
|
return
|
||||||
|
|
||||||
jobs = spack.config.get('config:build_jobs') if pkg.parallel else 1
|
jobs = spack.config.get('config:build_jobs', 16) if pkg.parallel else 1
|
||||||
jobs = min(jobs, multiprocessing.cpu_count())
|
jobs = min(jobs, multiprocessing.cpu_count())
|
||||||
assert jobs is not None, "no default set for config:build_jobs"
|
assert jobs is not None, "no default set for config:build_jobs"
|
||||||
|
|
||||||
|
@ -111,7 +111,7 @@ def __call__(self, parser, namespace, jobs, option_string):
|
|||||||
def default(self):
|
def default(self):
|
||||||
# This default is coded as a property so that look-up
|
# This default is coded as a property so that look-up
|
||||||
# of this value is done only on demand
|
# of this value is done only on demand
|
||||||
return min(spack.config.get('config:build_jobs'),
|
return min(spack.config.get('config:build_jobs', 16),
|
||||||
multiprocessing.cpu_count())
|
multiprocessing.cpu_count())
|
||||||
|
|
||||||
@default.setter
|
@default.setter
|
||||||
|
@ -336,7 +336,7 @@ def _fetch_from_url(self, url):
|
|||||||
else:
|
else:
|
||||||
curl_args.append('-sS') # just errors when not.
|
curl_args.append('-sS') # just errors when not.
|
||||||
|
|
||||||
connect_timeout = spack.config.get('config:connect_timeout')
|
connect_timeout = spack.config.get('config:connect_timeout', 10)
|
||||||
|
|
||||||
if self.extra_options:
|
if self.extra_options:
|
||||||
cookie = self.extra_options.get('cookie')
|
cookie = self.extra_options.get('cookie')
|
||||||
|
@ -1466,6 +1466,12 @@ def install(self, **kwargs):
|
|||||||
if lock is not None:
|
if lock is not None:
|
||||||
self._update_installed(task)
|
self._update_installed(task)
|
||||||
_print_installed_pkg(pkg.prefix)
|
_print_installed_pkg(pkg.prefix)
|
||||||
|
|
||||||
|
# It's an already installed compiler, add it to the config
|
||||||
|
if task.compiler:
|
||||||
|
spack.compilers.add_compilers_to_config(
|
||||||
|
spack.compilers.find_compilers([pkg.spec.prefix]))
|
||||||
|
|
||||||
else:
|
else:
|
||||||
# At this point we've failed to get a write or a read
|
# At this point we've failed to get a write or a read
|
||||||
# lock, which means another process has taken a write
|
# lock, which means another process has taken a write
|
||||||
|
@ -15,11 +15,12 @@
|
|||||||
import llnl.util.filesystem as fs
|
import llnl.util.filesystem as fs
|
||||||
|
|
||||||
import spack.config
|
import spack.config
|
||||||
|
import spack.compilers as compilers
|
||||||
import spack.hash_types as ht
|
import spack.hash_types as ht
|
||||||
import spack.package
|
import spack.package
|
||||||
import spack.cmd.install
|
import spack.cmd.install
|
||||||
from spack.error import SpackError
|
from spack.error import SpackError
|
||||||
from spack.spec import Spec
|
from spack.spec import Spec, CompilerSpec
|
||||||
from spack.main import SpackCommand
|
from spack.main import SpackCommand
|
||||||
import spack.environment as ev
|
import spack.environment as ev
|
||||||
|
|
||||||
@ -718,3 +719,30 @@ def test_cdash_auth_token(tmpdir, install_mockery, capfd):
|
|||||||
'--log-format=cdash',
|
'--log-format=cdash',
|
||||||
'a')
|
'a')
|
||||||
assert 'Using CDash auth token from environment' in out
|
assert 'Using CDash auth token from environment' in out
|
||||||
|
|
||||||
|
|
||||||
|
def test_compiler_bootstrap(
|
||||||
|
install_mockery, mock_packages, mock_fetch, mock_archive,
|
||||||
|
mutable_config, monkeypatch):
|
||||||
|
monkeypatch.setattr(spack.concretize.Concretizer,
|
||||||
|
'check_for_compiler_existence', False)
|
||||||
|
spack.config.set('config:install_missing_compilers', True)
|
||||||
|
assert CompilerSpec('gcc@2.0') not in compilers.all_compiler_specs()
|
||||||
|
|
||||||
|
# Test succeeds if it does not raise an error
|
||||||
|
install('a%gcc@2.0')
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.mark.regression('16221')
|
||||||
|
def test_compiler_bootstrap_already_installed(
|
||||||
|
install_mockery, mock_packages, mock_fetch, mock_archive,
|
||||||
|
mutable_config, monkeypatch):
|
||||||
|
monkeypatch.setattr(spack.concretize.Concretizer,
|
||||||
|
'check_for_compiler_existence', False)
|
||||||
|
spack.config.set('config:install_missing_compilers', True)
|
||||||
|
|
||||||
|
assert CompilerSpec('gcc@2.0') not in compilers.all_compiler_specs()
|
||||||
|
|
||||||
|
# Test succeeds if it does not raise an error
|
||||||
|
install('gcc@2.0')
|
||||||
|
install('a%gcc@2.0')
|
||||||
|
23
var/spack/repos/builtin.mock/packages/gcc/package.py
Normal file
23
var/spack/repos/builtin.mock/packages/gcc/package.py
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
# Copyright 2013-2020 Lawrence Livermore National Security, LLC and other
|
||||||
|
# Spack Project Developers. See the top-level COPYRIGHT file for details.
|
||||||
|
#
|
||||||
|
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
|
||||||
|
|
||||||
|
from spack import *
|
||||||
|
|
||||||
|
|
||||||
|
class Gcc(Package):
|
||||||
|
"""Simple compiler package."""
|
||||||
|
|
||||||
|
homepage = "http://www.example.com"
|
||||||
|
url = "http://www.example.com/gcc-1.0.tar.gz"
|
||||||
|
|
||||||
|
version('1.0', '0123456789abcdef0123456789abcdef')
|
||||||
|
version('2.0', '2.0_a_hash')
|
||||||
|
|
||||||
|
def install(self, spec, prefix):
|
||||||
|
# Create the minimal compiler that will fool `spack compiler find`
|
||||||
|
mkdirp(prefix.bin)
|
||||||
|
with open(prefix.bin.gcc, 'w') as f:
|
||||||
|
f.write('#!/bin/bash\necho "%s"' % str(spec.version))
|
||||||
|
set_executable(prefix.bin.gcc)
|
Loading…
Reference in New Issue
Block a user