Subversion Repositories pub

Compare Revisions

Ignore whitespace Rev 610 → Rev 611

/relevation/trunk/GNUmakefile
4,7 → 4,7
DESTDIR:=
 
PKG=relevation
VERSION=$(shell printf 'import relevation\nprint relevation.__version__' | python - && $(RM) $(PKG).pyc)
VERSION=$(shell bash devtools/relver.bash 2>/dev/null | awk '{ print $$1 }')
PKGVER=$(PKG)-$(VERSION)
PACKAGER:=$(shell finger -lp `echo $USER` 2>/dev/null | head -n1 | cut -d: -f3)
ifeq ($(PACKAGER),)
14,43 → 14,101
--exclude=*.swp --exclude=*.pyo --exclude=*.pyc \
--exclude=manpage.html --exclude=manpage.pdf
 
IS_RELEASE=$(shell printf 'import relevation\nif not relevation.RELEASE:\n\traise Exception("RELEASE is False")' | python - )
 
 
INSTALLROOT=$(DESTDIR)$(prefix)
MANROOT=$(INSTALLROOT)/share/man
# Where to install additional packages
PYTHONROOT=$(DESTDIR)$(shell python -c "import sys;from distutils import sysconfig; print sysconfig.get_python_lib(0,0,prefix='$(prefix)')")
DUSETUP=python setup.py # Distutils' setup
# Debian derived systems need special treatment for clean uninstalls
# since it uses different than standard directories
INSTALL_LAYOUT=
ifeq ($(findstring dist-packages,$(PYTHONROOT)),dist-packages)
INSTALL_LAYOUT=--install-layout=deb
endif
 
 
all: $(PKG).1
@echo
@echo "########################################################"
@echo "# TARGETS:"
@echo "# install"
@echo "# uninstall"
@echo "# zip (-> $(PKGVER).zip)"
@echo "# tarball (-> $(PKGVER).tar.gz)"
@echo "# rpm"
@echo "# dist (-> tarball + zip)"
@echo "# clean"
@echo "# distclean"
@echo "# testman Displays compiled manpage"
@echo "# test_min_python Find min. Python version required"
@echo "########################################################"
@echo
 
testman:
docbook-to-man manpage.sgml | nroff -man | less
docbook-to-man manpage_source.sgml | nroff -man | less
 
clean:
-$(RM) *.pyc *.pyo manpage.html manpage.pdf $(PKG).spec
testmake:
@echo VERSION=$(VERSION)
@echo PKGVER=$(PKGVER)
@echo PACKAGER=$(PACKAGER)
@echo prefix=$(prefix)
@echo DESTDIR=$(DESTDIR)
@echo INSTALLROOT=$(INSTALLROOT)
@echo MANROOT=$(MANROOT)
@echo PYTHONROOT=$(PYTHONROOT)
@echo INSTALL_LAYOUT=$(INSTALL_LAYOUT)
 
