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)

Reply via email to