r36389 - in /desktop/experimental/pygobject/debian: changelog compat control control.in python-gi-cairo.install python-gi-dbg.install python-gi-dev.install python-gi.install python3-gi-cairo.install python3-gi-dbg.install python3-gi.install rules

mpitt at users.alioth.debian.org mpitt at users.alioth.debian.org
Tue Nov 27 13:59:50 UTC 2012


Author: mpitt
Date: Tue Nov 27 13:59:49 2012
New Revision: 36389

URL: http://svn.debian.org/wsvn/pkg-gnome/?sc=1&rev=36389
Log:
Greatly simplify debian/rules, by switching to dh7 build system and
factorizing the per-flavor rules in a simpler and better way. Also move to
dh compat 9 to get multiarch compatible library directories.

Added:
    desktop/experimental/pygobject/debian/python-gi-cairo.install
    desktop/experimental/pygobject/debian/python-gi-dbg.install
    desktop/experimental/pygobject/debian/python-gi-dev.install
    desktop/experimental/pygobject/debian/python-gi.install
    desktop/experimental/pygobject/debian/python3-gi-cairo.install
    desktop/experimental/pygobject/debian/python3-gi-dbg.install
    desktop/experimental/pygobject/debian/python3-gi.install
Modified:
    desktop/experimental/pygobject/debian/changelog
    desktop/experimental/pygobject/debian/compat
    desktop/experimental/pygobject/debian/control
    desktop/experimental/pygobject/debian/control.in
    desktop/experimental/pygobject/debian/rules

Modified: desktop/experimental/pygobject/debian/changelog
URL: http://svn.debian.org/wsvn/pkg-gnome/desktop/experimental/pygobject/debian/changelog?rev=36389&op=diff
==============================================================================
--- desktop/experimental/pygobject/debian/changelog [utf-8] (original)
+++ desktop/experimental/pygobject/debian/changelog [utf-8] Tue Nov 27 13:59:49 2012
@@ -2,6 +2,9 @@
 
   * Drop quilt (not necessary, we are using 3.0 (quilt) source format), and
     dh_autoreconf (we have no patches).
+  * Greatly simplify debian/rules, by switching to dh7 build system and
+    factorizing the per-flavor rules in a simpler and better way. Also move to
+    dh compat 9 to get multiarch compatible library directories.
 
  -- Martin Pitt <mpitt at debian.org>  Tue, 27 Nov 2012 11:11:57 +0100
 

Modified: desktop/experimental/pygobject/debian/compat
URL: http://svn.debian.org/wsvn/pkg-gnome/desktop/experimental/pygobject/debian/compat?rev=36389&op=diff
==============================================================================
--- desktop/experimental/pygobject/debian/compat [utf-8] (original)
+++ desktop/experimental/pygobject/debian/compat [utf-8] Tue Nov 27 13:59:49 2012
@@ -1,1 +1,1 @@
-7
+9

Modified: desktop/experimental/pygobject/debian/control
URL: http://svn.debian.org/wsvn/pkg-gnome/desktop/experimental/pygobject/debian/control?rev=36389&op=diff
==============================================================================
--- desktop/experimental/pygobject/debian/control [utf-8] (original)
+++ desktop/experimental/pygobject/debian/control [utf-8] Tue Nov 27 13:59:49 2012
@@ -7,7 +7,7 @@
 Priority: optional
 Maintainer: Josselin Mouette <joss at debian.org>
 Uploaders: Debian GNOME Maintainers <pkg-gnome-maintainers at lists.alioth.debian.org>
-Build-Depends: debhelper (>= 7),
+Build-Depends: debhelper (>= 9),
                gnome-pkg-tools (>= 0.10),
                python-all-dev (>= 2.6.6-3~),
                python3-all-dev,

