Merge pull request #139 from mathstuf/use-uname-for-arch

architecture: use uname if available
This commit is contained in:
Todd Gamblin 2015-10-29 00:01:30 -07:00
commit fec6674597

View File

@ -23,13 +23,12 @@
# Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
############################################################################## ##############################################################################
import os import os
import platform as py_platform import subprocess
from llnl.util.lang import memoized from llnl.util.lang import memoized
import spack import spack
import spack.error as serr import spack.error as serr
from spack.version import Version
class InvalidSysTypeError(serr.SpackError): class InvalidSysTypeError(serr.SpackError):
@ -59,22 +58,23 @@ def get_sys_type_from_environment():
return os.environ.get('SYS_TYPE') return os.environ.get('SYS_TYPE')
def get_mac_sys_type(): def get_sys_type_from_uname():
"""Return a Mac OS SYS_TYPE or None if this isn't a mac.""" """Return the architecture from uname."""
mac_ver = py_platform.mac_ver()[0] try:
if not mac_ver: arch_proc = subprocess.Popen(['uname', '-i'],
stdout=subprocess.PIPE)
arch, _ = arch_proc.communicate()
return arch.strip()
except:
return None return None
return "macosx_%s_%s" % (
Version(mac_ver).up_to(2), py_platform.machine())
@memoized @memoized
def sys_type(): def sys_type():
"""Returns a SysType for the current machine.""" """Returns a SysType for the current machine."""
methods = [get_sys_type_from_spack_globals, methods = [get_sys_type_from_spack_globals,
get_sys_type_from_environment, get_sys_type_from_environment,
get_mac_sys_type] get_sys_type_from_uname]
# search for a method that doesn't return None # search for a method that doesn't return None
sys_type = None sys_type = None