Skip to content

Commit

Permalink
Improved versioning
Browse files Browse the repository at this point in the history
This patch adds versioning system which is consistent
with other OpenStack projects.

Change-Id: Ia835bf21f800c8c7c65f282a719dbf399d24bb80
  • Loading branch information
paramite committed Sep 2, 2014
1 parent 8e94c5c commit ea2a4f6
Show file tree
Hide file tree
Showing 2 changed files with 90 additions and 20 deletions.
25 changes: 14 additions & 11 deletions bin/release.sh
Original file line number Diff line number Diff line change
@@ -1,19 +1,22 @@
#!/usr/bin/env bash
#

SCRIPT_PATH="${BASH_SOURCE[0]}"
SCRIPT_DIR=`dirname $SCRIPT_PATH`
cd $SCRIPT_DIR/..

git reset --hard
git submodule sync
git submodule update --init
git status -s | grep "." && ( echo "Contains unknown files" ; exit 1 )

if [ "$1" = "release" ] ; then
sed -i -e 's/FINAL=False/FINAL=True/g' packstack/version.py
SNAPTAG=""
else
SNAPTAG=$(git log --oneline | wc -l)
sed -i -e "s/SNAPTAG=None/SNAPTAG=${SNAPTAG}/g" packstack/version.py
if [ -n "$1" ] ; then
git tag -a -m $1 $1
fi

python setup.py setopt -o tag_build -s "$SNAPTAG" -c egg_info
VERSION=`python setup.py --version`

sed -i -e "s/RESERVE_STR = None/RESERVE_STR = '$VERSION'/g" packstack/version.py
python setup.py sdist

if [ -n "$1" ] ; then
echo "Packstack was released with tag '$1'. Please don't forget to push tag upstream (git push --tags)."
fi

git checkout packstack/version.py
85 changes: 76 additions & 9 deletions packstack/version.py
Original file line number Diff line number Diff line change
@@ -1,14 +1,81 @@
# -*- coding: utf-8 -*-

import os
import pkg_resources

from .installer.utils import execute


VERSION = ['2014', '2']
OS_RELEASE = 'Juno'
RESERVE_STR = None


def vr_from_git():
"""Returns VR string calculated from GIT repo."""
proj_dir = os.path.dirname(os.path.dirname(__file__))
rc, tag = execute(
'git describe --exact-match',
workdir=proj_dir,
use_shell=True,
can_fail=False,
log=False
)
if not rc:
# we are on tagged commit, so let's use the tag as VR string
return tag.strip()

rc, description = execute(
'git describe --always',
workdir=proj_dir,
use_shell=True,
log=False
)
if '-' in description:
# last tag has been found
tag, snap_tag, git_hash = description.split('-')
else:
# no tag has been found
rc, git_hash = execute(
'git log -n1 --pretty=format:%h',
workdir=proj_dir,
use_shell=True,
log=False
)
git_hash = 'g{0}'.format(git_hash)
rc, snap_tag = execute(
'git log --oneline | wc -l',
workdir=proj_dir,
use_shell=True,
log=False
)
return '{0}.dev{1}.{2}'.format(
'.'.join(VERSION),
snap_tag.strip(),
git_hash.strip(),
)


def vr_from_setuptools():
"""Returns VR string fetched from setuptools."""
requirement = pkg_resources.Requirement.parse('packstack')
provider = pkg_resources.get_provider(requirement)
return provider.version

VERSION = ['2014', '1', '1']
FINAL=False
RELEASE="Icehouse"
SNAPTAG=None

def release_string():
return RELEASE
return OS_RELEASE


def version_string():
if FINAL:
return '.'.join(filter(None, VERSION))
else:
return '.'.join(filter(None, VERSION))+"dev{0}".format(SNAPTAG)
try:
version = vr_from_git()
except Exception:
# Not a git repo, so get version from setuptools
try:
version = vr_from_setuptools()
except Exception:
# In case of problem with setuptools, return version
# saved by release.sh or VERSION if nothing was saved
version = RESERVE_STR if RESERVE_STR else '.'.join(VERSION)
return version

0 comments on commit ea2a4f6

Please sign in to comment.