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 |