distclean: clean
-$(RM) $(PKGVER).tar.gz $(PKGVER).zip
-$(RM) -r dist build $(PKGVER)/
test_min_python: pyqver2.py
python pyqver2.py -v -m 2.4 src/$(PKG).py src/$(PKG)/*.py
 
install:
install -D -m755 $(PKG).py $(INSTALLROOT)/bin/$(PKG)
install -D -m644 $(PKG).1 $(MANROOT)/man1/$(PKG).1
# Extra tools
install -d $(INSTALLROOT)/share/doc/$(PKG)/extra
for tool in gui.py devtools/*.py; do \
install -D -m755 $$tool $(INSTALLROOT)/share/doc/$(PKG)/extra/ ; \
done
install: setup.py
$(DUSETUP) install --prefix=$(DESTDIR)$(prefix) $(INSTALL_LAYOUT)
 
# There's no distutils uninstall
uninstall:
-$(RM) $(INSTALLROOT)/bin/$(PKG) $(INSTALLROOT)/share/man/man1/$(PKG).1
-for tool in gui.py devtools/*.py; do \
$(RM) $(INSTALLROOT)/share/doc/$(PKG)/extra/`basename $$tool` ; \
done
-$(RM) $(PYTHONROOT)/$(PKG)/*
-$(RM) $(PYTHONROOT)/$(PKGVER).egg-info
-rmdir --parents $(INSTALLROOT)/share/doc/$(PKG)/extra/ \
$(MANROOT)/man1/ \
$(INSTALLROOT)/bin/
$(INSTALLROOT)/bin/ \
$(PYTHONROOT)/$(PKG)/
 
clean:
-$(RM) *.pyc *.pyo manpage.html manpage.pdf $(PKG).spec setup.py
 
distclean: clean
-$(RM) $(PKGVER).tar.gz $(PKGVER).zip
-$(RM) -r dist build $(PKGVER)/ pyqver2.py
 
dist: tarball zip
-$(RM) -r $(PKGVER)
 
tarball: $(PKGVER).tar.gz
 
zip: $(PKGVER).zip
 
rpm: $(PKGVER).tar.gz $(PKG).spec
@# XXX: ??? Combined doesn't catch Build-Requires
rpmbuild -tb $< && rpmbuild -ts $<
 
$(PKGVER).tar.gz: is_release distclean $(PKG).spec setup.py
$(DUSETUP) sdist -u root -g root --formats=gztar && mv dist/$@ .
-@rmdir dist
 
$(PKGVER).zip: is_release distclean manpage.pdf manpage.html $(PKG).spec setup.py
@# Specifial manifest with additional files
cp MANIFEST.in MANIFEST.in.tmp
echo include manpage.pdf manpage.html >> MANIFEST.in.tmp
$(DUSETUP) sdist --formats=zip --template MANIFEST.in.tmp && mv dist/$@ .
-$(RM) MANIFEST.in.tmp MANIFEST
-@rmdir dist
 
setup.py: devtools/setup.py.in
sed 's/@VERSION@/$(VERSION)/g' < $< > $@
 
$(PKG).1: manpage_source.sgml
docbook-to-man $< > $@
 
62,7 → 120,7
 
is_release:
# Only allowed if RELEASE
printf 'import relevation\nif not relevation.RELEASE:\n\traise Exception("RELEASE is False")' | python -
bash devtools/relver.bash | grep -q -v 'DEBUG'
 
package_copy:
@# Make a temporary copy to package
69,19 → 127,6
-mkdir $(PKGVER)
tar c . $(TAR_EXCLUDES) | ( cd $(PKGVER) && tar x )
 
dist: $(PKGVER).tar.gz $(PKGVER).zip
-$(RM) -r $(PKGVER)
 
$(PKGVER).tar.gz: is_release distclean $(PKG).spec package_copy
tar cv $(PKGVER) | gzip -c9 > $(PKGVER).tar.gz
 
zip: $(PKGVER).zip
 
$(PKGVER).zip: is_release distclean manpage.pdf manpage.html $(PKG).spec package_copy
cp manpage.pdf manpage.html $(PKGVER)
zip -9 -r $(PKGVER).zip $(PKGVER)
-$(RM) $(PKGVER)/manpage.pdf $(PKGVER)/manpage.html
 
$(PKG).spec: $(PKG).spec.in
test -n "$(VERSION)" # Version (=$(VERSION)) must be defined
@echo "[creating $@]"
88,7 → 133,10
@cat "$<" | sed -e 's/@VERSION@/$(VERSION)/g' \
-e 's/@PACKAGER@/$(PACKAGER)/g' > "$@"
 
pyqver2.py:
wget https://github.com/ghewgill/pyqver/raw/master/pyqver2.py
 
exe:
python setup_py2exe.py py2exe
python win/setup_py2exe.py py2exe
 
.PHONY: testman clean distclean dist exe is_release zip