First possibly working version of the crayport. Not sufficiently tested at all.

This commit is contained in:
Gregory Becker 2015-11-11 14:22:07 -08:00
parent 95a34628a3
commit 271a839957
7 changed files with 46 additions and 61 deletions

View file

@ -64,13 +64,15 @@ def set_architecture(self, architecture): # Target should get the architecture c
@property @property
def compiler_strategy(self): def compiler_strategy(self):
if default_strategy: if self.module_name: # If there is a module_name given then use MODULES
return default_strategy
elif self.module_name: # If there is a module_name given then use MODULES
return "MODULES" return "MODULES"
else: else:
return "PATH" return "PATH"
def __str__(self):
return self.name
class Architecture(object): class Architecture(object):
""" Abstract class that each type of Architecture will subclass. Will return a instance of it once it """ Abstract class that each type of Architecture will subclass. Will return a instance of it once it
is returned is returned
@ -116,6 +118,9 @@ def detect(self):
""" """
raise NotImplementedError() raise NotImplementedError()
def __repr__(self):
return self.__str__
def __str__(self): def __str__(self):
return self.name return self.name

View file

@ -1,14 +1,15 @@
import subprocess import subprocess
from spack.architecture import Architecture from spack.architecture import Architecture, Target
class Linux(Architecture): class Linux(Architecture):
priority = 60 priority = 60
front_end = "x86_64" front_end = 'linux'
back_end = "x86_64" back_end = 'linux'
default = "x86_64" default = 'linux'
def __init__(self): def __init__(self):
super(Linux, self).__init__('linux') super(Linux, self).__init__('linux')
self.add_target('linux', Target('linux'))
@classmethod @classmethod
def detect(self): def detect(self):

View file

@ -307,6 +307,10 @@ def __repr__(self):
def __str__(self): def __str__(self):
"""Return a string represntation of the compiler toolchain.""" """Return a string represntation of the compiler toolchain."""
if self.modules:
return "%s(%s)" % (
self.name, '\n '.join((str(s) for s in (self.cc, self.cxx, self.f77, self.fc, self.modules))))
else:
return "%s(%s)" % ( return "%s(%s)" % (
self.name, '\n '.join((str(s) for s in (self.cc, self.cxx, self.f77, self.fc)))) self.name, '\n '.join((str(s) for s in (self.cc, self.cxx, self.f77, self.fc))))

View file

@ -44,15 +44,15 @@
_imported_compilers_module = 'spack.compilers' _imported_compilers_module = 'spack.compilers'
_required_instance_vars = ['cc', 'cxx', 'f77', 'fc'] _required_instance_vars = ['cc', 'cxx', 'f77', 'fc']
_optional_instance_vars = ['module'] _optional_instance_vars = ['modules']
_default_order = ['gcc', 'intel', 'pgi', 'clang', 'xlc'] _default_order = ['gcc', 'intel', 'pgi', 'clang', 'xlc']
def _auto_compiler_spec(function): def _auto_compiler_spec(function):
def converter(cspec_like): def converter(cspec_like, *args):
if not isinstance(cspec_like, spack.spec.CompilerSpec): if not isinstance(cspec_like, spack.spec.CompilerSpec):
cspec_like = spack.spec.CompilerSpec(cspec_like) cspec_like = spack.spec.CompilerSpec(cspec_like)
return function(cspec_like) return function(cspec_like, *args)
return converter return converter

View file

@ -97,32 +97,6 @@ def concretize_version(self, spec):
def concretize_architecture(self, spec): def concretize_architecture(self, spec):
"""If the spec already had an architecture, return. Otherwise if
the root of the DAG has an architecture, then use that.
Otherwise take the system's default architecture.
Intuition: Architectures won't be set a lot, and generally you
want the host system's architecture. When architectures are
mised in a spec, it is likely because the tool requries a
cross-compiled component, e.g. for tools that run on BlueGene
or Cray machines. These constraints will likely come directly
from packages, so require the user to be explicit if they want
to mess with the architecture, and revert to the default when
they're not explicit.
"""
if spec.architecture is not None:
return False
if spec.root.architecture:
spec.architecture = spec.root.architecture
else:
spec.architecture = spack.architecture.sys_type()
assert(spec.architecture is not None)
return True # changed
def new_concretize_architecture(self, spec):
"""If the spec already has an architecture and it is a an architecture type, """If the spec already has an architecture and it is a an architecture type,
return. Otherwise, if it has an architecture that is a string type, generate an return. Otherwise, if it has an architecture that is a string type, generate an
architecture based on that type. If it has no architecture and the root of the architecture based on that type. If it has no architecture and the root of the

View file

@ -199,6 +199,7 @@ def get_config(category_name):
category.result_dict = _merge_dicts(category.result_dict, result) category.result_dict = _merge_dicts(category.result_dict, result)
else: else:
category.result_dict = result category.result_dict = result
return category.result_dict return category.result_dict
@ -208,7 +209,7 @@ def get_compilers_config(arch=None):
configuration""" configuration"""
global _compiler_by_arch global _compiler_by_arch
if not arch: if not arch:
arch = spack.architecture.sys_type() arch = str(spack.architecture.sys_type())
if arch in _compiler_by_arch: if arch in _compiler_by_arch:
return _compiler_by_arch[arch] return _compiler_by_arch[arch]
@ -305,7 +306,7 @@ def add_to_compiler_config(addition_dict, scope=None, arch=None):
"""Add compilerss to the configuration files""" """Add compilerss to the configuration files"""
if not arch: if not arch:
arch = spack.architecture.sys_type() arch = spack.architecture.sys_type()
add_to_config('compilers', { arch : addition_dict }, scope) add_to_config('compilers', { str(arch) : addition_dict }, scope)
clear_config_caches() clear_config_caches()