From 339da1da3d7f034595344f72f5d95e3fea0087f5 Mon Sep 17 00:00:00 2001
From: Todd Gamblin <tgamblin@llnl.gov>
Date: Wed, 4 Nov 2015 07:46:17 -0800
Subject: [PATCH] Make architecture reflect OS *and* machine.  Use Python's
 platform module.

---
 lib/spack/spack/architecture.py | 19 ++++++++-----------
 1 file changed, 8 insertions(+), 11 deletions(-)

diff --git a/lib/spack/spack/architecture.py b/lib/spack/spack/architecture.py
index 05ac5d6f35..6c874e30be 100644
--- a/lib/spack/spack/architecture.py
+++ b/lib/spack/spack/architecture.py
@@ -23,7 +23,8 @@
 # Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
 ##############################################################################
 import os
-import subprocess
+import re
+import platform
 
 from llnl.util.lang import memoized
 
@@ -58,15 +59,11 @@ def get_sys_type_from_environment():
     return os.environ.get('SYS_TYPE')
 
 
-def get_sys_type_from_uname():
-    """Return the architecture from uname."""
-    try:
-        arch_proc = subprocess.Popen(['uname', '-i'],
-            stdout=subprocess.PIPE)
-        arch, _ = arch_proc.communicate()
-        return arch.strip()
-    except:
-        return None
+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
@@ -74,7 +71,7 @@ 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_uname]
+               get_sys_type_from_platform]
 
     # search for a method that doesn't return None
     sys_type = None
-- 
GitLab