This is an automated email from the git hooks/post-receive script.

guillem pushed a commit to branch master
in repository dpkg.

View the commit online:
https://git.dpkg.org/cgit/dpkg/dpkg.git/commit/?id=8cb89b00cbd28b5e8b7d859ca01559a658980de0

commit 8cb89b00cbd28b5e8b7d859ca01559a658980de0
Author: Guillem Jover <[email protected]>
AuthorDate: Thu Apr 9 01:30:54 2015 +0200

    build: Handle multiple dpkg series gracefully
    
    Allow to specify which dpkg series we want to test. Default to the
    current one in dpkg.git master. And unify make variable usage that
    conditionalizes test on available features.
---
 Makefile                 | 43 +++++++++++++++++++++++++++++++++++++++++--
 README                   |  3 +++
 t-deb-conffiles/Makefile |  6 ++++++
 t-deb-format/Makefile    | 20 +++++++++++++-------
 t-provides/Makefile      | 10 ++++++++++
 t-triggers/Makefile      |  4 +++-
 6 files changed, 76 insertions(+), 10 deletions(-)

diff --git a/Makefile b/Makefile
index 5ca2e9ce3..bac0f8af1 100644
--- a/Makefile
+++ b/Makefile
@@ -4,8 +4,44 @@
 # Copyright © 2008-2013 Guillem Jover <[email protected]>
 #
 
+DPKG_SERIES := 1.18.x
+
 -include .pkg-tests.conf
 
+## Feature checks setup ##
+
+CHECK_VERSION = $(shell dpkg --compare-versions $(1) $(2) $(3) && echo yes)
+
+# dpkg == 1.16.x
+ifeq ($(call CHECK_VERSION,$(DPKG_SERIES),eq,1.16.x),yes)
+$(info using dpkg == 1.16.x)
+export DPKG_HAS_CONFIGURE_WITH_IMPLICIT_TRIGGER_PENDING := 1
+endif
+
+# dpkg >= 1.17.x
+ifeq ($(call CHECK_VERSION,$(DPKG_SERIES),ge,1.17.x),yes)
+$(info using dpkg >= 1.17.x)
+export DPKG_HAS_STRICT_CONFFILE_PARSER := 1
+export DPKG_HAS_STRICT_DEB_PARSER := 1
+export DPKG_HAS_DEB_CONTROL_UNIFORM_SUPPORT := 1
+export DPKG_HAS_VERSIONED_PROVIDES := 1
+export DPKG_HAS_PREDEPENDS_PROVIDES := 1
+export DPKG_HAS_TRIGGERS_AWAIT := 1
+export DPKG_HAS_MAINTSCRIPT_SWITCH_DIR_SYMLINK := 1
+export DPKG_HAS_CONFIGURE_WITH_IMPLICIT_TRIGGER_PENDING :=
+endif
+
+# dpkg >= 1.18.x
+ifeq ($(call CHECK_VERSION,$(DPKG_SERIES),ge,1.18.x),yes)
+$(info using dpkg >= 1.18.x)
+export DPKG_HAS_TRIGPROC_DEPCHECK := 1
+# once apt is fixed:
+#export DPKG_HAS_CONFIGURE_WITH_IMPLICIT_TRIGGER_PENDING := 1
+endif
+
+
+## Test cases ##
+
 TESTS_MANUAL :=
 TESTS_MANUAL += t-deb-lfs
 TESTS_MANUAL += t-conffile-prompt
@@ -53,13 +89,13 @@ TESTS_PASS += t-triggers
 TESTS_PASS += t-triggers-path
 TESTS_PASS += t-triggers-depends
 # This only works with dpkg >= 1.18.x
-ifdef DPKG_TRIGPROC_DEPCHECK
+ifdef DPKG_HAS_TRIGPROC_DEPCHECK
 TESTS_PASS += t-triggers-depcycle
 TESTS_PASS += t-triggers-depfarcycle
 endif
 TESTS_PASS += t-triggers-selfcycle
 TESTS_PASS += t-triggers-cycle
-ifdef DPKG_TRIGPROC_DEPCHECK
+ifdef DPKG_HAS_TRIGPROC_DEPCHECK
 TESTS_PASS += t-triggers-halt
 endif
 TESTS_PASS += t-file-replaces
@@ -83,10 +119,13 @@ TESTS_PASS += t-conffile-rename
 TESTS_PASS += t-queue-process-deconf-dupe
 TESTS_PASS += t-package-type
 TESTS_PASS += t-symlink-dir
+# This only works with dpkg >= 1.17.x
+ifdef DPKG_HAS_MAINTSCRIPT_SWITCH_DIR_SYMLINK
 TESTS_PASS += t-switch-symlink-abs-to-dir
 TESTS_PASS += t-switch-symlink-rel-to-dir
 TESTS_PASS += t-switch-dir-to-symlink-abs
 TESTS_PASS += t-switch-dir-to-symlink-rel
+endif
 TESTS_PASS += t-substvars
 TESTS_PASS += t-failinst-failrm
 TESTS_PASS += t-dir-extension-check
