diff options
author | Mario Melara <maamelara@gmail.com> | 2016-02-16 15:21:36 -0800 |
---|---|---|
committer | Mario Melara <maamelara@gmail.com> | 2016-02-16 15:21:36 -0800 |
commit | 19dca4bcc9dcdd902fb5490b4ee49b9dc92aa5ba (patch) | |
tree | 83f647e23159c803ac7241c00b732d64d803dbd9 /lib | |
parent | 35a602baaf39fb5056f3dbb7eccbd638e126159f (diff) | |
download | spack-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.py | 21 |
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(): |