# $Id$ prefix:=/usr/local DESTDIR:= PKG=relevation 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),) PACKAGER:=$(shell getent passwd "`id -un`" | cut -d: -f5 | cut -d, -f1) endif TAR_EXCLUDES=--exclude-vcs --exclude=$(PKGVER) \ --exclude=*.swp --exclude=*.pyo --exclude=*.pyc \ --exclude=manpage.html --exclude=manpage.pdf 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=python3 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 # Set to something from the command-line to allow packaging of pre-releases force:= 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 "# append force=1 to allow packaging pre-releases" @echo "########################################################" @echo testman: docbook-to-man manpage_source.sgml | nroff -man | less 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) test_min_python: pyqver2.py python pyqver2.py -v -m 2.4 src/$(PKG).py src/$(PKG)/*.py 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/ \ $(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' < $< > $@ egg: setup.py cat $< | sed -e 's/scripts=/py_modules=["__main__"],scripts=/' \ -e 's/from distutils.core/from setuptools/' | python - bdist_egg $(PKG).1: manpage_source.sgml docbook-to-man $< > $@ manpage.html: $(PKG).1 man2html $< | sed '1,2d' > $@ manpage.pdf: $(PKG).1 man -t ./$(PKG).1 | ps2pdf14 - > $@ is_release: # Only allowed if RELEASE test -n "$(force)" || bash devtools/relver.bash | grep -q -v 'DEBUG' package_copy: @# Make a temporary copy to package -mkdir $(PKGVER) tar c . $(TAR_EXCLUDES) | ( cd $(PKGVER) && tar x ) $(PKG).spec: devtools/$(PKG).spec.in test -n "$(VERSION)" # Version (=$(VERSION)) must be defined @echo "[creating $@]" @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 win/setup_py2exe.py py2exe .PHONY: testman clean distclean dist exe is_release zip