Modified: desktop/experimental/pygobject/debian/control.in
URL: http://svn.debian.org/wsvn/pkg-gnome/desktop/experimental/pygobject/debian/control.in?rev=36389&op=diff
==============================================================================
--- desktop/experimental/pygobject/debian/control.in [utf-8] (original)
+++ desktop/experimental/pygobject/debian/control.in [utf-8] Tue Nov 27 13:59:49 2012
@@ -3,7 +3,7 @@
 Priority: optional
 Maintainer: Josselin Mouette <joss at debian.org>
 Uploaders: @GNOME_TEAM@
-Build-Depends: debhelper (>= 7),
+Build-Depends: debhelper (>= 9),
                gnome-pkg-tools (>= 0.10),
                python-all-dev (>= 2.6.6-3~),
                python3-all-dev,

Added: desktop/experimental/pygobject/debian/python-gi-cairo.install
URL: http://svn.debian.org/wsvn/pkg-gnome/desktop/experimental/pygobject/debian/python-gi-cairo.install?rev=36389&op=file
==============================================================================
--- desktop/experimental/pygobject/debian/python-gi-cairo.install (added)
+++ desktop/experimental/pygobject/debian/python-gi-cairo.install [utf-8] Tue Nov 27 13:59:49 2012
@@ -1,0 +1,1 @@
+usr/lib/python*/*-packages/gi/*cairo*

Added: desktop/experimental/pygobject/debian/python-gi-dbg.install
URL: http://svn.debian.org/wsvn/pkg-gnome/desktop/experimental/pygobject/debian/python-gi-dbg.install?rev=36389&op=file
==============================================================================
--- desktop/experimental/pygobject/debian/python-gi-dbg.install (added)
+++ desktop/experimental/pygobject/debian/python-gi-dbg.install [utf-8] Tue Nov 27 13:59:49 2012
@@ -1,0 +1,2 @@
+usr/lib/python*
+usr/lib/*/lib*.so.*

Added: desktop/experimental/pygobject/debian/python-gi-dev.install
URL: http://svn.debian.org/wsvn/pkg-gnome/desktop/experimental/pygobject/debian/python-gi-dev.install?rev=36389&op=file
==============================================================================
--- desktop/experimental/pygobject/debian/python-gi-dev.install (added)
+++ desktop/experimental/pygobject/debian/python-gi-dev.install [utf-8] Tue Nov 27 13:59:49 2012
@@ -1,0 +1,2 @@
+usr/include
+usr/lib/*/pkgconfig

Added: desktop/experimental/pygobject/debian/python-gi.install
URL: http://svn.debian.org/wsvn/pkg-gnome/desktop/experimental/pygobject/debian/python-gi.install?rev=36389&op=file
==============================================================================
--- desktop/experimental/pygobject/debian/python-gi.install (added)
+++ desktop/experimental/pygobject/debian/python-gi.install [utf-8] Tue Nov 27 13:59:49 2012
@@ -1,0 +1,2 @@
+usr/lib/python*
+usr/lib/*/lib*.so.*

Added: desktop/experimental/pygobject/debian/python3-gi-cairo.install
URL: http://svn.debian.org/wsvn/pkg-gnome/desktop/experimental/pygobject/debian/python3-gi-cairo.install?rev=36389&op=file
==============================================================================
--- desktop/experimental/pygobject/debian/python3-gi-cairo.install (added)
+++ desktop/experimental/pygobject/debian/python3-gi-cairo.install [utf-8] Tue Nov 27 13:59:49 2012
@@ -1,0 +1,1 @@
+usr/lib/python*/*-packages/gi/*cairo*

Added: desktop/experimental/pygobject/debian/python3-gi-dbg.install
URL: http://svn.debian.org/wsvn/pkg-gnome/desktop/experimental/pygobject/debian/python3-gi-dbg.install?rev=36389&op=file
==============================================================================
--- desktop/experimental/pygobject/debian/python3-gi-dbg.install (added)
+++ desktop/experimental/pygobject/debian/python3-gi-dbg.install [utf-8] Tue Nov 27 13:59:49 2012
@@ -1,0 +1,2 @@
+usr/lib/python*
+usr/lib/*/lib*.so.*

