Skip to content
Snippets Groups Projects
rules 13.1 KiB
Newer Older
#!/usr/bin/make -f
# Sample debian/rules that uses debhelper. GNU copyright 1997 by Joey Hess.

export SHELL = /bin/bash

# Uncomment this to turn on verbose mode.
#export DH_VERBOSE=1

DEB_HOST_ARCH := $(shell dpkg-architecture -qDEB_HOST_ARCH)
DEB_HOST_MULTIARCH := $(shell dpkg-architecture -qDEB_HOST_MULTIARCH)
DEB_HOST_GNU_TYPE := $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE)
changelog_values := $(shell dpkg-parsechangelog \
			| awk '/^(Version|Source):/ {print $$2}')
PKGSOURCE  := $(word 1, $(changelog_values))
PKGVERSION := $(word 2, $(changelog_values))

distribution := $(shell dpkg-vendor --query Vendor)
distrelease  := $(shell lsb_release -cs)
export VER=2.7
export NVER=2.8
export PVER=python2.7
PREVVER	:= $(shell awk '/^python/ && NR > 1 {print substr($$2,2,length($$2)-2); exit}' debian/changelog)
# first version with Multi-Arch: allowed

# not yet allowed
Piotr Ożarowski's avatar
Piotr Ożarowski committed
ma_allowed	= yes
ifeq (,$(filter $(distrelease),lenny etch squeeze wheezy lucid maverick natty oneiric precise quantal raring saucy trusty))
  bd_i586 = dpkg-dev (>= 1.17.11), python2.7:any (>= 2.7.11-11)
PWD		:= $(shell pwd)

d		:= debian/tmp
scriptdir	=  usr/share/lib/python$(VER)
scriptdir	=  usr/share/python$(VER)
scriptdir	=  usr/lib/python$(VER)

rst2html	= rst2html
with_doc	= yes
ifneq ($(with_doc),yes)
  NOPKGS	= -Npython-doc
endif
build: stamp-build
build-arch: stamp-build
build-indep: stamp-build
stamp-build:
	touch stamp-build

stamp-doc-policy:
	debiandoc2text debian/python-policy.sgml
	mv -f python-policy.txt debian/
	debiandoc2html -l en.UTF-8 debian/python-policy.sgml
	rm -rf debian/python-policy.html
	mv -f python-policy.html debian/
	touch stamp-doc-policy

stamp-doc: stamp-doc-policy
	touch stamp-doc

control-file:
	sed -e "s/@PVER@/$(PVER)/g" \
	    -e "s/@NVER@/$(NVER)/g" \
	    -e "s/@VER@/$(VER)/g" \
	    -e "s/@PREVVER@/$(PREVVER)/g" \
		<debian/control.in \
	    $(if $(ma_allowed),,| grep -v '^Multi-Arch: allowed$$') \
		>debian/control.tmp
ifeq ($(distribution),Ubuntu)
  ifneq (,$(findstring ubuntu, $(PKGVERSION)))
	m='Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>'; \
	sed -i "/^Maintainer:/s/\(.*\)/Maintainer: $$m\nXSBC-Original-\1/" \
	  debian/control.tmp
  endif
endif
	[ -e debian/control ] \
	  && cmp -s debian/control debian/control.tmp \
	  && rm -f debian/control.tmp && exit 0; \
	  mv debian/control.tmp debian/control