diff --git a/README b/README
index a8eab9755..b43876e72 100644
--- a/README
+++ b/README
@@ -8,6 +8,9 @@ There's a brief usage information when invoking “make” on the 
topdir.
 
 To use the tools from the dpkg build-tree, set DPKG_BUILDTREE accordingly.
 
+To use a different dpkg series than the current one, set DPKG_SERIES to
+something like 1.16.x.
+
 The DPKG_TESTSUITE_OPTIONS environment/make variable can be used to change
 the behaviour of the test runs, the following options are currently
 supported:
diff --git a/t-deb-conffiles/Makefile b/t-deb-conffiles/Makefile
index 57d215f09..32920e2e9 100644
--- a/t-deb-conffiles/Makefile
+++ b/t-deb-conffiles/Makefile
@@ -6,9 +6,15 @@ test-case:
          grep "warning: conffile name '.*' is duplicated" && echo Pass || \
          ( echo Fail: missing warning in output && exit 1 )
 
+ifdef DPKG_HAS_STRICT_CONFFILE_PARSER
        # Conffiles need a final newline to guarantee there's been no
        # accidental file truncation.
        ! $(DPKG_BUILD_DEB) pkg-conff-noel
+else
+       LC_ALL=C $(DPKG_BUILD_DEB) pkg-conff-noel 2>&1 | \
+         grep "warning: conffile name '.*' is too long" && echo Pass || \
+         ( echo Fail: missing warning in output && exit 1 )
+endif
 
 test-clean:
        $(RM) pkg-conff-dupe.deb
diff --git a/t-deb-format/Makefile b/t-deb-format/Makefile
index d5df5364d..13322481f 100644
--- a/t-deb-format/Makefile
+++ b/t-deb-format/Makefile
@@ -2,10 +2,10 @@ include ../Test.mk
 
 test-case:
        # extract the base members
-       $(DPKG_DEB) --uniform-compression -Znone -b pkg-templ
+       $(DPKG_DEB) -Zgzip -b pkg-templ
        ar x pkg-templ.deb
-       gzip -c control.tar >control.tar.gz
-       gzip -c data.tar >data.tar.gz
+       gunzip -c control.tar.gz >control.tar
+       gunzip -c data.tar.gz >data.tar
        xz -c control.tar >control.tar.xz
        xz -c data.tar >data.tar.xz
        bzip2 -c data.tar >data.tar.bz2
@@ -37,13 +37,13 @@ test-case:
 
        # test missing control member
        cp pkg-templ.deb pkg-missing-control.deb
-       ar d pkg-missing-control.deb control.tar
+       ar d pkg-missing-control.deb control.tar.gz
        ar t pkg-missing-control.deb
        ! $(DPKG_DEB) -I pkg-missing-control.deb
 
        # test missing data member
        cp pkg-templ.deb pkg-missing-data.deb
-       ar d pkg-missing-data.deb data.tar
+       ar d pkg-missing-data.deb data.tar.gz
        ar t pkg-missing-data.deb
        ! $(DPKG_DEB) -c pkg-missing-data.deb
 
@@ -55,15 +55,17 @@ test-case:
 
        # test mixed member (index 2)
        cp pkg-templ.deb pkg-mixed-2-member.deb
-       ar ra control.tar pkg-mixed-2-member.deb unknown
+       ar ra control.tar.gz pkg-mixed-2-member.deb unknown
        ar t pkg-mixed-2-member.deb
        ! $(DPKG_DEB) -c pkg-mixed-2-member.deb
 
+ifdef DPKG_HAS_STRICT_DEB_PARSER
        # test swapped control and data members
        cp pkg-templ.deb pkg-swap-members.deb
-       ar ma data.tar pkg-swap-members.deb control.tar
+       ar ma data.tar.gz pkg-swap-members.deb control.tar.gz
        ar t pkg-swap-members.deb
        ! $(DPKG_DEB) -I pkg-swap-members.deb
+endif
 
        # test extra member
        cp pkg-templ.deb pkg-extra-member.deb
@@ -83,6 +85,7 @@ test-case:
        ar t pkg-data-bad.deb
        ! $(DPKG_DEB) -c pkg-data-bad.deb
 
+ifdef DPKG_HAS_DEB_CONTROL_UNIFORM_SUPPORT
        # test control.tar member
        ar rc pkg-control-none.deb debian-binary control.tar data.tar
        ar t pkg-control-none.deb
@@ -92,6 +95,7 @@ test-case:
        ar rc pkg-control-xz.deb debian-binary control.tar.xz data.tar.xz
        ar t pkg-control-xz.deb
        $(DPKG_DEB) -c pkg-control-xz.deb
+endif
 
        # test data.tar member
        ar rc pkg-data-none.deb debian-binary control.tar.gz data.tar
@@ -118,11 +122,13 @@ test-case:
        ar t pkg-data-lzma.deb
        $(DPKG_DEB) -c pkg-data-lzma.deb
 
