summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTodd Gamblin <tgamblin@llnl.gov>2016-06-20 23:46:13 -0700
committerGitHub <noreply@github.com>2016-06-20 23:46:13 -0700
commit3f90fee614cf44f31344de3443f2a2e63c6d9fb4 (patch)
treeff44f7432fe505d0cae5f92c3fe143a29cfea7d4
parent70a25c45871656b0e4007ffe5912bd6e51a5e4dd (diff)
parentd515877d91300c6fb57e84f83011ded15737ca73 (diff)
downloadspack-3f90fee614cf44f31344de3443f2a2e63c6d9fb4.tar.gz
spack-3f90fee614cf44f31344de3443f2a2e63c6d9fb4.tar.bz2
spack-3f90fee614cf44f31344de3443f2a2e63c6d9fb4.tar.xz
spack-3f90fee614cf44f31344de3443f2a2e63c6d9fb4.zip
Merge pull request #1085 from NERSC/bugfix/compiler_find
Bugfix/compiler find and gfortran fix.
-rw-r--r--lib/spack/spack/cmd/compiler.py12
-rw-r--r--lib/spack/spack/compilers/__init__.py18
-rw-r--r--lib/spack/spack/compilers/gcc.py4
3 files changed, 20 insertions, 14 deletions
diff --git a/lib/spack/spack/cmd/compiler.py b/lib/spack/spack/cmd/compiler.py
index c95045ef85..c325628ebf 100644
--- a/lib/spack/spack/cmd/compiler.py
+++ b/lib/spack/spack/cmd/compiler.py
@@ -76,10 +76,16 @@ def compiler_find(args):
if not paths:
paths = get_path('PATH')
- compilers = [c for c in spack.compilers.find_compilers(*args.add_paths)
- if c.spec not in spack.compilers.all_compilers(scope=args.scope)]
+ # Don't initialize compilers config via compilers.get_compiler_config.
+ # Just let compiler_find do the
+ # entire process and return an empty config from all_compilers
+ # Default for any other process is init_config=True
+ compilers = [c for c in spack.compilers.find_compilers(*paths)
+ if c.spec not in spack.compilers.all_compilers(
+ scope=args.scope, init_config=False)]
if compilers:
- spack.compilers.add_compilers_to_config(compilers, scope=args.scope)
+ spack.compilers.add_compilers_to_config(compilers, scope=args.scope,
+ init_config=False)
n = len(compilers)
s = 's' if n > 1 else ''
filename = spack.config.get_config_filename(args.scope, 'compilers')
diff --git a/lib/spack/spack/compilers/__init__.py b/lib/spack/spack/compilers/__init__.py
index ae72b743b2..a70d42982f 100644
--- a/lib/spack/spack/compilers/__init__.py
+++ b/lib/spack/spack/compilers/__init__.py
@@ -83,7 +83,7 @@ def _to_dict(compiler):
return {'compiler': d}
-def get_compiler_config(scope=None):
+def get_compiler_config(scope=None, init_config=True):
"""Return the compiler configuration for the specified architecture.
"""
def init_compiler_config():
@@ -93,12 +93,12 @@ def get_compiler_config(scope=None):
for compiler in compilers:
compilers_dict.append(_to_dict(compiler))
spack.config.update_config('compilers', compilers_dict, scope=scope)
-
+
config = spack.config.get_config('compilers', scope=scope)
# Update the configuration if there are currently no compilers
# configured. Avoid updating automatically if there ARE site
# compilers configured but no user ones.
- if not config:
+ if not config and init_config:
if scope is None:
# We know no compilers were configured in any scope.
init_compiler_config()
@@ -117,14 +117,14 @@ def get_compiler_config(scope=None):
return [] # Return empty list which we will later append to.
-def add_compilers_to_config(compilers, scope=None):
+def add_compilers_to_config(compilers, scope=None, init_config=True):
"""Add compilers to the config for the specified architecture.
Arguments:
- compilers: a list of Compiler objects.
- scope: configuration scope to modify.
"""
- compiler_config = get_compiler_config(scope)
+ compiler_config = get_compiler_config(scope, init_config)
for compiler in compilers:
compiler_config.append(_to_dict(compiler))
global _cache_config_file
@@ -153,23 +153,23 @@ def remove_compiler_from_config(compiler_spec, scope=None):
spack.config.update_config('compilers', filtered_compiler_config, scope)
-def all_compilers_config(scope=None):
+def all_compilers_config(scope=None, init_config=True):
"""Return a set of specs for all the compiler versions currently
available to build with. These are instances of CompilerSpec.
"""
# Get compilers for this architecture.
global _cache_config_file #Create a cache of the config file so we don't load all the time.
if not _cache_config_file:
- _cache_config_file = get_compiler_config(scope)
+ _cache_config_file = get_compiler_config(scope, init_config)
return _cache_config_file
else:
return _cache_config_file
-def all_compilers(scope=None):
+def all_compilers(scope=None, init_config=True):
# Return compiler specs from the merged config.
return [spack.spec.CompilerSpec(s['compiler']['spec'])
- for s in all_compilers_config(scope)]
+ for s in all_compilers_config(scope, init_config)]
def default_compiler():
diff --git a/lib/spack/spack/compilers/gcc.py b/lib/spack/spack/compilers/gcc.py
index 3f552eaece..2fae6688db 100644
--- a/lib/spack/spack/compilers/gcc.py
+++ b/lib/spack/spack/compilers/gcc.py
@@ -77,9 +77,9 @@ class Gcc(Compiler):
return get_compiler_version(
fc, '-dumpversion',
# older gfortran versions don't have simple dumpversion output.
- r'(?:GNU Fortran \(GCC\))?(\d+\.\d+(?:\.\d+)?)', module)
+ r'(?:GNU Fortran \(GCC\))?(\d+\.\d+(?:\.\d+)?)')
@classmethod
def f77_version(cls, f77):
- return cls.fc_version(f77, module)
+ return cls.fc_version(f77)