Dynamic version and Makefile target to generate a distribution
The version is extracted from the last tag name minus the 'release/' prefix. * AUTHORS: Add mysel as contributor. * setup.py: Add a function to get version from extracted version.in file or from the last tag name. * Makefile: Add a target to generate the version.in file from the last tag name. * .gitignore: Ignore the version.in file.
This commit is contained in:
parent
5024751d3d
commit
5730a97728
4 changed files with 48 additions and 6 deletions
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -1,4 +1,5 @@
|
||||||
*~
|
*~
|
||||||
*#
|
*#
|
||||||
*.pyc
|
*.pyc
|
||||||
|
version.in
|
||||||
build/
|
build/
|
||||||
|
|
2
AUTHORS
2
AUTHORS
|
@ -3,4 +3,4 @@ Authors
|
||||||
|
|
||||||
Gwenaël Rémond <gremond@cadoles.com> lead developer
|
Gwenaël Rémond <gremond@cadoles.com> lead developer
|
||||||
Emmanuel Garette <egarette@cadoles.com> contributor
|
Emmanuel Garette <egarette@cadoles.com> contributor
|
||||||
|
Daniel Dehennin <daniel.dehennin@ac-dijon.fr> contributor
|
||||||
|
|
25
Makefile
25
Makefile
|
@ -1,5 +1,7 @@
|
||||||
#!/usr/bin/make
|
#!/usr/bin/make
|
||||||
|
|
||||||
|
PACKAGE := tiramisu
|
||||||
|
|
||||||
INSTALL := install
|
INSTALL := install
|
||||||
INSTALL_DATA := install -m 644
|
INSTALL_DATA := install -m 644
|
||||||
INSTALL_PROGRAM := install -m 755
|
INSTALL_PROGRAM := install -m 755
|
||||||
|
@ -10,16 +12,31 @@ ifneq ($(DESTDIR),)
|
||||||
PYTHON_OPTS += --root $(DESTDIR)
|
PYTHON_OPTS += --root $(DESTDIR)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
all: test
|
LAST_TAG := $(shell git describe --tags --abbrev=0)
|
||||||
|
VERSION := $(shell echo $(LAST_TAG) | awk -F'/' '{print $$2}' || true)
|
||||||
|
VERSION_FILE := version.in
|
||||||
|
|
||||||
|
all:
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
$(RM) -r build
|
$(RM) -r build
|
||||||
$(RM) -r tiramisu.egg-info/
|
$(RM) -r tiramisu.egg-info/
|
||||||
|
|
||||||
test: clean
|
test: clean
|
||||||
py.test
|
py.test
|
||||||
|
|
||||||
install:
|
install:
|
||||||
python setup.py install --no-compile $(PYTHON_OPTS)
|
python setup.py install --no-compile $(PYTHON_OPTS)
|
||||||
|
|
||||||
.PHONY: all clean test install
|
# List in .PHONY to force generation at each call
|
||||||
|
version.in:
|
||||||
|
@if test -n $(VERSION) ; then \
|
||||||
|
echo $(VERSION) > $(VERSION_FILE) ; \
|
||||||
|
fi
|
||||||
|
|
||||||
|
dist: version.in
|
||||||
|
git archive --format=tar --prefix $(PACKAGE)-$(VERSION)/ -o $(PACKAGE)-$(VERSION).tar $(LAST_TAG) \
|
||||||
|
&& tar --xform "s,\(.*\),$(PACKAGE)-$(VERSION)/\1," -f $(PACKAGE)-$(VERSION).tar -r version.in \
|
||||||
|
&& gzip -9 $(PACKAGE)-$(VERSION).tar
|
||||||
|
|
||||||
|
.PHONY: all clean test install version.in dist
|
||||||
|
|
26
setup.py
26
setup.py
|
@ -2,11 +2,35 @@
|
||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
from distutils.core import setup
|
from distutils.core import setup
|
||||||
|
|
||||||
|
import os
|
||||||
|
|
||||||
|
def fetch_version():
|
||||||
|
"""Get version from version.in or latest git tag"""
|
||||||
|
version_file='version.in'
|
||||||
|
version = "0.0"
|
||||||
|
git_last_tag_cmd = ['git', 'describe', '--tags', '--abbrev=0']
|
||||||
|
|
||||||
|
try:
|
||||||
|
if os.path.isfile(version_file):
|
||||||
|
version=file(version_file).readline().strip()
|
||||||
|
elif os.path.isdir('.git'):
|
||||||
|
popen = subprocess.Popen(git_last_tag_cmd, stdout=subprocess.PIPE)
|
||||||
|
out, ret = popen.communicate()
|
||||||
|
for line in out.split('\n'):
|
||||||
|
if line:
|
||||||
|
version = line.lstrip('release/')
|
||||||
|
break
|
||||||
|
except OSError:
|
||||||
|
pass # Failing is fine, we just can't print the version then
|
||||||
|
|
||||||
|
return version
|
||||||
|
|
||||||
|
|
||||||
setup(
|
setup(
|
||||||
author='Gwenaël Rémond',
|
author='Gwenaël Rémond',
|
||||||
author_email='gremond@cadoles.com',
|
author_email='gremond@cadoles.com',
|
||||||
name='tiramisu',
|
name='tiramisu',
|
||||||
version='0.1',
|
version=fetch_version(),
|
||||||
description='configuration management tool',
|
description='configuration management tool',
|
||||||
url='http://labs.libre-entreprise.org/projects/tiramisu',
|
url='http://labs.libre-entreprise.org/projects/tiramisu',
|
||||||
packages=['tiramisu']
|
packages=['tiramisu']
|
||||||
|
|
Loading…
Reference in a new issue