Skip to content
Snippets Groups Projects
Commit 0cf03518 authored by Massimiliano Culpo's avatar Massimiliano Culpo
Browse files

reverted deletion of the wrong `architecture.py`

parent 603f5e69
No related branches found
No related tags found
No related merge requests found
......@@ -22,25 +22,68 @@
# along with this program; if not, write to the Free Software Foundation,
# Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
##############################################################################
import os
import re
import platform
import sys
from llnl.util.lang import memoized
import spack
import spack.error as serr
def os_is_in(*args):
"""
Return True if any element in the list is equal to sys.platform, False otherwise
:param args: list of names to be checked
:return: True or False
"""
return any(map(lambda x: x == sys.platform, args))
class InvalidSysTypeError(serr.SpackError):
def __init__(self, sys_type):
super(InvalidSysTypeError, self).__init__(
"Invalid sys_type value for Spack: " + sys_type)
def os_is_not_in(*args):
"""
Return True if none of the elements in the list is equal to sys.platform, False otherwise
class NoSysTypeError(serr.SpackError):
def __init__(self):
super(NoSysTypeError, self).__init__(
"Could not determine sys_type for this machine.")
:param args: list of names to be checked
:return: True or False
"""
return not os_is_in(*args)
def get_sys_type_from_spack_globals():
"""Return the SYS_TYPE from spack globals, or None if it isn't set."""
if not hasattr(spack, "sys_type"):
return None
elif hasattr(spack.sys_type, "__call__"):
return spack.sys_type()
else:
return spack.sys_type
def get_sys_type_from_environment():
"""Return $SYS_TYPE or None if it's not defined."""
return os.environ.get('SYS_TYPE')
def get_sys_type_from_platform():
"""Return the architecture from Python's platform module."""
sys_type = platform.system() + '-' + platform.machine()
sys_type = re.sub(r'[^\w-]', '_', sys_type)
return sys_type.lower()
@memoized
def sys_type():
"""Returns a SysType for the current machine."""
methods = [get_sys_type_from_spack_globals,
get_sys_type_from_environment,
get_sys_type_from_platform]
# search for a method that doesn't return None
sys_type = None
for method in methods:
sys_type = method()
if sys_type: break
# Couldn't determine the sys_type for this machine.
if sys_type is None:
return "unknown_arch"
if not isinstance(sys_type, basestring):
raise InvalidSysTypeError(sys_type)
return sys_type
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment