You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
74 lines
1.9 KiB
74 lines
1.9 KiB
import importlib
|
|
import os
|
|
import re
|
|
import sys
|
|
|
|
|
|
def ensure_dir_exists(path):
|
|
"""
|
|
Check whether the directory exists and creates it if not.
|
|
"""
|
|
assert path is not None
|
|
try:
|
|
os.makedirs(path)
|
|
except FileExistsError:
|
|
pass
|
|
except OSError as exception:
|
|
if exception.errno != errno.EEXIST:
|
|
raise IOError("Cannot create directory: " + path)
|
|
except BaseException:
|
|
raise IOError("Path " + path + " seems not valid")
|
|
|
|
|
|
def parse_carl_version(version_string):
|
|
"""
|
|
Parses the version of carl.
|
|
|
|
:param version_string: String containing version information.
|
|
:return: Tuple (version, commit)
|
|
"""
|
|
split = version_string.split('-')
|
|
version = split[0]
|
|
commit = ""
|
|
if len(split) > 1:
|
|
commit = split[1]
|
|
return version, commit
|
|
|
|
|
|
def obtain_version():
|
|
"""
|
|
Obtains the version as specified in pycarl.
|
|
|
|
:return: Version
|
|
"""
|
|
verstr = "unknown"
|
|
try:
|
|
verstrline = open('lib/pycarl/_version.py', "rt").read()
|
|
except EnvironmentError:
|
|
pass # Okay, there is no version file.
|
|
else:
|
|
VSRE = r"^__version__ = ['\"]([^'\"]*)['\"]"
|
|
mo = re.search(VSRE, verstrline, re.M)
|
|
if mo:
|
|
verstr = mo.group(1)
|
|
else:
|
|
raise RuntimeError("unable to find version in pycarl/_version.py")
|
|
return verstr
|
|
|
|
|
|
def load_cmake_config(path):
|
|
"""
|
|
Load cmake config.
|
|
:param path: Path.
|
|
:return: Configuration.
|
|
"""
|
|
if sys.version_info[1] >= 5:
|
|
# Method for Python >= 3.5
|
|
spec = importlib.util.spec_from_file_location("genconfig", path)
|
|
conf = importlib.util.module_from_spec(spec)
|
|
spec.loader.exec_module(conf)
|
|
return conf
|
|
else:
|
|
# Deprecated method for Python <= 3.4
|
|
from importlib.machinery import SourceFileLoader
|
|
return SourceFileLoader("genconfig", path).load_module()
|