1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72
|
from __future__ import print_function
import os
import re
from datetime import datetime
from setuptools import setup
pkg_version = ''
src_dir = os.path.realpath(__file__)
have_src_dir = os.path.isfile(src_dir)
i = 0
while (i < 2 and have_src_dir):
i += 1
src_dir = os.path.dirname(src_dir)
have_src_dir = os.path.isdir(src_dir)
if (not have_src_dir):
raise OSError('Could not find SRC_DIR, got: ' + str(src_dir))
# parse root CMakeLists.txt and Code/cmake/Modules/RDKitUtils.cmake
root_cmakelists_path = os.path.join(src_dir, 'CMakeLists.txt')
rdkitutils_path = os.path.join(src_dir, 'Code', 'cmake',
'Modules', 'RDKitUtils.cmake')
var_dict = {}
for file in (root_cmakelists_path, rdkitutils_path):
with open(file, 'rt') as hnd:
# vars we want to read
var_set = set(['RDKit_Year', 'RDKit_Month', 'RDKit_Revision',
'RDKit_ABI', 'RDKit_RELEASENAME'])
line = hnd.readline()
while (line):
# is this an uncommented set command?
m = re.match('^\s*set\s*\((\w+)\s*\"(.*)\"\s*\)',
line, re.IGNORECASE)
# if it is
if (m is not None):
# extract the var name
var_name = m.group(1)
if (var_name in var_set):
# if the var name is in the vars we want to read
var_value = m.group(2)
keepLooping = True
while (keepLooping):
# recursively replace variables we already found
m = re.match('^.*\${(\w+)}', var_value)
keepLooping = (m is not None)
if (keepLooping):
v = var_dict.get(m.group(1))
# if the variable is not defined, remove
# the preceding dot
eat_dot = 0
if (v is None):
v = ''
eat_dot = 1
# replace variable name with its value
s = m.start(1) - (2 + eat_dot)
e = m.end(1) + 1
var_value = var_value[:s] + v + var_value[e:]
# assign variable value and keep parsing
var_dict[var_name] = var_value
line = hnd.readline()
d = datetime.today().strftime('%Y%m%d')
rdkitVersion = var_dict.get('RDKit_RELEASENAME')
if (rdkitVersion is not None):
if rdkitVersion.endswith('.dev1'):
pkg_version = rdkitVersion[:-1] + d
else:
pkg_version = rdkitVersion
else:
# if extracting rdkitVersion somehow failed, use the date
pkg_version = d
print('rdkitVersion:', pkg_version)
setup(rdkitVersion = pkg_version)
|