From 6739a9104a18e8928ebfcf841e88a1776eeb7ca3 Mon Sep 17 00:00:00 2001 From: Matthias Klose <doko@ubuntu.com> Date: Wed, 5 Dec 2012 06:35:52 +0100 Subject: [PATCH] * Build dependency packages as architecture dependent packages. * Make python, python-{minimal,dev,dbg} Multi-Arch: allowed. * Build Multi-Arch: any packages libpython-{dev,dbg} packages providing $(DEB_HOST_GNU_TYPE/DEB_HOST_MULTIARCH)-python-config symlinks. * Provide python2 symlinks. --- debian/changelog | 10 ++++ debian/control | 52 ++++++++++++----- debian/control.in | 44 +++++++++++--- debian/rules | 144 +++++++++++++++++++++++++++++++++++----------- 4 files changed, 195 insertions(+), 55 deletions(-) diff --git a/debian/changelog b/debian/changelog index fb6cda4..61b084a 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,13 @@ +python-defaults (2.7.3-10) UNRELEASED; urgency=low + + * Build dependency packages as architecture dependent packages. + * Make python, python-{minimal,dev,dbg} Multi-Arch: allowed. + * Build Multi-Arch: any packages libpython-{dev,dbg} packages providing + $(DEB_HOST_GNU_TYPE/DEB_HOST_MULTIARCH)-python-config symlinks. + * Provide python2 symlinks. + + -- Matthias Klose <doko@debian.org> Tue, 04 Dec 2012 17:35:26 +0100 + python-defaults (2.7.3-3) unstable; urgency=low [ Piotr Ożarowski ] diff --git a/debian/control b/debian/control index 7de1e6c..6732fd9 100644 --- a/debian/control +++ b/debian/control @@ -11,9 +11,10 @@ Vcs-Bzr: http://alioth.debian.org/anonscm/bzr/pkg-python/python-defaults-debian Vcs-Browser: http://alioth.debian.org/scm/loggerhead/pkg-python/python-defaults-debian/files Package: python -Architecture: all +Architecture: any +Multi-Arch: allowed Priority: standard -Depends: ${misc:Depends}, python2.7 (>= 2.7.3-1~), python-minimal (= ${binary:Version}) +Depends: ${misc:Depends}, python2.7 (>= 2.7.3-10~), python-minimal (= ${binary:Version}) Suggests: python-doc (= ${binary:Version}), python-tk (= ${binary:Version}) Conflicts: python-central (<< 0.5.5) Breaks: python-csv (<< 1.0-4), python-bz2 (<< 1.1-8), python-email (<< 2.5.5-3), update-manager-core (<< 0.200.5-2) @@ -28,9 +29,10 @@ Description: interactive high-level object-oriented language (default version) Python version (currently v2.7). Package: python-minimal -Architecture: all +Architecture: any +Multi-Arch: allowed Priority: standard -Depends: ${misc:Depends}, python2.7-minimal (>= 2.7.3-1~), dpkg (>= 1.13.20) +Depends: ${misc:Depends}, python2.7-minimal (>= 2.7.3-10~), dpkg (>= 1.13.20) Recommends: python Conflicts: python-central (<< 0.5.5) Breaks: python (<= 2.7.3-1~), python-dev (<< 2.6), python-dbg (<< 2.6), python-all (<< 2.6), python-all-dev (<< 2.6), python-all-dbg (<< 2.6), python-examples (<< 2.6), idle (<< 2.6), python2.5-minimal (<< 2.5.5-7), python2.6-minimal (<< 2.6.5~rc2-2), python3.1-minimal (<< 3.1.2~rc1-2), python-support (<< 1.0.10ubuntu2) @@ -43,7 +45,7 @@ Description: minimal subset of the Python language (default version) Package: python-examples Architecture: all -Depends: ${misc:Depends}, python (= ${binary:Version}), python2.7-examples (>= 2.7.3-1~) +Depends: ${misc:Depends}, python (= ${binary:Version}), python2.7-examples (>= 2.7.3-10~) Description: examples for the Python language (default version) Examples, Demos and Tools for Python. These are files included in the upstream Python distribution. @@ -52,8 +54,21 @@ Description: examples for the Python language (default version) Python version (currently v2.7). Package: python-dev -Architecture: all -Depends: ${misc:Depends}, python (= ${binary:Version}), python2.7-dev (>= 2.7.3-1~) +Architecture: any +Multi-Arch: allowed +Depends: ${misc:Depends}, python (= ${binary:Version}), libpython-dev (= ${binary:Version}), python2.7-dev (>= 2.7.3-10~) +Description: header files and a static library for Python (default) + Header files, a static library and development tools for building + Python modules, extending the Python interpreter or embedding Python + in applications. + . + This package is a dependency package, which depends on Debian's default + Python version (currently v2.7). + +Package: libpython-dev +Architecture: any +Multi-Arch: same +Depends: libpython2.7-dev (>= 2.7.3-10~), ${misc:Depends} Description: header files and a static library for Python (default) Header files, a static library and development tools for building Python modules, extending the Python interpreter or embedding Python @@ -78,7 +93,7 @@ Description: IDE for Python using Tkinter (default version) Package: python-doc Section: doc Architecture: all -Depends: ${misc:Depends}, python2.7-doc (>= 2.7.3-1~) +Depends: ${misc:Depends}, python2.7-doc (>= 2.7.3-10~) Suggests: python-examples, python (= ${binary:Version}) Breaks: python (<< 2.3.5) Replaces: python (<< 2.3.5) @@ -101,17 +116,28 @@ Description: documentation for the high-level object-oriented language Python Python version (currently v2.7). Package: python-dbg -Architecture: all +Architecture: any +Multi-Arch: allowed Section: debug Priority: extra -Depends: ${misc:Depends}, python (= ${binary:Version}), python2.7-dbg (>= 2.7.3-1~) +Depends: ${misc:Depends}, python (= ${binary:Version}), libpython-dbg (= ${binary:Version}), python2.7-dbg (>= 2.7.3-10~) Provides: python-gdbm-dbg, python-tk-dbg Description: debug build of the Python Interpreter (version 2.7) Python interpreter configured with --pydebug. Dynamically loaded modules are searched in /usr/lib/python2.7/lib-dynload/debug first. +Package: libpython-dbg +Architecture: any +Multi-Arch: same +Section: debug +Priority: extra +Depends: libpython2.7-dbg (>= 2.7.3-10~), ${misc:Depends} +Description: debug build of the Python Interpreter (version 2.7) + Python interpreter configured with --pydebug. Dynamically loaded modules + are searched in /usr/lib/python2.7/lib-dynload/debug first. + Package: python-all -Architecture: all +Architecture: any Depends: ${misc:Depends}, python (= ${binary:Version}), python2.6 (>= 2.6.7-3), python2.7 (>= 2.7.2-3) Description: package depending on all supported Python runtime versions The package currently depends on python2.6 and python2.7, in the future, @@ -122,7 +148,7 @@ Description: package depending on all supported Python runtime versions avoid hardcoded dependencies on specific Python runtimes. Package: python-all-dev -Architecture: all +Architecture: any Depends: ${misc:Depends}, python (= ${binary:Version}), python-all (= ${binary:Version}), python-dev (= ${binary:Version}), python2.6-dev (>= 2.6.5-2), python2.7-dev (>= 2.7-7) Description: package depending on all supported Python development packages The package currently depends on python2.6-dev and python2.7-dev, in the @@ -133,7 +159,7 @@ Description: package depending on all supported Python development packages avoid hardcoded dependencies on specific Python development packages. Package: python-all-dbg -Architecture: all +Architecture: any Section: debug Priority: extra Depends: ${misc:Depends}, python (= ${binary:Version}), python-all (= ${binary:Version}), python-dbg (= ${binary:Version}), python2.6-dbg (>= 2.6.5-2), python2.7-dbg (>= 2.7-7) diff --git a/debian/control.in b/debian/control.in index 3ed00c2..6b2b709 100644 --- a/debian/control.in +++ b/debian/control.in @@ -11,7 +11,8 @@ Vcs-Bzr: http://alioth.debian.org/anonscm/bzr/pkg-python/python-defaults-debian Vcs-Browser: http://alioth.debian.org/scm/loggerhead/pkg-python/python-defaults-debian/files Package: python -Architecture: all +Architecture: any +Multi-Arch: allowed Priority: standard Depends: ${misc:Depends}, @PVER@ (>= @PREVVER@), python-minimal (= ${binary:Version}) Suggests: python-doc (= ${binary:Version}), python-tk (= ${binary:Version}) @@ -28,7 +29,8 @@ Description: interactive high-level object-oriented language (default version) Python version (currently v@VER@). Package: python-minimal -Architecture: all +Architecture: any +Multi-Arch: allowed Priority: standard Depends: ${misc:Depends}, @PVER@-minimal (>= @PREVVER@), dpkg (>= 1.13.20) Recommends: python @@ -52,8 +54,21 @@ Description: examples for the Python language (default version) Python version (currently v@VER@). Package: python-dev -Architecture: all -Depends: ${misc:Depends}, python (= ${binary:Version}), @PVER@-dev (>= @PREVVER@) +Architecture: any +Multi-Arch: allowed +Depends: ${misc:Depends}, python (= ${binary:Version}), libpython-dev (= ${binary:Version}), @PVER@-dev (>= @PREVVER@) +Description: header files and a static library for Python (default) + Header files, a static library and development tools for building + Python modules, extending the Python interpreter or embedding Python + in applications. + . + This package is a dependency package, which depends on Debian's default + Python version (currently v@VER@). + +Package: libpython-dev +Architecture: any +Multi-Arch: same +Depends: lib@PVER@-dev (>= @PREVVER@), ${misc:Depends} Description: header files and a static library for Python (default) Header files, a static library and development tools for building Python modules, extending the Python interpreter or embedding Python @@ -101,17 +116,28 @@ Description: documentation for the high-level object-oriented language Python Python version (currently v@VER@). Package: python-dbg -Architecture: all +Architecture: any +Multi-Arch: allowed Section: debug Priority: extra -Depends: ${misc:Depends}, python (= ${binary:Version}), python@VER@-dbg (>= @PREVVER@) +Depends: ${misc:Depends}, python (= ${binary:Version}), libpython-dbg (= ${binary:Version}), python@VER@-dbg (>= @PREVVER@) Provides: python-gdbm-dbg, python-tk-dbg Description: debug build of the Python Interpreter (version @VER@) Python interpreter configured with --pydebug. Dynamically loaded modules are searched in /usr/lib/python@VER@/lib-dynload/debug first. +Package: libpython-dbg +Architecture: any +Multi-Arch: same +Section: debug +Priority: extra +Depends: lib@PVER@-dbg (>= @PREVVER@), ${misc:Depends} +Description: debug build of the Python Interpreter (version @VER@) + Python interpreter configured with --pydebug. Dynamically loaded modules + are searched in /usr/lib/python@VER@/lib-dynload/debug first. + Package: python-all -Architecture: all +Architecture: any Depends: ${misc:Depends}, python (= ${binary:Version}), python2.6 (>= 2.6.7-3), python2.7 (>= 2.7.2-3) Description: package depending on all supported Python runtime versions The package currently depends on python2.6 and python2.7, in the future, @@ -122,7 +148,7 @@ Description: package depending on all supported Python runtime versions avoid hardcoded dependencies on specific Python runtimes. Package: python-all-dev -Architecture: all +Architecture: any Depends: ${misc:Depends}, python (= ${binary:Version}), python-all (= ${binary:Version}), python-dev (= ${binary:Version}), python2.6-dev (>= 2.6.5-2), python2.7-dev (>= 2.7-7) Description: package depending on all supported Python development packages The package currently depends on python2.6-dev and python2.7-dev, in the @@ -133,7 +159,7 @@ Description: package depending on all supported Python development packages avoid hardcoded dependencies on specific Python development packages. Package: python-all-dbg -Architecture: all +Architecture: any Section: debug Priority: extra Depends: ${misc:Depends}, python (= ${binary:Version}), python-all (= ${binary:Version}), python-dbg (= ${binary:Version}), python2.6-dbg (>= 2.6.5-2), python2.7-dbg (>= 2.7-7) diff --git a/debian/rules b/debian/rules index 6b2fcfd..9e8cb70 100755 --- a/debian/rules +++ b/debian/rules @@ -7,6 +7,7 @@ export SHELL = /bin/bash #export DH_VERBOSE=1 DEB_HOST_ARCH := $(shell dpkg-architecture -qDEB_HOST_ARCH) +DEB_HOST_MULTIARCH := $(shell dpkg-architecture -qDEB_HOST_MULTIARCH) changelog_values := $(shell dpkg-parsechangelog \ | awk '/^(Version|Source):/ {print $$2}') @@ -20,7 +21,8 @@ export NVER=2.8 export PVER=python2.7 PREVVER := $(shell awk '/^python/ && NR > 1 {print substr($$2,2,length($$2)-2); exit}' debian/changelog) -PREVVER := 2.7.3-1~ +# first version with Multi-Arch: allowed +PREVVER := 2.7.3-10~ PWD := $(shell pwd) @@ -163,12 +165,62 @@ binary-indep: build install stamp-doc dh_testroot -i dh_installman -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_installmenu -i $(NOPKGS) + 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 + 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 @@ -223,29 +275,42 @@ binary-indep: build install stamp-doc debian/python/usr/share/doc/python$(VER)/python-policy.$$ext; \ done -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 - 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/python-config2.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 @@ -256,37 +321,50 @@ endif cp -p debian/valgrind-python.supp \ debian/python/usr/lib/valgrind/python.supp - : # 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 + : # 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/idle/usr/share/pixmaps - ln -sf python.xpm debian/idle/usr/share/pixmaps/idle.xpm + 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 - mkdir -p debian/idle/usr/share/applications - cp -p debian/idle.desktop debian/idle/usr/share/applications/ + dh_lintian -a + dh_installdocs -a $(NOPKGS) --all debian/README.Debian + dh_installmenu -a $(NOPKGS) + dh_installchangelogs -a $(NOPKGS) -# dh_installdebconf -i $(NOPKGS) - dh_lintian -i - dh_installdocs -i $(NOPKGS) --all debian/README.Debian - dh_installmenu -i $(NOPKGS) - dh_installchangelogs -i $(NOPKGS) - - for p in all all-dev all-dbg dbg dev examples idle; do \ + 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 - dh_compress -i $(NOPKGS) - dh_fixperms -i $(NOPKGS) - dh_installdeb -i $(NOPKGS) - dh_gencontrol -i $(NOPKGS) - dh_md5sums -i $(NOPKGS) - dh_builddeb -i $(NOPKGS) + 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 -- GitLab