summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorMario Melara <maamelara@gmail.com>2016-02-16 15:21:36 -0800
committerMario Melara <maamelara@gmail.com>2016-02-16 15:21:36 -0800
commit19dca4bcc9dcdd902fb5490b4ee49b9dc92aa5ba (patch)
tree83f647e23159c803ac7241c00b732d64d803dbd9 /lib
parent35a602baaf39fb5056f3dbb7eccbd638e126159f (diff)
downloadspack-19dca4bcc9dcdd902fb5490b4ee49b9dc92aa5ba.tar.gz
spack-19dca4bcc9dcdd902fb5490b4ee49b9dc92aa5ba.tar.bz2
spack-19dca4bcc9dcdd902fb5490b4ee49b9dc92aa5ba.tar.xz
spack-19dca4bcc9dcdd902fb5490b4ee49b9dc92aa5ba.zip
Added some _cmp_key methods to OperatingSystem class, and also changed the way Platforms are compared. Created a mini inherited class named Arch that inherits from namedtuple. The reason for this is to override the namedtuple __str__ method to make arch tuples look prettier when printed out. Rather than Arch(platform= ... ) it prints to platform-os-target which makes directory paths to packages look cleaner.
Diffstat (limited to 'lib')
-rw-r--r--lib/spack/spack/architecture.py21
1 files changed, 18 insertions, 3 deletions
diff --git a/lib/spack/spack/architecture.py b/lib/spack/spack/architecture.py
index 0e006bdf40..3cbce5dc52 100644
--- a/lib/spack/spack/architecture.py
+++ b/lib/spack/spack/architecture.py
@@ -22,6 +22,7 @@
# along with this program; if not, write to the Free Software Foundation,
# Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
##############################################################################
+from collections import namedtuple
import imp
import platform as py_platform
import inspect
@@ -178,7 +179,7 @@ class Platform(object):
self.operating_sys[name] = operating_system
def operating_system(self, name):
- if name == 'default':
+ if name == 'default_os':
name = self.default_os
if name == 'front_os':
name = self.front_os
@@ -203,9 +204,10 @@ class Platform(object):
return self.name
def _cmp_key(self):
- return (self.name, (_cmp_key(t) for t in self.targets.values()))
-
+ return (self.name, (_cmp_key(t) for t in self.targets.values()),
+ (_cmp_key(o) for o in self.operating_sys.values()))
+@key_ordering
class OperatingSystem(object):
""" Operating System class. It will include the name and version.
The biggest attribute to this class will be the compiler finding
@@ -222,6 +224,19 @@ class OperatingSystem(object):
def __repr__(self):
return self.__str__()
+ def _cmp_key(self):
+ return (self.name, self.version)
+
+
+class Arch(namedtuple("Arch", "platform platform_os target")):
+ """ namedtuple for Architecture. Will have it's own __str__ method
+ to make printing out the tuple easier and also won't make directory
+ paths look odd """
+ __slots__ = ()
+
+ def __str__(self):
+ return (self.platform.name +"-"+
+ self.platform_os.name + "-" + self.target.name)
@memoized
def all_platforms():