From 877c98a0add6fb3bce3e503098d120377012f6ec Mon Sep 17 00:00:00 2001 From: kali Date: Thu, 6 Sep 2012 05:54:03 +0900 Subject: add git version script --- .gitignore | 1 + MANIFEST.in | 1 + pkg/version.py | 104 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ setup.cfg | 1 - setup.py | 18 +++------- 5 files changed, 110 insertions(+), 15 deletions(-) create mode 100644 pkg/version.py diff --git a/.gitignore b/.gitignore index 26838e5c..23ffeead 100644 --- a/.gitignore +++ b/.gitignore @@ -16,3 +16,4 @@ man/ share/ src/leap.egg-info/ src/leap_client.egg-info +pkg/RELEASE_VERSION diff --git a/MANIFEST.in b/MANIFEST.in index 7feaa2b1..856d95ef 100644 --- a/MANIFEST.in +++ b/MANIFEST.in @@ -1,3 +1,4 @@ # ??? not needed from win include pkg/linux/polkit/* include docs/* +include pkg/RELEASE_VERSION diff --git a/pkg/version.py b/pkg/version.py new file mode 100644 index 00000000..aa872b29 --- /dev/null +++ b/pkg/version.py @@ -0,0 +1,104 @@ +# -*- coding: utf-8 -*- +# Author: Douglas Creager +# This file is placed into the public domain. + +# Calculates the current version number. If possible, this is the +# output of “git describe”, modified to conform to the versioning +# scheme that setuptools uses. If “git describe” returns an error +# (most likely because we're in an unpacked copy of a release tarball, +# rather than in a git working copy), then we fall back on reading the +# contents of the RELEASE-VERSION file. +# +# To use this script, simply import it your setup.py file, and use the +# results of get_git_version() as your package version: +# +# from version import * +# +# setup( +# version=get_git_version(), +# . +# . +# . +# ) +# +# This will automatically update the RELEASE-VERSION file, if +# necessary. Note that the RELEASE-VERSION file should *not* be +# checked into git; please add it to your top-level .gitignore file. +# +# You'll probably want to distribute the RELEASE-VERSION file in your +# sdist tarballs; to do this, just create a MANIFEST.in file that +# contains the following line: +# +# include RELEASE-VERSION + +__all__ = ("get_git_version") + +from subprocess import Popen, PIPE + + +def call_git_describe(abbrev=4): + try: + p = Popen(['git', 'describe', '--abbrev=%d' % abbrev], + stdout=PIPE, stderr=PIPE) + p.stderr.close() + line = p.stdout.readlines()[0] + return line.strip() + + except: + return None + + +def read_release_version(): + try: + f = open("pkg/RELEASE_VERSION", "r") + + try: + version = f.readlines()[0] + return version.strip() + + finally: + f.close() + + except: + return None + + +def write_release_version(version): + f = open("pkg/RELEASE_VERSION", "w") + f.write("%s\n" % version) + f.close() + + +def get_git_version(abbrev=4): + # Read in the version that's currently in RELEASE-VERSION. + + release_version = read_release_version() + + # First try to get the current version using “git describe”. + + version = call_git_describe(abbrev) + + # If that doesn't work, fall back on the value that's in + # RELEASE-VERSION. + + if version is None: + version = release_version + + # If we still don't have anything, that's an error. + + if version is None: + raise ValueError("Cannot find the version number!") + + # If the current version is different from what's in the + # RELEASE-VERSION file, update the file to be current. + + if version != release_version: + write_release_version(version) + + # Finally, return the current version. + + return version + + +if __name__ == "__main__": + print get_git_version() diff --git a/setup.cfg b/setup.cfg index 01bb9544..3c2fdf51 100644 --- a/setup.cfg +++ b/setup.cfg @@ -1,3 +1,2 @@ [egg_info] tag_build = dev -tag_svn_revision = true diff --git a/setup.py b/setup.py index eea9b801..19df86e3 100755 --- a/setup.py +++ b/setup.py @@ -16,9 +16,7 @@ except ImportError: import os from pkg import utils - -# XXX get version from somewhere else -version = '0.1.0' +from pkg import version setup_root = os.path.dirname(__file__) sys.path.insert(0, os.path.join(setup_root, "src")) @@ -42,7 +40,7 @@ trove_classifiers = [ setup( name='leap-client', package_dir={"": "src"}, - version=version, + version=version.get_git_version(), description="the internet encryption toolkit", long_description=( "Desktop Client for the LEAP Platform." @@ -57,14 +55,6 @@ setup( "and has an enhanced level of security." ), classifiers=trove_classifiers, - - # XXX FIXME DEPS - # deps: pyqt - - # build_deps: pyqt-utils - # XXX fixme move resource reloading - # to this setup script. - install_requires=utils.parse_requirements(), test_suite='nose.collector', @@ -74,8 +64,8 @@ setup( "nose", "mock"], - keywords='leap, client, qt, encryption', - author='leap project', + keywords='leap, client, qt, encryption, proxy', + author='The LEAP project', author_email='info@leap.se', url='http://leap.se', license='GPL', -- cgit v1.2.3