Source: cracklib2 Version: 2.9.2-5 Severity: wishlist Tags: patch User: helm...@debian.org Usertags: rebootstrap
Hi Jan, cracklib2 still uses the rather old DEB_STAGE method for supporting architecture bootstraps without an early python. Usage of DEB_STAGE has a number limitations and DEB_BUILD_PROFILES are now a relatively mature replacement. In particular the new technique extends the metadata to allow profile-dependent dependencies, expressing which packages will be built and combining multiple profiles. Thus the attached patch moves cracklib2 over to using the nopython profile. It retains backwards-compatibility with DEB_STAGE, but I have no clue how long we should keep that. I won't mind if you drop support for DEB_STAGE immediately in favour of DEB_BUILD_PROFILES. While at it, I took the liberty to add support for DEB_BUILD_OPTIONS=nocheck and for allowing pseudo-cross builds (where you can run host tools). There is not much urgency attached to this change. DEB_STAGE works. It would be nice to get this change into buster though. Helmut
diff --minimal -Nru cracklib2-2.9.2/debian/changelog cracklib2-2.9.2/debian/changelog --- cracklib2-2.9.2/debian/changelog 2017-05-27 11:41:18.000000000 +0200 +++ cracklib2-2.9.2/debian/changelog 2018-03-01 21:00:31.000000000 +0100 @@ -1,3 +1,10 @@ +cracklib2 (2.9.2-5.1) UNRELEASED; urgency=medium + + * Non-maintainer upload. + * Support nopython build profile. (Closes: #-1) + + -- Helmut Grohne <hel...@subdivi.de> Thu, 01 Mar 2018 21:00:31 +0100 + cracklib2 (2.9.2-5) unstable; urgency=medium * Add Breaks: cracklib-runtime (<< 2.9.2-4) to libcrack2 to configure diff --minimal -Nru cracklib2-2.9.2/debian/control cracklib2-2.9.2/debian/control --- cracklib2-2.9.2/debian/control 2017-05-27 11:06:18.000000000 +0200 +++ cracklib2-2.9.2/debian/control 2018-03-01 20:52:15.000000000 +0100 @@ -14,10 +14,10 @@ docbook-xml, dpkg-dev (>= 1.16.1~), libtool, - python-all-dev (>= 2.6.6-3~), - python-setuptools, - python3-all-dev (>= 3.1.3-2~), - python3-setuptools + python-all-dev (>= 2.6.6-3~) <!nopython>, + python-setuptools <!nopython>, + python3-all-dev (>= 3.1.3-2~) <!nopython>, + python3-setuptools <!nopython> Homepage: http://sourceforge.net/projects/cracklib Vcs-Git: https://anonscm.debian.org/git/pkg-cracklib/pkg-cracklib.git Vcs-Browser: https://anonscm.debian.org/gitweb/?p=pkg-cracklib/pkg-cracklib.git @@ -90,6 +90,7 @@ ${shlibs:Depends} Provides: ${python:Provides} Conflicts: python-crack +Build-Profiles: <!nopython> Description: Python bindings for password checker library cracklib2 This package provides Python bindings for cracklib. It contains a pythonic interface to cracklib's functions and some Python @@ -108,6 +109,7 @@ ${python3:Depends}, ${shlibs:Depends} Provides: ${python3:Provides} +Build-Profiles: <!nopython> Description: Python3 bindings for password checker library cracklib2 This package provides Python bindings for cracklib. It contains a pythonic interface to cracklib's functions and some Python diff --minimal -Nru cracklib2-2.9.2/debian/rules cracklib2-2.9.2/debian/rules --- cracklib2-2.9.2/debian/rules 2016-08-25 17:22:00.000000000 +0200 +++ cracklib2-2.9.2/debian/rules 2018-03-01 21:00:29.000000000 +0100 @@ -10,14 +10,17 @@ DEB_BUILD_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE) DEB_HOST_MULTIARCH ?= $(shell dpkg-architecture -qDEB_HOST_MULTIARCH) -ifneq ($(DEB_STAGE),stage1) +# backwards compatibility +ifeq ($(DEB_STAGE),stage1) +DEB_BUILD_PROFILES += stage1 +endif + +ifeq ($(filter nopython,$(DEB_BUILD_PROFILES)),) PYVERS := $(shell pyversions -vs) PY3VERS := $(shell py3versions -vs) -else -NOPYTHON_OPTIONS = -Npython-cracklib -Npython3-cracklib endif -ifeq ($(DEB_HOST_GNU_TYPE),$(DEB_BUILD_GNU_TYPE)) +ifeq ($(filter cross,$(DEB_BUILD_PROFILES)),) CRACKLIB_PACKER=$(CURDIR)/debian/buildtmp/base/util/cracklib-packer else CRACKLIB_PACKER=/usr/sbin/cracklib-packer @@ -48,7 +51,7 @@ override_dh_auto_build: $(MAKE) -C $(CURDIR)/debian/buildtmp/base -ifneq ($(DEB_STAGE),stage1) +ifeq ($(filter nopython,$(DEB_BUILD_PROFILES)),) ln -s $(CURDIR)/debian/crack.py $(CURDIR)/python; \ for i in $(PYVERS) $(PY3VERS); do \ cd $(CURDIR)/debian/buildtmp/python$$i; \ @@ -60,9 +63,9 @@ docbook2html -o debian/doc --nochunks debian/libcrack2.xml docbook2html -o debian/doc --nochunks debian/cracklib-runtime.xml +ifeq ($(filter nocheck,$(DEB_BUILD_OPTIONS))$(filter nopython,$(DEB_BUILD_PROFILES)),) override_dh_auto_test: mkdir $(CURDIR)/debian/tmp -ifneq ($(DEB_STAGE),stage1) $(CRACKLIB_PACKER) $(CURDIR)/debian/tmp/cracklib_dict < \ $(CURDIR)/dicts/cracklib-small for i in $(PYVERS) $(PY3VERS); do \ @@ -120,7 +123,7 @@ $(CURDIR)/debian/cracklib-runtime/usr/sbin/cracklib-packer \ $(CURDIR)/debian/cracklib-runtime/usr/sbin/cracklib-unpacker -ifneq ($(DEB_STAGE),stage1) +ifeq ($(filter nopython,$(DEB_BUILD_PROFILES)),) for i in $(PYVERS); do \ cd $(CURDIR)/debian/buildtmp/python$$i/python; \ python$$i setup.py install --install-layout=deb --root $(CURDIR)/debian/python-cracklib; \ @@ -139,13 +142,16 @@ override_dh_installchangelogs: dh_installchangelogs NEWS -ifneq ($(DEB_STAGE),stage1) +ifeq ($(filter nopython,$(DEB_BUILD_PROFILES)),) override_dh_python2: dh_python2 -ppython-cracklib override_dh_python3: dh_python3 -ppython3-cracklib + endif + %: - dh $@ --with python2,python3,autotools_dev $(NOPYTHON_OPTIONS) + dh $@ --with autotools_dev \ + $(if $(filter nopython,$(DEB_BUILD_PROFILES)),,--with python2 --with python3)