made yaml format backwards compatible

This commit is contained in:
Gregory Becker 2016-05-26 11:14:05 -07:00
parent 3b675d8b70
commit b968603a57
3 changed files with 60 additions and 14 deletions

View File

@ -90,7 +90,7 @@
from spack.util.environment import get_path
from spack.util.multiproc import parmap
import spack.error as serr
import spack.platforms
class InvalidSysTypeError(serr.SpackError):
def __init__(self, sys_type):
@ -462,21 +462,27 @@ def arch_from_dict(d):
"""
arch = Arch()
if d is None:
return None
platform_dict = d['platform']
os_dict = d['platform_os']
target_dict = d['target']
if isinstance(d, basestring):
# We have an old spec using a string for the architecture
arch.platform = spack.platforms.spack_compatibility.SpackCompatibility()
arch.platform_os = arch.platform.operating_system('default')
arch.target = Target(d)
platform = _platform_from_dict(platform_dict) if platform_dict else None
target = _target_from_dict(target_dict) if os_dict else None
platform_os = _operating_system_from_dict(os_dict) if os_dict else None
arch.platform = platform
arch.target = target
arch.platform_os = platform_os
arch.os_string = None
arch.target_string = None
else:
if d is None:
return None
platform_dict = d['platform']
os_dict = d['platform_os']
target_dict = d['target']
arch.os_string = None
arch.target_string = None
arch.platform = _platform_from_dict(platform_dict) if platform_dict else None
arch.target = _target_from_dict(target_dict) if os_dict else None
arch.platform_os = _operating_system_from_dict(os_dict) if os_dict else None
arch.os_string = None
arch.target_string = None
return arch

View File

@ -0,0 +1,17 @@
import re
import os
from spack.architecture import OperatingSystem
class PreV1(OperatingSystem):
""" Compute Node Linux (CNL) is the operating system used for the Cray XC
series super computers. It is a very stripped down version of GNU/Linux.
Any compilers found through this operating system will be used with
modules. If updated, user must make sure that version and name are
updated to indicate that OS has been upgraded (or downgraded)
"""
def __init__(self):
name = 'PreVersion1.0'
version = '1.0'
super(PreV1, self).__init__(name, version)

View File

@ -0,0 +1,23 @@
import subprocess
from spack.architecture import Platform
from spack.operating_systems.pre_v1
class SpackCompatibility(Platform):
priority = 9999
# We don't use the normal target getters for this platform
# Instead, targets are added directly when parsing the yaml
# OS is the spack backwards compatibility os.
front_os = 'PreVersion1.0'
back_os = 'PreVersion1.0'
default_os = 'PreVersion1.0'
def __init__(self):
super(SpackCompatibility, self).__init__('spack_compatibility')
sc_os = spack.operating_systems.pre_v1.PreV1()
self.add_operating_system(sc_os.name, sc_os)
@classmethod
def detect(self):
return True