From: Martin Hermant Date: Mon, 13 Mar 2017 16:10:55 +0000 (+0100) Subject: aubio version : X-Git-Tag: 0.4.5~45^2~37 X-Git-Url: https://git.aubio.org/?a=commitdiff_plain;h=1eb8c0eccce9e1aef6ab34c734ec92d2d72bffff;p=aubio.git aubio version : aubio-c / aubio-py add git commit support --- diff --git a/python/lib/moresetuptools.py b/python/lib/moresetuptools.py index 7b0aa1b8..f611ad44 100644 --- a/python/lib/moresetuptools.py +++ b/python/lib/moresetuptools.py @@ -31,7 +31,13 @@ def get_aubio_version(): AUBIO_MINOR_VERSION, AUBIO_PATCH_VERSION])) - if AUBIO_VERSION_STATUS is not None: + AUBIO_GIT_SHA = get_git_revision_hash() + """ append sha to version in alpha release + """ + if '~alpha' in AUBIO_VERSION_STATUS : + if AUBIO_GIT_SHA: + AUBIO_VERSION_STATUS = '~git'+AUBIO_GIT_SHA + if AUBIO_VERSION_STATUS is not None : verstr += AUBIO_VERSION_STATUS return verstr @@ -39,11 +45,50 @@ def get_aubio_pyversion(): # convert to version for python according to pep 440 # see https://www.python.org/dev/peps/pep-0440/ verstr = get_aubio_version() - if '~alpha' in verstr: - verstr = verstr.split('~')[0] + 'a1' + if '~alpha' in verstr or '~git' in verstr: + verstr = verstr.split('~')[0] + '+a1' + gitsha = get_git_revision_hash(short=True) + if gitsha: + verstr+='.git.'+gitsha # TODO: add rc, .dev, and .post suffixes, add numbering return verstr + + +def get_git_revision_hash( short=True): + def which(program): + + def is_exe(fpath): + return os.path.isfile(fpath) and os.access(fpath, os.X_OK) + + fpath, fname = os.path.split(program) + if fpath: + if is_exe(program): + return program + else: + for path in os.environ["PATH"].split(os.pathsep): + path = path.strip('"') + exe_file = os.path.join(path, program) + if is_exe(exe_file): + return exe_file + + return None + if not which('git'): + print 'no git found on this system : can\'t get sha' + return "" + + import subprocess + this_file_dir = os.path.dirname(os.path.abspath(__file__)) + aubio_dir = os.path.join(this_file_dir, '..', '..') + aubio_dir = os.path.abspath(aubio_dir) + if not os.path.exists(aubio_dir): + raise SystemError("git / root folder not found") + gitcmd = ['git','-C',aubio_dir ,'rev-parse'] + if short: + gitcmd.append('--short') + gitcmd.append('HEAD') + return subprocess.check_output(gitcmd).strip() + # inspired from https://gist.github.com/abergmeier/9488990 def add_packages(packages, ext=None, **kw): """ use pkg-config to search which of 'packages' are installed """ diff --git a/setup.py b/setup.py index 0248a1a1..e02e48bb 100755 --- a/setup.py +++ b/setup.py @@ -6,7 +6,8 @@ from python.lib.moresetuptools import * # function to generate gen/*.{c,h} from python.lib.gen_external import generate_external, header, output_path -__version__ = get_aubio_pyversion() +__version__ = get_aubio_version() +__pip_version__ = get_aubio_pyversion() include_dirs = [] library_dirs = [] @@ -54,7 +55,7 @@ classifiers = [ ] distrib = setup(name='aubio', - version = __version__, + version = __pip_version__, packages = ['aubio'], package_dir = {'aubio':'python/lib/aubio'}, scripts = ['python/scripts/aubiocut'], diff --git a/src/wscript_build b/src/wscript_build index 62a8b705..433d0298 100644 --- a/src/wscript_build +++ b/src/wscript_build @@ -46,5 +46,5 @@ for target in build_features: # install headers, except _priv.h ones ctx.install_files('${INCLUDEDIR}/aubio/', - ctx.path.ant_glob('**/*.h', excl = ['**_priv.h', 'config.h']), + ctx.path.ant_glob('**/*.h', excl = ['**_priv.h']), relative_trick=True) diff --git a/wscript b/wscript index f8e9cc09..f713f4a7 100644 --- a/wscript +++ b/wscript @@ -17,6 +17,49 @@ APPNAME = 'aubio' # source VERSION for l in open('VERSION').readlines(): exec (l.strip()) +def get_git_revision_hash( short=True): + import os + def which(program): + def is_exe(fpath): + return os.path.isfile(fpath) and os.access(fpath, os.X_OK) + + fpath, fname = os.path.split(program) + if fpath: + if is_exe(program): + return program + else: + for path in os.environ["PATH"].split(os.pathsep): + path = path.strip('"') + exe_file = os.path.join(path, program) + if is_exe(exe_file): + return exe_file + + return None + + if not which('git'): + print 'no git found on this system : can\'t get sha' + return "" + + import subprocess + aubio_dir = os.path.abspath(os.curdir) + if not os.path.exists(aubio_dir): + raise SystemError("git / root folder not found") + gitcmd = ['git','-C',aubio_dir ,'rev-parse'] + if short: + gitcmd.append('--short') + gitcmd.append('HEAD') + return subprocess.check_output(gitcmd).strip() + +AUBIO_GIT_SHA = get_git_revision_hash() +""" append sha to version in alpha release +""" +if '~alpha' in AUBIO_VERSION_STATUS : + if AUBIO_GIT_SHA: + AUBIO_VERSION_STATUS = '~git'+AUBIO_GIT_SHA + + + + VERSION = '.'.join ([str(x) for x in [ AUBIO_MAJOR_VERSION, AUBIO_MINOR_VERSION, @@ -131,6 +174,12 @@ def configure(ctx): target_platform = ctx.options.target_platform ctx.env['DEST_OS'] = target_platform + ctx.define('AUBIO_VERSION',VERSION) + ctx.define('AUBIO_MAJOR_VERSION',AUBIO_MAJOR_VERSION) + ctx.define('AUBIO_MINOR_VERSION',AUBIO_MINOR_VERSION) + ctx.define('AUBIO_PATCH_VERSION',AUBIO_PATCH_VERSION) + ctx.define('AUBIO_VERSION_STATUS',AUBIO_VERSION_STATUS) + ctx.define('AUBIO_GIT_SHA',AUBIO_GIT_SHA) if ctx.options.build_type == "debug": ctx.define('DEBUG', 1) else: