Source: libsemanage
Version: 2.7-1
Tags: patch
User: helm...@debian.org
Usertags: rebootstrap

Thanks for adding support for build profiles. However the current
implementation leaves things to be wished for. The idea with profiles is
that you can just specify them and packages will know which ones are
relevant to them and ignore others. Thus the variable DEB_BUILD_PROFILES
was called with a plural. However building libsemanage with stage1 and
another profile causes a gross mess, because it only checks whether
DEB_BUILD_PROFILES is exactly stage1. This is wrong. The typical idiom
here is:

    ineq ($(filter stage1,$(DEB_BUILD_PROFILES)),)
    do something for stage1
    endif

In the attached patch, I am using another idiom that seems like a better
match here:

    ineq ($(filter somebinarypackage,$(DOPACKAGES)),)
    do something for somebinarypackage
    endif

The latter idiom makes renaming profiles easier. Please consider
applying it.

Helmut
diff --minimal -Nru libsemanage-2.7/debian/changelog 
libsemanage-2.7/debian/changelog
--- libsemanage-2.7/debian/changelog    2017-09-10 01:07:48.000000000 +0200
+++ libsemanage-2.7/debian/changelog    2017-09-12 07:38:23.000000000 +0200
@@ -1,3 +1,10 @@
+libsemanage (2.7-1.1) UNRELEASED; urgency=medium
+
+  * Non-maintainer upload.
+  * Support being built with multiple build profiles. (Closes: #-1)
+
+ -- Helmut Grohne <hel...@subdivi.de>  Tue, 12 Sep 2017 07:38:23 +0200
+
 libsemanage (2.7-1) unstable; urgency=medium
 
   * New upstream release
diff --minimal -Nru libsemanage-2.7/debian/rules libsemanage-2.7/debian/rules
--- libsemanage-2.7/debian/rules        2017-09-10 01:07:48.000000000 +0200
+++ libsemanage-2.7/debian/rules        2017-09-12 07:38:23.000000000 +0200
@@ -3,12 +3,20 @@
 
 DEB_HOST_MULTIARCH ?= $(shell dpkg-architecture -qDEB_HOST_MULTIARCH)
 
-ifeq ($(DEB_BUILD_PROFILES),stage1)
-export DH_OPTIONS += -Nruby-semanage -Npython-semanage -Npython3-semanage
-else
+DOPACKAGES = $(shell dh_listpackages)
+
+DH_ADDONS=
+ifneq ($(filter python-semanage,$(DOPACKAGES)),)
 PYVERSIONS = $(shell pyversions -rv)
+DH_ADDONS += --with=python2
+endif
+ifneq ($(filter python3-semanage,$(DOPACKAGES)),)
 PY3VERSIONS = $(shell py3versions -rv)
+DH_ADDONS += --with=python3
+endif
+ifneq ($(filter ruby-semanage,$(DOPACKAGES)),)
 RUBY_VERSIONS := $(shell dh_ruby --print-supported)
+DH_ADDONS += --with=ruby
 endif
 
 # The build system doesn't use CPPFLAGS, pass them to CFLAGS to enable the
@@ -16,24 +24,23 @@
 export DEB_CFLAGS_MAINT_APPEND = $(shell dpkg-buildflags --get CPPFLAGS)
 
 %:
-ifeq ($(DEB_BUILD_PROFILES),stage1)
-       dh $@
-else
-       dh $@ --with python2 --with ruby --with python3
-endif
+       dh $@ $(DH_ADDONS)
 
 override_dh_auto_build:
        $(MAKE) all LIBBASE="lib/${DEB_HOST_MULTIARCH}" 
SELINUXEXECDIR="usr/lib/selinux"
 
-ifneq ($(DEB_BUILD_PROFILES),stage1)
-       for version in $(PYVERSIONS); do              \
+ifneq ($(filter python-semanage,$(DOPACKAGES)),)
+       set -e; for version in $(PYVERSIONS); do         \
          $(MAKE) pywrap PYTHON=python$$version PYLIBS=; \
        done;
-       for version in $(PY3VERSIONS); do              \
+endif
+ifneq ($(filter python3-semanage,$(DOPACKAGES)),)
+       set -e; for version in $(PY3VERSIONS); do        \
          $(MAKE) pywrap PYTHON=python$$version PYLIBS=; \
        done;
-
-       for version in $(RUBY_VERSIONS); do              \
+endif
+ifneq ($(filter ruby-semanage,$(DOPACKAGES)),)
+       set -e; for version in $(RUBY_VERSIONS); do      \
          $(MAKE) -C src rubywrap RUBY=$$version \
            RUBYLIBS="$$($$version -e 'puts "-L" + 
RbConfig::CONFIG["archlibdir"] + " " + 
RbConfig::CONFIG["LIBRUBYARG_SHARED"]')"; \
        done;
@@ -45,24 +52,27 @@
          SHLIBDIR="${CURDIR}/debian/tmp/usr/lib/${DEB_HOST_MULTIARCH}" \
          SELINUXEXECDIR="${CURDIR}/debian/tmp/usr/lib/selinux"
 
-ifneq ($(DEB_BUILD_PROFILES),stage1)
-       for version in $(PYVERSIONS); do              \
+ifneq ($(filter python-semanage,$(DOPACKAGES)),)
+       set -e; for version in $(PYVERSIONS); do         \
          $(MAKE) install-pywrap PYTHON=python$$version  \
            
PYSITEDIR="${CURDIR}/debian/tmp/usr/lib/python$$version/dist-packages"; \
        done;
-       for version in $(PY3VERSIONS); do              \
+endif
+ifneq ($(filter python3-semanage,$(DOPACKAGES)),)
+       set -e; for version in $(PY3VERSIONS); do        \
          $(MAKE) install-pywrap PYTHON=python$$version  \
            
PYSITEDIR="${CURDIR}/debian/tmp/usr/lib/python$$version/dist-packages"; \
        done;
-
-       for version in $(RUBY_VERSIONS); do              \
+endif
+ifneq ($(filter ruby-semanage,$(DOPACKAGES)),)
+       set -e; for version in $(RUBY_VERSIONS); do      \
          $(MAKE) -C src install-rubywrap RUBY=$$version 
DESTDIR="${CURDIR}/debian/tmp"; \
        done;
 endif
 
 override_dh_auto_clean:
-ifneq ($(DEB_BUILD_PROFILES),stage1)
-       for version in $(PYVERSIONS); do              \
+ifneq ($(filter python-semanage,$(DOPACKAGES)),)
+       set -e; for version in $(PYVERSIONS); do         \
          $(MAKE) clean PYTHON=python$$version;  \
        done;
 endif
@@ -72,8 +82,12 @@
 
 override_dh_fixperms:
        dh_fixperms
-       -chmod -x 
${CURDIR}/debian/python-semanage/usr/lib/python*/*-packages/semanage.py
-       -chmod -x 
${CURDIR}/debian/python3-semanage/usr/lib/python*/*-packages/semanage.py
+ifneq ($(filter python-semanage,$(DOPACKAGES)),)
+       chmod -x 
${CURDIR}/debian/python-semanage/usr/lib/python*/*-packages/semanage.py
+endif
+ifneq ($(filter python3-semanage,$(DOPACKAGES)),)
+       chmod -x 
${CURDIR}/debian/python3-semanage/usr/lib/python*/*-packages/semanage.py
+endif
 
 override_dh_auto_test:
        $(MAKE) test || true

Reply via email to