Added: desktop/experimental/pygobject/debian/python3-gi.install
URL: http://svn.debian.org/wsvn/pkg-gnome/desktop/experimental/pygobject/debian/python3-gi.install?rev=36389&op=file
==============================================================================
--- desktop/experimental/pygobject/debian/python3-gi.install (added)
+++ desktop/experimental/pygobject/debian/python3-gi.install [utf-8] Tue Nov 27 13:59:49 2012
@@ -1,0 +1,2 @@
+usr/lib/python*
+usr/lib/*/lib*.so.*

Modified: desktop/experimental/pygobject/debian/rules
URL: http://svn.debian.org/wsvn/pkg-gnome/desktop/experimental/pygobject/debian/rules?rev=36389&op=diff
==============================================================================
--- desktop/experimental/pygobject/debian/rules [utf-8] (original)
+++ desktop/experimental/pygobject/debian/rules [utf-8] Tue Nov 27 13:59:49 2012
@@ -1,210 +1,86 @@
 #!/usr/bin/make -f
 
+include /usr/share/dpkg/default.mk
+include /usr/share/python/python.mk
+# breaks debclean, need to do this manually
+DISABLE_UPDATE_UPLOADERS=1
 include /usr/share/gnome-pkg-tools/1/rules/uploaders.mk
 -include /usr/share/gnome-pkg-tools/1/rules/gnome-get-source.mk
 
-include /usr/share/python/python.mk
-
-CFLAGS += -Wall -g -O$(if $(findstring noopt,$(DEB_BUILD_OPTIONS)),0,2)
-
-DEB_HOST_GNU_TYPE   ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE)
-DEB_BUILD_GNU_TYPE  ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE)
-
-export echo=/bin/echo
+PYVERS := $(shell pyversions --requested --version debian/control) $(shell py3versions --requested --version debian/control)
+FLAVOURS := $(PYVERS) $(patsubst %,%-dbg,$(PYVERS))
 
 configure_flags += \
-		--prefix=/usr \
-		--enable-thread \
-		--build=$(DEB_BUILD_GNU_TYPE) \
-		--disable-maintainer-mode \
-		--disable-silent-rules
+		--disable-silent-rules \
+		$(NULL)
 
-ifneq ($(DEB_BUILD_GNU_TYPE),$(DEB_HOST_GNU_TYPE))
-	configure_flags += --host=$(DEB_HOST_GNU_TYPE)
-endif
+%:
+	dh $@ --with python2,python3
 
-PYDEFAULTVER := $(shell pyversions --default --version)
-PYVERS := $(shell pyversions --requested --version debian/control)
-PYVERS := $(filter-out $(PYDEFAULTVER), $(PYVERS)) $(PYDEFAULTVER) $(shell py3versions --supported --version)
+override_dh_auto_configure:
+	set -e && for x in $(FLAVOURS); do \
+	    dh_auto_configure --builddirectory=build-$$x -- PYTHON=/usr/bin/python$$x $(configure_flags); \
+	done
 
-build-%/configure-stamp:
-	dh_testdir
-	mkdir -p build-$*
-	cd build-$* && \
-		PYTHON=/usr/bin/python$* CFLAGS="$(CFLAGS)" \
-			$(CURDIR)/configure $(configure_flags)
-	touch $@
+override_dh_auto_build:
+	set -e && for x in $(FLAVOURS); do \
+	    dh_auto_build --builddirectory=build-$$x; \
+	done
 
-dbg-build-%/configure-stamp:
-	dh_testdir
-	mkdir -p dbg-build-$*
-	cd dbg-build-$* && \
-		PYTHON=/usr/bin/python$*-dbg CFLAGS="$(CFLAGS) -O0" \
-			$(CURDIR)/configure $(configure_flags)
-	touch $@
+# don't run the tests under fakeroot, otherwise they will try to connect to
+# root's session D-BUS
+override_dh_auto_test:
+	set -e unset LD_PRELOAD && for x in $(FLAVOURS); do \
+	    xvfb-run dh_auto_test --builddirectory=build-$$x; \
+	    while [ -e /tmp/.X99-lock ]; do echo "Waiting for xvfb to finish..."; sleep 0.5; done; \
+	done
 
-build-%/build-stamp: build-%/configure-stamp
-	dh_testdir
-	PYTHON=/usr/bin/python$* $(MAKE) -C build-$* pyexecdir=$(call py_libdir_sh, $*)
-	touch $@
+# we remove stuff that we do not need, and rename the *.so modules to what
+# Python expects for that flavor (http://www.python.org/dev/peps/pep-3149/)
+# group the install directory by major Python version and dbg/non-dbg
+override_dh_auto_install:
+	set -e && for x in $(FLAVOURS); do \
+	    INST=debian/install-`echo $$x | sed 's/\.[0-9]*//'`; \
+	    rm -rf $$INST; \
+	    dh_auto_install --builddirectory=build-$$x --destdir=$$INST; \
+	    find $$INST \( -name '*.pyc' -o -name '*.pyo' -o -name '*.la' \) -delete; \
+	    SO=`python$$x -c "import sysconfig; print(sysconfig.get_config_var('SO'))"`; \
+	    [ "$$SO" = .so ] || for f in `find $$INST/usr/lib/python* -name '*.so'`; do \
+		mv $$f $${f%.so}$$SO; \
+	    done; \
+	done
 
