From 4c7dfca0af6de9eac08b7c81f54e5f79c0bcab01 Mon Sep 17 00:00:00 2001 From: Paolo Tosco Date: Tue, 7 Nov 2017 13:41:51 +0000 Subject: [PATCH] changes required to allow replacing the obsolete __conda_version__ in conda-rdkit (#1644) * - changes which allow replacing the obsolete __conda_version__ * - Reverted CMakeLists.txt - Reverted Code/cmake/Modules/RDKitUtils.cmake - Reverted (i.e., removed) Code/cmake/Modules/RDKitVersion.cmake - Moved to Conda subdir and adapted pkg_version.py * - Removing debugging printouts * - renamed Conda to build_support --- build_support/pkg_version.py | 72 ++++++++++++++++++++++++++++++++++++ 1 file changed, 72 insertions(+) create mode 100644 build_support/pkg_version.py diff --git a/build_support/pkg_version.py b/build_support/pkg_version.py new file mode 100644 index 000000000..b3906030c --- /dev/null +++ b/build_support/pkg_version.py @@ -0,0 +1,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)