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