-dbg-build-%/build-stamp: dbg-build-%/configure-stamp
-	dh_testdir
-	PYTHON=/usr/bin/python$*-dbg $(MAKE) -C dbg-build-$* pyexecdir=$(call py_libdir_sh, $*)
-	touch $@
+override_dh_auto_clean:
+	rm -rf build-*
+	dh_auto_clean
 
-build: $(PYVERS:%=build-%/build-stamp) $(PYVERS:%=dbg-build-%/build-stamp)
+override_dh_install:
+	dh_install -ppython-gi -ppython-gi-cairo --sourcedir=debian/install-2
+	dh_install -ppython-gi-dbg --sourcedir=debian/install-2-dbg
+	dh_install -ppython3-gi -ppython3-gi-cairo -ppython-gi-dev --sourcedir=debian/install-3
+	dh_install -ppython3-gi-dbg --sourcedir=debian/install-3-dbg
+	# for transitional packages; this is not expected to install any files
+	dh_install --remaining-packages --sourcedir=/nonexisting
+	# cairo.so is installed into a separate package; modelling this with
+	# *.install files is a pain, so just remove it manually
+	rm debian/python*-gi/usr/lib/python*/*-packages/gi/*cairo*
 
-build-%/check-stamp: build-%/build-stamp
-	find gi -name '*.py' -exec cp '$(CURDIR)/{}' build-$*/'{}' \;
-	# don't run the tests under fakeroot, otherwise they will try to
-	# connect to root's session D-BUS
-	-PYTHON=/usr/bin/python$* LD_PRELOAD= xvfb-run $(MAKE) -C build-$* check
-	touch $@
-
-dbg-build-%/check-stamp: dbg-build-%/build-stamp
-	find gi -name '*.py' -exec cp '$(CURDIR)/{}' dbg-build-$*/'{}' \;
-	# don't run the tests under fakeroot, otherwise they will try to
-	# connect to root's session D-BUS
-	-PYTHON=/usr/bin/python$*-dbg LD_PRELOAD= xvfb-run $(MAKE) -C dbg-build-$* check
-	touch $@
-
-check: $(PYVERS:%=build-%/check-stamp) $(PYVERS:%=dbg-build-%/check-stamp)
-
-build-2.%/install-stamp: build-2.%/build-stamp
-	dh_testdir
-	dh_testroot
-	PYTHON=/usr/bin/python2.$* $(MAKE) -C build-2.$* install DESTDIR=$(CURDIR)/debian/python-gi pyexecdir=$(call py_libdir_sh, 2.$*)
-	# install development parts
-	mkdir -p debian/python-gi-dev/usr/lib
-	cp -r debian/python-gi/usr/include debian/python-gi-dev/usr/
-	cp -r debian/python-gi/usr/lib/pkgconfig debian/python-gi-dev/usr/lib
-	# remove stuff that we do not need in python-gi
-	-find debian/python-gi/ ! -path '*/usr/lib/*' -delete
-	find debian/python-gi/ \( -name '*.pyc' -o -name '*.pyo' -o -name '*.la' \) -delete
-	rm -r debian/python-gi/usr/lib/pkgconfig
-
-build-3.%/install-stamp: build-3.%/build-stamp
-	dh_testdir
-	dh_testroot
-	PYTHON=/usr/bin/python3.$* $(MAKE) -C build-3.$* install DESTDIR=$(CURDIR)/debian/python3-gi pyexecdir=$(call py_libdir_sh, 3.$*)
-	-find debian/python3-gi/ ! -path '*/usr/lib/*' -delete
-	find debian/python3-gi/ \( -name '*.pyc' -o -name '*.pyo' -o -name '*.la' \) -delete
-	rm -r debian/python3-gi/usr/lib/pkgconfig
-	
-	# tag the Python extensions like distutils, as upstream build system
-	# uses autotools and does not know about http://www.python.org/dev/peps/pep-3149/
-	ABITAG=`python3.$* -c "import sysconfig; print(sysconfig.get_config_var('SOABI'))"`; \
-	for f in `find debian/python3-gi/usr/lib/python* -name '*.so' ! -name '*.cpython*.so'`; do \
-	    mv $$f $${f%.so}.$$ABITAG.so; \
-	done
-	
-	touch $@
-
-dbg-build-2.%/install-stamp: dbg-build-2.%/build-stamp
-	dh_testdir
-	dh_testroot
-	PYTHON=/usr/bin/python2.$*-dbg $(MAKE) -C dbg-build-2.$* install DESTDIR=$(CURDIR)/debian/python-gi-dbg pyexecdir=$(call py_libdir_sh, 2.$*)
-	find debian/python-gi-dbg ! -type d ! \( -name '*.so' -o -name '*.so.*' \) -delete
-	find debian/python-gi-dbg -type d -empty -delete
-	touch $@
-
-dbg-build-3.%/install-stamp: dbg-build-3.%/build-stamp
-	dh_testdir
-	dh_testroot
-	PYTHON=/usr/bin/python3.$*-dbg $(MAKE) -C dbg-build-3.$* install DESTDIR=$(CURDIR)/debian/python3-gi-dbg pyexecdir=$(call py_libdir_sh, 3.$*)
-	find debian/python3-gi-dbg ! -type d ! \( -name '*.so' -o -name '*.so.*' \) -delete
-	find debian/python3-gi-dbg -type d -empty -delete
-	
-	# tag the Python extensions like distutils, as upstream build system
-	# uses autotools and does not know about http://www.python.org/dev/peps/pep-3149/
-	ABITAG=`python3.$*-dbg -c "import sysconfig; print(sysconfig.get_config_var('SOABI'))"`; \
-	for f in `find debian/python3-gi-dbg/usr/lib/python* -name '*.so' ! -name '*.cpython*.so'`; do \
-	    mv $$f $${f%.so}.$$ABITAG.so; \
-	done
-	
-	touch $@
-
-install-stamp: $(PYVERS:%=build-%/build-stamp) $(PYVERS:%=dbg-build-%/build-stamp)
-	dh_testdir
-	dh_testroot
-	# remove the install stamps to force a reinstall (since dh_clean is
-	# removing the package dirs)
-	dh_prep
-	rm -f $(PYVERS:%=build-%/install-stamp) $(PYVERS:%=dbg-build-%/install-stamp)
-	$(MAKE) -f debian/rules $(PYVERS:%=build-%/install-stamp) $(PYVERS:%=dbg-build-%/install-stamp)
-	for i in $(PYVERS); do \
-		if [ "$${i#3.}" = "$$i" ]; then \
-			mkdir -p debian/python-gi-cairo/$(call py_libdir_sh, $$i)/gi; \
-			mv debian/python-gi/$(call py_libdir_sh, $$i)/gi/_gi_cairo.so debian/python-gi-cairo/$(call py_libdir_sh, $$i)/gi; \
-		else \
-			ABITAG=`python$$i -c "import sysconfig; print(sysconfig.get_config_var('SOABI'))"`; \
-			mkdir -p debian/python3-gi-cairo/$(call py_libdir_sh, $$i)/gi; \
-			mv debian/python3-gi/$(call py_libdir_sh, $$i)/gi/_gi_cairo.$$ABITAG.so debian/python3-gi-cairo/$(call py_libdir_sh, $$i)/gi; \
-		fi \
-	done
-	mkdir -p debian/python-gi/usr/lib
-	for i in $$(find debian/python-gi-dbg -name '*.so' -path 'debian/python-gi-dbg/usr/lib/python*/*-packages/*'); do \
-		b=$$(basename $$i .so); \
-		mv $$i $$(dirname $$i)/$${b}_d.so; \
-	done
-	
-	touch $@
-
-install: install-stamp
-
-clean::
-	dh_testdir
-	dh_testroot
-	rm -f install-stamp
-	rm -rf build-* dbg-build-*
-	dh_autoreconf_clean
-	dh_clean *.pyc */*.pyc
-	find -name '*.pyc' | xargs -r rm -f
-	find -name __pycache__ | xargs -r rm -rf
-
-maybe_check = $(if $(findstring nocheck,$(DEB_BUILD_OPTIONS)),,check)
-
-binary-indep: install $(maybe_check)
-	dh_testdir
-	dh_testroot
-	dh_installdocs -i
-	dh_installexamples -i
-	dh_installchangelogs ChangeLog -i
-	dh_link -i
-	dh_compress -i -X.py
-	dh_fixperms -i
-	dh_python2 -i /usr/share/pygobject
-	dh_installdeb -i
-	dh_gencontrol -i
-	dh_md5sums -i
-	dh_builddeb -i
-
-binary-arch: install $(maybe_check)
-	dh_testdir
-	dh_testroot
-	dh_installdocs -s
-	dh_installexamples -s
-	dh_installchangelogs -s ChangeLog
+override_dh_strip:
 	dh_strip -ppython-gi --dbg-package=python-gi-dbg
 	dh_strip -ppython-gi-cairo --dbg-package=python-gi-dbg
 	dh_strip -ppython3-gi --dbg-package=python3-gi-dbg
+	dh_strip --remaining-packages
+	# keep historic doc symlinking for this package
 	rm -rf debian/python-gi-dbg/usr/share/doc/python-gi-dbg
 	ln -sf python-gi debian/python-gi-dbg/usr/share/doc/python-gi-dbg
-	dh_link -s
-	dh_compress -s -X.py
-	dh_fixperms -s
-	dh_python2 -a
-	dh_python3 -a
-	dh_makeshlibs -ppython-gi      -V'python-gi (>= 3.3.1)'
-	dh_makeshlibs -ppython-gi-dbg  -V'python-gi-dbg (>= 3.3.1)'
-	dh_makeshlibs -ppython3-gi     -V'python3-gi (>= 3.3.1)'
-	dh_makeshlibs -ppython3-gi-dbg -V'python3-gi-dbg (>= 3.3.1)'
-	dh_installdeb -s
-	dh_shlibdeps -s
-	dh_gencontrol -s
-	dh_md5sums -s
-	dh_builddeb -s
 
-binary: binary-arch binary-indep
-.PHONY: build check install clean binary-indep binary-arch binary
+override_dh_makeshlibs:
+	dh_makeshlibs -ppython-gi  -V'python-gi (>= 3.4)'
+	dh_makeshlibs -ppython3-gi -V'python3-gi (>= 3.4)'
+	dh_makeshlibs --remaining-packages
+
+override_dh_clean:
+	# from uploaders.mk; this uses cdbs-style clean:: which breaks dh clean
+	{ cat $(CONTROL_HEADER) ; sed "s/@GNOME_TEAM@/$(UPLOADERS)/" debian/control.in ; } > debian/control
+	rm -rf debian/install-*
+	dh_clean




More information about the pkg-gnome-commits mailing list