X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/f98e0188777b3e2d229c968824b3e64307dae4e6..3b9310734cf6b29b35caff5dfbe64d88bc4789bf:/sdk/cwl/arvados_version.py diff --git a/sdk/cwl/arvados_version.py b/sdk/cwl/arvados_version.py index a24d53dad6..d13dd5ec53 100644 --- a/sdk/cwl/arvados_version.py +++ b/sdk/cwl/arvados_version.py @@ -7,15 +7,30 @@ import time import os import re +SETUP_DIR = os.path.dirname(__file__) or '.' + def git_latest_tag(): - gitinfo = subprocess.check_output( - ['git', 'describe', '--abbrev=0']).strip() - return str(gitinfo.decode('utf-8')) + gittags = subprocess.check_output(['git', 'tag', '-l']).split() + gittags.sort(key=lambda s: [int(u) for u in s.split(b'.')],reverse=True) + return str(next(iter(gittags)).decode('utf-8')) + +def choose_version_from(): + sdk_ts = subprocess.check_output( + ['git', 'log', '--first-parent', '--max-count=1', + '--format=format:%ct', os.path.join(SETUP_DIR, "../python")]).strip() + cwl_ts = subprocess.check_output( + ['git', 'log', '--first-parent', '--max-count=1', + '--format=format:%ct', SETUP_DIR]).strip() + if int(sdk_ts) > int(cwl_ts): + getver = os.path.join(SETUP_DIR, "../python") + else: + getver = SETUP_DIR + return getver def git_timestamp_tag(): gitinfo = subprocess.check_output( ['git', 'log', '--first-parent', '--max-count=1', - '--format=format:%ct', '.']).strip() + '--format=format:%ct', choose_version_from()]).strip() return str(time.strftime('.%Y%m%d%H%M%S', time.gmtime(int(gitinfo)))) def save_version(setup_dir, module, v): @@ -34,7 +49,7 @@ def get_version(setup_dir, module): else: try: save_version(setup_dir, module, git_latest_tag() + git_timestamp_tag()) - except subprocess.CalledProcessError: + except (subprocess.CalledProcessError, OSError): pass return read_version(setup_dir, module)