faqs = index general programming library extending windows gui installed
get-faq:
	# Note: This rule is broken due to web site reorg at python.org
	rm -rf faq
	mkdir faq
	cd faq && \
	  wget -nv $(foreach p,$(faqs),http://python.org/doc/faq/$(p).ht)
	sed 's,\<\([a-zA-Z0-9]*\.html\)\>,faq/\1,' faq/index.ht \
		| awk '/^Translations$$/ {exit} {print}' > faq/FAQ.ht
	( \
	  echo ''; \
	  echo 'This is a local copy of the online FAQ located at'; \
	  echo 'http://python.org/doc/faq.'; \
	  echo "The copy was fetched and generated in `date '+%B %Y'`."; \
	) >> faq/FAQ.ht
	rm -f faq/index.ht

make-faq:
	set -e; \
	cd faq && \
	for p in *.ht; do \
	  p=`basename $$p .ht`; \
	  echo $(rst2html) $$p.ht $$p.html; \
	  awk 'NR > 2' $$p.ht > $$p.ht2; \
	  $(rst2html) $$p.ht2 $$p.html; \
	  rm -f $$p.ht2; \
	done

MANPAGES ?= dh_python2.1 pycompile.1 pyclean.1

%.1: %.rst
	rst2man $< > $@

# Manually run this rule if there is a need to update the dh_python2 man pages
make-man: $(MANPAGES)
	cd pydist && \
	rst2html README.PyDist > README.PyDist.html
clean: control-file
	dh_testdir
	dh_testroot
	rm -f stamp-*
	rm -f patch-stamp*

	rm -f debian/python-policy.txt
	rm -rf debian/python-policy.html

	for f in debian/*.in; do \
	    f2=`echo $$f | sed "s,PVER,$(PVER),g;s/VER/$(VER)/g;s,\.in$$,,"`; \
	    if [ $$f2 != debian/control ]; then \
	        rm -f $$f2; \
	    fi; \
	done
	rm -f debian/*.py[co]
Piotr Ożarowski's avatar
Piotr Ożarowski committed
	make clean

stamp-control:
	: # We have to prepare the various control files

	for f in debian/*.in; do \
	    f2=`echo $$f | sed "s,PVER,$(PVER),g;s/VER/$(VER)/g;s,\.in$$,,"`; \
	    if [ $$f2 != debian/control ]; then \
		sed -e "s/@PVER@/$(PVER)/g;s/@VER@/$(VER)/g" \
		    -e "s/@PRIORITY@/$(PRIORITY)/g" \
		    -e "s,@SCRIPTDIR@,/$(scriptdir),g" \
		  <$$f >$$f2; \
	    fi; \
	done

install: build stamp-dh_python stamp-install
stamp-install: stamp-build control-file stamp-control
	dh_testdir
	dh_testroot
	dh_installdirs usr/share/doc/python/faq
	cd faq && \
	for p in *.ht; do \
	  p=`basename $$p .ht`; \
	  cp $$p.html ../debian/python/usr/share/doc/python/faq/; \
	done
	mv debian/python/usr/share/doc/python/faq/FAQ.html \
		debian/python/usr/share/doc/python/

	touch stamp-install

stamp-dh_python:
	dh_testdir
	dh_testroot
	dh_installdirs
	DESTDIR=debian/python PREFIX=/usr make install-dev
	DESTDIR=debian/python-minimal PREFIX=/usr make install-runtime
	# disabled by default, run manually if you want to update it
	# (requires apt-file and network connection)
	#make -C pydist dist_fallback
# Build architecture-independent files here.
binary-indep: build install stamp-doc
	dh_testdir -i
	dh_testroot -i
ifeq ($(with_doc),yes)
	mkdir -p debian/python-doc/usr/share/doc/python
	ln -sf ../python$(VER)-doc/html \
		debian/python-doc/usr/share/doc/python/html
	mkdir -p debian/python-doc/usr/share/doc/python-doc
	ln -sf ../python$(VER)-doc/html \
		debian/python-doc/usr/share/doc/python-doc/html
endif

	: # provide the idle and idle.1 defaults
	mkdir -p debian/idle/usr/bin
	install -m 755 debian/idle.py debian/idle/usr/bin/idle

	mkdir -p debian/idle/usr/share/man/man1
	install -m 644 debian/idle.1 debian/idle/usr/share/man/man1/idle.1

	mkdir -p debian/idle/usr/share/pixmaps
	ln -sf python.xpm debian/idle/usr/share/pixmaps/idle.xpm

	mkdir -p debian/idle/usr/share/applications
	cp -p debian/idle.desktop debian/idle/usr/share/applications/

#	dh_installdebconf -i $(NOPKGS)
	dh_lintian -i
	dh_installdocs -i $(NOPKGS) --all debian/README.Debian
	dh_installchangelogs -i $(NOPKGS)

	for p in examples idle; do \
	  [ $$p = idle ] || p=python-$$p; \
	  rm -rf debian/$$p/usr/share/doc/$$p; \
	  ln -sf python debian/$$p/usr/share/doc/$$p; \
	done

	dh_compress -i $(NOPKGS)
	dh_fixperms -i $(NOPKGS)
	dh_installdeb -i $(NOPKGS)
	dh_gencontrol -i $(NOPKGS)
	dh_md5sums -i $(NOPKGS)
	dh_builddeb -i $(NOPKGS)

# Build architecture-dependent files here.
binary-arch: build install stamp-doc
	dh_testdir -a
	dh_testroot -a
	dh_installman -a

	: # provide the python and python.1 defaults
	mkdir -p debian/python-minimal/usr/bin
	ln -sf python$(VER) debian/python-minimal/usr/bin/python
	ln -sf python$(VER) debian/python-minimal/usr/bin/python2
	mkdir -p debian/python-minimal/usr/share/man/man1
	ln -sf python$(VER).1.gz \
		debian/python-minimal/usr/share/man/man1/python.1.gz
	ln -sf python$(VER).1.gz \
		debian/python-minimal/usr/share/man/man1/python2.1.gz
	: # 
	mkdir -p debian/python-minimal/usr/share/python
	cp -p debian/debian_defaults \
		debian/python-minimal/usr/share/python/

	install -m 755 debian/pyversions.py \
		debian/python-minimal/usr/share/python/
	install -m 644 debian/pyversions.1 \
		debian/python-minimal/usr/share/man/man1/
	dh_link -ppython-minimal /usr/share/python/pyversions.py /usr/bin/pyversions
#	install -m 755 debian/pycompile \
#		debian/python-minimal/usr/bin/
#	install -m 755 debian/pyclean \
#		debian/python-minimal/usr/bin/

#	mkdir debian/python-minimal/usr/share/python-central
#	cp -p debian/python.pycentral debian/python-minimal/usr/share/python-central/

	mkdir -p debian/python/usr/bin
	ln -sf pydoc$(VER) debian/python/usr/bin/pydoc
	ln -sf pygettext$(VER) debian/python/usr/bin/pygettext
	ln -sf pdb$(VER) debian/python/usr/bin/pdb
Scott Kitterman's avatar
Scott Kitterman committed
	ln -sf 2to3-$(VER) debian/python/usr/bin/2to3
	mkdir -p debian/python/usr/share/python
	install -m 644 debian/python.mk \
		debian/python/usr/share/python/

	mkdir -p debian/python/usr/share/man/man1
	ln -sf pydoc$(VER).1.gz \
		debian/python/usr/share/man/man1/pydoc.1.gz
	ln -sf pygettext$(VER).1.gz \
		debian/python/usr/share/man/man1/pygettext.1.gz
	ln -sf pdb$(VER).1.gz \
		debian/python/usr/share/man/man1/pdb.1.gz
	ln -sf 2to3-$(VER).1.gz \
		debian/python/usr/share/man/man1/2to3.1.gz

	mkdir -p debian/python/usr/share/doc/python
	cp -a debian/python-policy.{html,sgml,txt} \
		debian/python/usr/share/doc/python/

	mkdir -p debian/python/usr/share/pixmaps
	ln -sf python$(VER).xpm debian/python/usr/share/pixmaps/python.xpm
	: # add symlinks to policy files
	mkdir -p debian/python/usr/share/doc/python$(VER)
	for ext in html sgml.gz txt.gz; do \
	  ln -sf ../python/python-policy.$$ext \
		debian/python/usr/share/doc/python$(VER)/python-policy.$$ext; \
	done

	mkdir -p debian/python/usr/share/apps/konsole
	cp -p debian/python.desktop debian/python/usr/share/apps/konsole/

	: # provide the python-config default
	mkdir -p debian/python-dev/usr/bin
	ln -sf python$(VER)-config debian/python-dev/usr/bin/python-config
	ln -sf python$(VER)-config debian/python-dev/usr/bin/python2-config
	mkdir -p debian/python-dev/usr/share/man/man1
	ln -sf python$(VER)-config.1.gz \
		debian/python-dev/usr/share/man/man1/python-config.1.gz
	ln -sf python$(VER)-config.1.gz \
		debian/python-dev/usr/share/man/man1/python2-config.1.gz

	: # provide pkgconfig defaults
	mkdir -p debian/python-dev/usr/lib/$(DEB_HOST_MULTIARCH)/pkgconfig
	ln -sf python-$(VER).pc debian/python-dev/usr/lib/$(DEB_HOST_MULTIARCH)/pkgconfig/python.pc
	ln -sf python.pc debian/python-dev/usr/lib/$(DEB_HOST_MULTIARCH)/pkgconfig/python2.pc
	mkdir -p debian/python-dbg/usr/lib/$(DEB_HOST_MULTIARCH)/pkgconfig
	ln -sf python-$(VER)-dbg.pc debian/python-dbg/usr/lib/$(DEB_HOST_MULTIARCH)/pkgconfig/python-dbg.pc
	ln -sf python-dbg.pc debian/python-dbg/usr/lib/$(DEB_HOST_MULTIARCH)/pkgconfig/python2-dbg.pc
	: # provide the python-dbg and python-dbg.1 defaults
	mkdir -p debian/python-dbg/usr/bin
	ln -sf python$(VER)-dbg debian/python-dbg/usr/bin/python-dbg
	ln -sf python$(VER)-dbg debian/python-dbg/usr/bin/python2-dbg
	ln -sf python$(VER)-dbg-config debian/python-dbg/usr/bin/python-dbg-config
	ln -sf python$(VER)-dbg-config debian/python-dbg/usr/bin/python2-dbg-config
	mkdir -p debian/python-dbg/usr/share/man/man1
	ln -sf python$(VER)-dbg.1.gz \
		debian/python-dbg/usr/share/man/man1/python-dbg.1.gz
	ln -sf python$(VER)-dbg.1.gz \
		debian/python-dbg/usr/share/man/man1/python2-dbg.1.gz
	ln -sf python$(VER)-dbg-config.1.gz \
		debian/python-dbg/usr/share/man/man1/python-dbg-config.1.gz
	ln -sf python$(VER)-dbg-config.1.gz \
		debian/python-dbg/usr/share/man/man1/python2-dbg-config.1.gz
	mkdir -p debian/python-dbg/usr/share/doc/python
	ln -sf ../python$(VER)/SpecialBuilds.txt.gz \
		debian/python-dbg/usr/share/doc/python/SpecialBuilds.txt.gz
	ln -sf ../python$(VER)/README.debug \
		debian/python-dbg/usr/share/doc/python/README.debug
	mkdir -p debian/python/usr/lib/valgrind
	cp -p debian/valgrind-python.supp \
		debian/python/usr/lib/valgrind/python.supp

	: # provide the DEB_HOST_GNU_TYPE/DEB_HOST_MULTIRACH python-config defaults
	mkdir -p debian/libpython-dev/usr/bin
	ln -sf $(DEB_HOST_MULTIARCH)-python$(VER)-config \
		debian/libpython-dev/usr/bin/$(DEB_HOST_MULTIARCH)-python-config
	mkdir -p debian/libpython-dev/usr/share/man/man1
	ln -sf $(DEB_HOST_MULTIARCH)-python$(VER)-config.1.gz \
		debian/libpython-dev/usr/share/man/man1/$(DEB_HOST_MULTIARCH)-python-config.1.gz
ifneq ($(DEB_HOST_MULTIARCH),$(DEB_HOST_GNU_TYPE))
	ln -sf $(DEB_HOST_GNU_TYPE)-python$(VER)-config \
		debian/libpython-dev/usr/bin/$(DEB_HOST_GNU_TYPE)-python-config
	ln -sf $(DEB_HOST_GNU_TYPE)-python$(VER)-config.1.gz \
		debian/libpython-dev/usr/share/man/man1/$(DEB_HOST_GNU_TYPE)-python-config.1.gz
endif
	mkdir -p debian/libpython-dbg/usr/bin
	ln -sf $(DEB_HOST_MULTIARCH)-python$(VER)-dbg-config \
		debian/libpython-dbg/usr/bin/$(DEB_HOST_MULTIARCH)-python-dbg-config
	mkdir -p debian/libpython-dbg/usr/share/man/man1
	ln -sf $(DEB_HOST_MULTIARCH)-python$(VER)-dbg-config.1.gz \
		debian/libpython-dbg/usr/share/man/man1/$(DEB_HOST_MULTIARCH)-python-dbg-config.1.gz
ifneq ($(DEB_HOST_MULTIARCH),$(DEB_HOST_GNU_TYPE))
	ln -sf $(DEB_HOST_GNU_TYPE)-python$(VER)-dbg-config \
		debian/libpython-dbg/usr/bin/$(DEB_HOST_GNU_TYPE)-python-dbg-config
	ln -sf $(DEB_HOST_GNU_TYPE)-python$(VER)-dbg-config.1.gz \
		debian/libpython-dbg/usr/share/man/man1/$(DEB_HOST_GNU_TYPE)-python-dbg-config.1.gz
endif
	dh_lintian -a
	dh_installdocs -a $(NOPKGS) --all debian/README.Debian
	dh_installchangelogs -a $(NOPKGS)
	for p in all all-dev all-dbg dbg dev; do \
	  [ $$p = idle ] || p=python-$$p; \
	  rm -rf debian/$$p/usr/share/doc/$$p; \
	  ln -sf python debian/$$p/usr/share/doc/$$p; \
	done
	rm -rf debian/libpython-all-dev/usr/share/doc/libpython-all-dev
	ln -sf libpython-dev debian/libpython-all-dev/usr/share/doc/libpython-all-dev
	rm -rf debian/libpython-all-dbg/usr/share/doc/libpython-all-dbg
	ln -sf libpython-dbg debian/libpython-all-dbg/usr/share/doc/libpython-all-dbg
	dh_compress -a $(NOPKGS)
	dh_fixperms -a $(NOPKGS)
	dh_installdeb -a $(NOPKGS)
	dh_gencontrol -a $(NOPKGS)
	dh_md5sums -a $(NOPKGS)
	dh_builddeb -a $(NOPKGS)

# Build architecture-dependent files here.
binary-arch: build install
# nothing to do

binary: binary-indep binary-arch

.PHONY: control-file configure build clean binary-indep binary-arch binary install

# Local Variables:
# mode: makefile
# end: