[xml/sgml-pkgs] Bug#862867: libxml2: improve build profile support

Helmut Grohne helmut at subdivi.de
Wed May 17 20:41:30 UTC 2017


Source: libxml2
Version: 2.9.4+dfsg1-2.2
Severity: wishlist
Tags: patch
User: helmutg at debian.org
Usertags: rebootstrap

libxml2 does have an ancient stage1 build profile to be used with
bootstrapping. It is still necessary and useful for bootstrapping today.
Still it has a few shortcomings:

 * The use of DEB_BUILD_PROFILE (note the singular) predates the
   interface accepted into dpkg and debhelper and should be switched to
   DEB_BUILD_PROFILES.
 * The use of a stage1 profile is not descriptive. A few profile names
   are standardized now and nopython is one of them. Since bootstrapping
   will select profiles automatically as necessary, we should switch to
   using functional names rather than pretending that all those profiles
   are necessary for bootstrapping until eternity.
 * When a (foreign) python is installed, the profile doesn't work and it
   still tries to build the python extensions.
 * debian/control lacks build profile annotations (as its implementation
   predates build profiles) and thus the build profile cannot be
   selected by automated tools.

The attached patch fixes all of the points mentioned above. Please
consider applying it after stretch is released. If you have any
questions, don't hesitate to ask.

Helmut
-------------- next part --------------
diff --minimal -Nru libxml2-2.9.4+dfsg1/debian/changelog libxml2-2.9.4+dfsg1/debian/changelog
--- libxml2-2.9.4+dfsg1/debian/changelog	2017-01-14 15:31:49.000000000 +0100
+++ libxml2-2.9.4+dfsg1/debian/changelog	2017-05-17 19:14:28.000000000 +0200
@@ -1,3 +1,15 @@
+libxml2 (2.9.4+dfsg1-2.3) UNRELEASED; urgency=medium
+
+  * Non-maintainer upload.
+  * Improve build profile support: (Closes: #-1)
+    + Rename stage1 to meaningful nopython.
+    + Use the standard variable DEB_BUILD_PROFILES rather than
+      DEB_BUILD_PROFILE by checking dh_listpackages.
+    + Correctly build nopython even when python is installed.
+    + Add build profile annotations to debian/control.
+
+ -- Helmut Grohne <helmut at subdivi.de>  Wed, 17 May 2017 19:14:28 +0200
+
 libxml2 (2.9.4+dfsg1-2.2) unstable; urgency=medium
 
   * Non-maintainer upload.
diff --minimal -Nru libxml2-2.9.4+dfsg1/debian/control libxml2-2.9.4+dfsg1/debian/control
--- libxml2-2.9.4+dfsg1/debian/control	2017-01-14 15:07:44.000000000 +0100
+++ libxml2-2.9.4+dfsg1/debian/control	2017-05-17 19:14:28.000000000 +0200
@@ -5,10 +5,10 @@
 Uploaders: Aron Xu <aron at debian.org>, YunQiang Su <wzssyqa at gmail.com>
 Standards-Version: 3.9.8
 Build-Depends: debhelper (>= 9), dh-autoreconf, autotools-dev, pkg-config,
- libpython-all-dev, libpython-all-dbg,
- python-all-dev:any (>= 2.7.5-5~), python-all-dbg:any,
- libpython3-all-dev, libpython3-all-dbg,
- python3-all-dev:any (>= 3.5), python3-all-dbg:any,
+ libpython-all-dev <!nopython>, libpython-all-dbg <!nopython>,
+ python-all-dev:any (>= 2.7.5-5~) <!nopython>, python-all-dbg:any <!nopython>,
+ libpython3-all-dev <!nopython>, libpython3-all-dbg <!nopython>,
+ python3-all-dev:any (>= 3.5) <!nopython>, python3-all-dbg:any <!nopython>,
  zlib1g-dev | libz-dev, liblzma-dev, libicu-dev
 Homepage: http://xmlsoft.org/
 Vcs-Git: git://anonscm.debian.org/debian-xml-sgml/libxml2.git
@@ -117,6 +117,7 @@
 
 Package: python-libxml2
 Architecture: any
+Build-Profiles: <!nopython>
 Section: python
 Provides: ${python:Provides}
 Depends: ${shlibs:Depends}, ${misc:Depends}, ${python:Depends}
@@ -133,6 +134,7 @@
 
 Package: python-libxml2-dbg
 Architecture: any
+Build-Profiles: <!nopython>
 Section: debug
 Priority: extra
 Provides: ${python:Provides}
@@ -150,6 +152,7 @@
 
 Package: python3-libxml2
 Architecture: any
+Build-Profiles: <!nopython>
 Section: python
 Multi-Arch: same
 Provides: ${python3:Provides}
@@ -167,6 +170,7 @@
 
 Package: python3-libxml2-dbg
 Architecture: any
+Build-Profiles: <!nopython>
 Section: debug
 Priority: extra
 Multi-Arch: same
diff --minimal -Nru libxml2-2.9.4+dfsg1/debian/rules libxml2-2.9.4+dfsg1/debian/rules
--- libxml2-2.9.4+dfsg1/debian/rules	2017-01-14 15:07:44.000000000 +0100
+++ libxml2-2.9.4+dfsg1/debian/rules	2017-05-17 19:14:28.000000000 +0200
@@ -1,12 +1,26 @@
 #!/usr/bin/make -f
 export DH_VERBOSE=1
 
+DOPACKAGES = $(shell dh_listpackages)
+
+ifneq (,$(filter python-libxml2 python-libxml2-dbg,$(DOPACKAGES)))
 # The versions of python currently supported
 PYVERS=$(shell pyversions -s)
-PY3VERS=$(shell py3versions -s)
 # The current default version of python
 PYVER=$(shell pyversions -d)
+else
+PYVERS=
+PYVER=
+endif
+ifneq (,$(filter python3-libxml2 python3-libxml2-dbg,$(DOPACKAGES)))
+# The versions of python3 currently supported
+PY3VERS=$(shell py3versions -s)
+# The current default version of python3
 PY3VER=$(shell py3versions -d)
+else
+PY3VERS=
+PY3VER=
+endif
 
 export DEB_BUILD_MAINT_OPTIONS=hardening=+all
 DEB_HOST_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE)
@@ -29,11 +43,6 @@
 export DH_OPTIONS = -Nlibxml2-udeb
 endif
 
-ifeq ($(DEB_BUILD_PROFILE),stage1)
-DH_OPTIONS += -Npython-libxml2 -Npython-libxml2-dbg -Npython3-libxml2 -Npython3-libxml2-dbg
-export DH_OPTIONS
-endif
-
 CONFIGURE_FLAGS := --disable-silent-rules --with-history CC="$(CC)" CFLAGS="$(CFLAGS)" CPPFLAGS="$(CPPFLAGS)" LDFLAGS="$(LDFLAGS)" --cache-file="$(CURDIR)/builddir/config.cache"
 
 override_dh_auto_configure: $(TARGETS:%=doconfigure-%)
@@ -123,8 +132,10 @@
 
 override_dh_install-arch:
 	dh_install -Npython-libxml2-dbg -Npython3-libxml2-dbg -Nlibxml2-udeb
-ifneq ($(DEB_BUILD_PROFILE),stage1)
+ifneq (,$(filter python-libxml2-dbg,$(DOPACKAGES)))
 	dh_install -ppython-libxml2-dbg --sourcedir=debian/tmp-dbg
+endif
+ifneq (,$(filter python3-libxml2-dbg,$(DOPACKAGES)))
 	dh_install -ppython3-libxml2-dbg --sourcedir=debian/tmp-dbg
 endif
 	dh_install -plibxml2-udeb --sourcedir=debian/tmp-udeb
@@ -133,8 +144,10 @@
 override_dh_strip:
 	dh_strip -a --dbg-package=libxml2-dbg -Nlibxml2-udeb -Nlibxml2-utils -Nlibxml2-utils-dbg -Npython-libxml2 -Npython-libxml2-dbg -Npython3-libxml2 -Npython3-libxml2-dbg
 	dh_strip -plibxml2-utils --dbg-package=libxml2-utils-dbg
-ifneq ($(DEB_BUILD_PROFILE),stage1)
+ifneq (,$(filter python-libxml2 python-libxml2-dbg,$(DOPACKAGES)))
 	dh_strip -ppython-libxml2 --dbg-package=python-libxml2-dbg
+endif
+ifneq (,$(filter python3-libxml2 python3-libxml2-dbg,$(DOPACKAGES)))
 	dh_strip -ppython3-libxml2 --dbg-package=python3-libxml2-dbg
 endif
 	$(foreach python, $(filter-out $(PYVER), $(PYVERS)),\
@@ -158,8 +171,8 @@
 	dh_gencontrol -- -Vdep:libicudbg="`dpkg-query -f '$${Depends}' -W libicu-dev | sed 's/.*\(libicu[0-9]*\).*/\1/'`-dbg"
 
 %:
-ifeq ($(DEB_BUILD_PROFILE),stage1)
-	dh $@ --with autoreconf
-else
-	dh $@ --parallel --with autoreconf,python2,python3
-endif
+	dh $@ \
+		--parallel \
+		--with autoreconf \
+		$(if $(filter python-libxml2 python-libxml2-dbg,$(DOPACKAGES)),--with python2) \
+		$(if $(filter python3-libxml2 python3-libxml2-dbg,$(DOPACKAGES)),--with python3)


More information about the debian-xml-sgml-pkgs mailing list