Merge branch 'features/newarch' of https://github.com/NERSC/spack into features/newarch
This commit is contained in:
@@ -480,25 +480,23 @@ def arch_from_dict(d):
|
||||
|
||||
@memoized
|
||||
def all_platforms():
|
||||
modules = []
|
||||
|
||||
classes = []
|
||||
mod_path = spack.platform_path
|
||||
mod_string = "spack.platformss"
|
||||
parent_module = "spack.platforms"
|
||||
|
||||
for name in list_modules(mod_path):
|
||||
mod_name = mod_string + name
|
||||
path = join_path(mod_path, name) + ".py"
|
||||
mod = imp.load_source(mod_name, path)
|
||||
mod_name = '%s.%s' % (parent_module, name)
|
||||
class_name = mod_to_class(name)
|
||||
mod = __import__(mod_name, fromlist=[class_name])
|
||||
if not hasattr(mod, class_name):
|
||||
tty.die('No class %s defined in %s' % (class_name, mod_name))
|
||||
cls = getattr(mod, class_name)
|
||||
if not inspect.isclass(cls):
|
||||
tty.die('%s.%s is not a class' % (mod_name, class_name))
|
||||
|
||||
modules.append(cls)
|
||||
classes.append(cls)
|
||||
|
||||
return modules
|
||||
return classes
|
||||
|
||||
|
||||
@memoized
|
||||
|
@@ -214,9 +214,10 @@ def _read_spec_from_yaml(self, hash_key, installs, parent_key=None):
|
||||
|
||||
# Add dependencies from other records in the install DB to
|
||||
# form a full spec.
|
||||
for dep_hash in spec_dict[spec.name]['dependencies'].values():
|
||||
child = self._read_spec_from_yaml(dep_hash, installs, hash_key)
|
||||
spec._add_dependency(child)
|
||||
if 'dependencies' in spec_dict[spec.name]:
|
||||
for dep_hash in spec_dict[spec.name]['dependencies'].values():
|
||||
child = self._read_spec_from_yaml(dep_hash, installs, hash_key)
|
||||
spec._add_dependency(child)
|
||||
|
||||
# Specs from the database need to be marked concrete because
|
||||
# they represent actual installations.
|
||||
@@ -289,7 +290,8 @@ def check(cond, msg):
|
||||
except Exception as e:
|
||||
tty.warn("Invalid database reecord:",
|
||||
"file: %s" % self._index_path,
|
||||
"hash: %s" % hash_key, "cause: %s" % str(e))
|
||||
"hash: %s" % hash_key,
|
||||
"cause: %s: %s" % (type(e).__name__, str(e)))
|
||||
raise
|
||||
|
||||
self._data = data
|
||||
|
@@ -1,3 +1,4 @@
|
||||
import re
|
||||
import platform as py_platform
|
||||
from spack.architecture import OperatingSystem
|
||||
|
||||
@@ -9,7 +10,13 @@ class LinuxDistro(OperatingSystem):
|
||||
platform.dist()
|
||||
"""
|
||||
def __init__(self):
|
||||
name = py_platform.dist()[0]
|
||||
version = py_platform.dist()[1].split(".")[0] # Grabs major version from tuple
|
||||
distname, version, _ = py_platform.linux_distribution(
|
||||
full_distribution_name=False)
|
||||
|
||||
super(LinuxDistro, self).__init__(name, version)
|
||||
# Grabs major version from tuple on redhat; on other platforms
|
||||
# grab the first legal identifier in the version field. On
|
||||
# debian you get things like 'wheezy/sid'; sid means unstable.
|
||||
# We just record 'wheezy' and don't get quite so detailed.
|
||||
version = re.split(r'[^\w-]', version)[0]
|
||||
|
||||
super(LinuxDistro, self).__init__(distname, version)
|
||||
|
@@ -2150,10 +2150,13 @@ def __init__(self):
|
||||
(r'\s+', lambda scanner, val: None)])
|
||||
|
||||
|
||||
# Lexer is always the same for every parser.
|
||||
_lexer = SpecLexer()
|
||||
|
||||
class SpecParser(spack.parse.Parser):
|
||||
|
||||
def __init__(self):
|
||||
super(SpecParser, self).__init__(SpecLexer())
|
||||
super(SpecParser, self).__init__(_lexer)
|
||||
self.previous = None
|
||||
|
||||
def do_parse(self):
|
||||
|
Reference in New Issue
Block a user