summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitignore1
-rw-r--r--MANIFEST.in1
-rw-r--r--pkg/version.py104
-rw-r--r--setup.cfg1
-rwxr-xr-xsetup.py18
5 files changed, 110 insertions, 15 deletions
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 <dcreager@dcreager.net>
+# 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',