New folder that will hold operating system subclasses
This commit is contained in:
parent
22bf4bc080
commit
1367ccab93
3 changed files with 70 additions and 0 deletions
0
lib/spack/spack/operating_system/__init__.py
Normal file
0
lib/spack/spack/operating_system/__init__.py
Normal file
25
lib/spack/spack/operating_system/linux_distro.py
Normal file
25
lib/spack/spack/operating_system/linux_distro.py
Normal file
|
@ -0,0 +1,25 @@
|
|||
import platform as py_platform
|
||||
import spack
|
||||
from spack.architecture import Platform, OperatingSystem
|
||||
|
||||
class LinuxDistro(OperatingSystem):
|
||||
""" This class will represent the autodetected operating system
|
||||
for a Linux System. Since there are many different flavors of
|
||||
Linux, this class will attempt to encompass them all through
|
||||
autodetection using the python module platform and the method
|
||||
platform.dist()
|
||||
"""
|
||||
def __init__(self):
|
||||
def detect_operating_system():
|
||||
name = py_platform.dist()[0]
|
||||
version = py_platform.dist()[1]
|
||||
return name, version
|
||||
|
||||
name, version = detect_operating_system()
|
||||
|
||||
super(LinuxDistro, self).__init__(name, version)
|
||||
|
||||
@property
|
||||
def compiler_strategy(self):
|
||||
return "PATH"
|
||||
|
45
lib/spack/spack/operating_system/mac_osx.py
Normal file
45
lib/spack/spack/operating_system/mac_osx.py
Normal file
|
@ -0,0 +1,45 @@
|
|||
""" This class represents the MAC_OSX operating system. This will be auto
|
||||
detected using the python platform.mac_ver. The MAC_OSX platform
|
||||
will be represented using the major version operating system name, i.e
|
||||
el capitan, yosemite...etc.
|
||||
"""
|
||||
|
||||
import spack
|
||||
import os
|
||||
import platform as py_platform
|
||||
from spack.architecture import Platform, OperatingSystem
|
||||
|
||||
class MacOSX(OperatingSystem):
|
||||
def __init__(self):
|
||||
""" Autodetects the mac version from a dictionary. Goes back as
|
||||
far as 10.6 snowleopard. If the user has an older mac then
|
||||
the version will just be a generic mac_os.
|
||||
"""
|
||||
|
||||
def get_mac_release():
|
||||
mac_releases = {'10.6': "snowleopard",
|
||||
"10.7": "lion",
|
||||
"10.8": "mountainlion",
|
||||
"10.9": "mavericks",
|
||||
"10.10": "yosemite",
|
||||
"10.11": "elcapitan"}
|
||||
|
||||
mac_ver = py_platform.mac_ver()[0][:-2]
|
||||
try:
|
||||
name = mac_releases[mac_ver]
|
||||
return name, mac_ver
|
||||
except KeyError:
|
||||
name = "mac_os"
|
||||
return name, mac_ver
|
||||
|
||||
name, version = get_mac_release()
|
||||
|
||||
super(MacOSX, self).__init__(name, version)
|
||||
|
||||
@property
|
||||
def compiler_strategy(self):
|
||||
return "PATH"
|
||||
|
||||
|
||||
|
||||
|
Loading…
Reference in a new issue