+ifdef DPKG_HAS_DEB_CONTROL_UNIFORM_SUPPORT
        # test non-uniform data.tar/control.tar member compression
        ar rc pkg-mixed-comp.deb debian-binary control.tar.xz data.tar.gz
        ar t pkg-mixed-comp.deb
        $(DPKG_DEB) -I pkg-mixed-comp.deb
        $(DPKG_DEB) -c pkg-mixed-comp.deb
+endif
 
 test-clean:
        $(RM) _ignore unknown debian-binary control.tar* data.tar*
diff --git a/t-provides/Makefile b/t-provides/Makefile
index 29b0f5dd1..0fa3797a6 100644
--- a/t-provides/Makefile
+++ b/t-provides/Makefile
@@ -33,6 +33,7 @@ test-depends:
 
        $(PURGE_DEPENDS)
 
+ifdef DPKG_HAS_VERSIONED_PROVIDES
        # Install the providing package (pkg-virtual 10)
        $(DPKG_INSTALL) pkg-provides-10.deb
        $(DPKG_INSTALL) pkg-depends.deb
@@ -65,6 +66,7 @@ test-depends:
        $(DPKG_INSTALL) pkg-provides-10-20.deb
 
        $(PURGE_DEPENDS)
+endif
 
        # The provided dependency is removed, pass
        $(DPKG_PURGE) pkg-provides
@@ -83,6 +85,7 @@ test-predepends:
        ! $(DPKG_UNPACK) pkg-predepends-le.deb
        ! $(DPKG_UNPACK) pkg-predepends-ge.deb
 
+ifdef DPKG_HAS_PREDEPENDS_PROVIDES
        # Install the providing package (versionless)
        $(DPKG_INSTALL) pkg-provides.deb
        $(DPKG_UNPACK) pkg-predepends.deb
@@ -94,7 +97,9 @@ test-predepends:
        ! $(DPKG_PURGE) pkg-provides
 
        $(PURGE_PREDEPENDS)
+endif
 
+ifdef DPKG_HAS_VERSIONED_PROVIDES
        # Install the providing package (pkg-virtual 10)
        $(DPKG_INSTALL) pkg-provides-10.deb
        $(DPKG_UNPACK) pkg-predepends.deb
@@ -127,6 +132,7 @@ test-predepends:
        $(DPKG_INSTALL) pkg-provides-10-20.deb
 
        $(PURGE_PREDEPENDS)
+endif
 
        # The provided predependency is removed, pass
        $(DPKG_PURGE) pkg-provides
@@ -159,6 +165,7 @@ test-breaks:
 
        $(PURGE_BREAKS)
 
+ifdef DPKG_HAS_VERSIONED_PROVIDES
        # Install the providing package (pkg-virtual 10)
        $(DPKG_INSTALL) pkg-provides-10.deb
        ! $(DPKG_INSTALL) pkg-breaks.deb
@@ -191,6 +198,7 @@ test-breaks:
        $(DPKG_INSTALL) pkg-provides-10-20.deb
 
        $(PURGE_BREAKS)
+endif
 
        # The provided dependency is removed, pass
        $(DPKG_PURGE) pkg-provides
@@ -223,6 +231,7 @@ test-conflicts:
 
        $(PURGE_CONFLICTS)
 
+ifdef DPKG_HAS_VERSIONED_PROVIDES
        # Install the providing package (pkg-virtual 10)
        $(DPKG_INSTALL) pkg-provides-10.deb
        ! $(DPKG_UNPACK) pkg-conflicts.deb
@@ -255,6 +264,7 @@ test-conflicts:
        $(DPKG_INSTALL) pkg-provides-10-20.deb
 
        $(PURGE_CONFLICTS)
+endif
 
        # The provided predependency is removed, pass
        $(DPKG_PURGE) pkg-provides
diff --git a/t-triggers/Makefile b/t-triggers/Makefile
index af2e074a8..84ab4d556 100644
--- a/t-triggers/Makefile
+++ b/t-triggers/Makefile
@@ -6,8 +6,10 @@ include ../Test.mk
 TEST_CASES += test-trigger-file
 TEST_CASES += test-trigger-explicit
 TEST_CASES += test-trigger-cmd
+ifdef DPKG_HAS_TRIGGERS_AWAIT
 TEST_CASES += test-trigger-await-file
 TEST_CASES += test-trigger-await-cmd
+endif
 TEST_CASES += test-trigger-noawait-file
 TEST_CASES += test-trigger-noawait-explicit
 TEST_CASES += test-trigger-noawait-cmd
@@ -63,7 +65,7 @@ test-trigger-file test-trigger-await-file:
        $(DPKG_CONFIGURE) pkg-trig-file
        # FIXME: Remove ifdef during dpkg 1.18.x cycle, after the apt
        # workaround has been reverted.
-ifdef DPKG_CONFIGURE_WITH_IMPLICIT_TRIGGER_PENDING
+ifdef DPKG_HAS_CONFIGURE_WITH_IMPLICIT_TRIGGER_PENDING
        $(call pkg_status_is,pkg-trig-file,install ok triggers-awaited)
        $(BEROOT) $(DPKG) --triggers-only pkg-triggers
 endif

-- 
Dpkg.Org's dpkg

Reply via email to