From cbffab246997fb5a06211dfb706b54e5ae5bb59f Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sun, 7 Apr 2024 16:58:51 +0200 Subject: Adding upstream version 1.21.22. Signed-off-by: Daniel Baumann --- src/Makefile.am | 178 + src/Makefile.in | 1402 +++++ src/at/atlocal.in | 32 + src/at/chdir.at | 491 ++ src/at/deb-content.at | 129 + src/at/deb-fields.at | 47 + src/at/deb-format.at | 601 ++ src/at/deb-split.at | 228 + src/at/divert.at | 639 ++ src/at/local.at | 132 + src/at/package.m4 | 7 + src/at/realpath.at | 86 + src/at/testsuite | 12702 +++++++++++++++++++++++++++++++++++++++ src/at/testsuite.at | 24 + src/common/actions.h | 78 + src/common/force.c | 404 ++ src/common/force.h | 85 + src/common/security-mac.h | 30 + src/common/selinux.c | 156 + src/deb/build.c | 730 +++ src/deb/dpkg-deb.h | 87 + src/deb/extract.c | 507 ++ src/deb/info.c | 305 + src/deb/main.c | 311 + src/divert/main.c | 884 +++ src/dpkg-db-backup.sh | 86 + src/dpkg-maintscript-helper.sh | 667 ++ src/dpkg-realpath.sh | 179 + src/main/archives.c | 1703 ++++++ src/main/archives.h | 99 + src/main/cleanup.c | 260 + src/main/configure.c | 829 +++ src/main/depcon.c | 704 +++ src/main/enquiry.c | 906 +++ src/main/errors.c | 137 + src/main/file-match.c | 49 + src/main/file-match.h | 35 + src/main/filters.c | 133 + src/main/filters.h | 37 + src/main/help.c | 359 ++ src/main/main.c | 779 +++ src/main/main.h | 305 + src/main/packages.c | 758 +++ src/main/perpkgstate.c | 43 + src/main/remove.c | 688 +++ src/main/script.c | 399 ++ src/main/select.c | 242 + src/main/trigproc.c | 576 ++ src/main/unpack.c | 1733 ++++++ src/main/update.c | 124 + src/main/verify.c | 243 + src/query/main.c | 881 +++ src/sh/dpkg-error.sh | 93 + src/split/dpkg-split.h | 84 + src/split/info.c | 291 + src/split/join.c | 151 + src/split/main.c | 185 + src/split/queue.c | 365 ++ src/split/split.c | 287 + src/statoverride/main.c | 421 ++ src/trigger/main.c | 270 + 61 files changed, 35376 insertions(+) create mode 100644 src/Makefile.am create mode 100644 src/Makefile.in create mode 100644 src/at/atlocal.in create mode 100644 src/at/chdir.at create mode 100644 src/at/deb-content.at create mode 100644 src/at/deb-fields.at create mode 100644 src/at/deb-format.at create mode 100644 src/at/deb-split.at create mode 100644 src/at/divert.at create mode 100644 src/at/local.at create mode 100644 src/at/package.m4 create mode 100644 src/at/realpath.at create mode 100755 src/at/testsuite create mode 100644 src/at/testsuite.at create mode 100644 src/common/actions.h create mode 100644 src/common/force.c create mode 100644 src/common/force.h create mode 100644 src/common/security-mac.h create mode 100644 src/common/selinux.c create mode 100644 src/deb/build.c create mode 100644 src/deb/dpkg-deb.h create mode 100644 src/deb/extract.c create mode 100644 src/deb/info.c create mode 100644 src/deb/main.c create mode 100644 src/divert/main.c create mode 100755 src/dpkg-db-backup.sh create mode 100755 src/dpkg-maintscript-helper.sh create mode 100755 src/dpkg-realpath.sh create mode 100644 src/main/archives.c create mode 100644 src/main/archives.h create mode 100644 src/main/cleanup.c create mode 100644 src/main/configure.c create mode 100644 src/main/depcon.c create mode 100644 src/main/enquiry.c create mode 100644 src/main/errors.c create mode 100644 src/main/file-match.c create mode 100644 src/main/file-match.h create mode 100644 src/main/filters.c create mode 100644 src/main/filters.h create mode 100644 src/main/help.c create mode 100644 src/main/main.c create mode 100644 src/main/main.h create mode 100644 src/main/packages.c create mode 100644 src/main/perpkgstate.c create mode 100644 src/main/remove.c create mode 100644 src/main/script.c create mode 100644 src/main/select.c create mode 100644 src/main/trigproc.c create mode 100644 src/main/unpack.c create mode 100644 src/main/update.c create mode 100644 src/main/verify.c create mode 100644 src/query/main.c create mode 100644 src/sh/dpkg-error.sh create mode 100644 src/split/dpkg-split.h create mode 100644 src/split/info.c create mode 100644 src/split/join.c create mode 100644 src/split/main.c create mode 100644 src/split/queue.c create mode 100644 src/split/split.c create mode 100644 src/statoverride/main.c create mode 100644 src/trigger/main.c (limited to 'src') diff --git a/src/Makefile.am b/src/Makefile.am new file mode 100644 index 0000000..4358165 --- /dev/null +++ b/src/Makefile.am @@ -0,0 +1,178 @@ +## Process this file with automake to produce Makefile.in + +AM_CPPFLAGS = \ + -DLOCALEDIR=\"$(localedir)\" \ + -DADMINDIR=\"$(admindir)\" \ + -idirafter $(top_srcdir)/lib/compat \ + -I$(top_builddir) \ + -I$(top_srcdir)/lib \ + -I$(srcdir)/common \ + # EOL +LDADD = \ + ../lib/dpkg/libdpkg.la \ + $(LIBINTL) \ + ../lib/compat/libcompat.la \ + # EOL + +EXTRA_DIST = +CLEANFILES = +DISTCLEANFILES = + +nobase_dist_pkgdata_DATA = \ + sh/dpkg-error.sh \ + # EOL + +bin_PROGRAMS = \ + dpkg \ + dpkg-deb \ + dpkg-divert \ + dpkg-query \ + dpkg-split \ + dpkg-statoverride \ + dpkg-trigger \ + # EOL + +bin_SCRIPTS = \ + dpkg-maintscript-helper \ + dpkg-realpath \ + # EOL + +pkglibexec_SCRIPTS = \ + dpkg-db-backup \ + # EOL + +EXTRA_DIST += \ + dpkg-db-backup.sh \ + dpkg-maintscript-helper.sh \ + dpkg-realpath.sh \ + # EOL + +CLEANFILES += \ + $(bin_SCRIPTS) \ + $(pkglibexec_SCRIPTS) \ + # EOL + +dpkg_SOURCES = \ + common/actions.h \ + common/force.c \ + common/force.h \ + common/security-mac.h \ + common/selinux.c \ + main/archives.c \ + main/archives.h \ + main/cleanup.c \ + main/configure.c \ + main/depcon.c \ + main/enquiry.c \ + main/errors.c \ + main/file-match.c \ + main/file-match.h \ + main/filters.c \ + main/filters.h \ + main/help.c \ + main/main.c \ + main/main.h \ + main/packages.c \ + main/perpkgstate.c \ + main/remove.c \ + main/script.c \ + main/select.c \ + main/trigproc.c \ + main/unpack.c \ + main/update.c \ + main/verify.c \ + # EOL + +dpkg_LDADD = \ + $(LDADD) \ + $(SELINUX_LIBS) \ + # EOL + +dpkg_deb_SOURCES = \ + deb/dpkg-deb.h \ + deb/build.c \ + deb/extract.c \ + deb/info.c \ + deb/main.c \ + # EOL + +dpkg_deb_LDADD = \ + $(LDADD) \ + $(Z_LIBS) \ + $(LZMA_LIBS) \ + $(ZSTD_LIBS) \ + $(BZ2_LIBS) \ + # EOL + +dpkg_divert_SOURCES = \ + divert/main.c \ + # EOL + +dpkg_query_SOURCES = \ + common/actions.h \ + query/main.c \ + # EOL + +dpkg_split_SOURCES = \ + split/dpkg-split.h \ + split/info.c \ + split/join.c \ + split/main.c \ + split/queue.c \ + split/split.c \ + # EOL + +dpkg_statoverride_SOURCES = \ + common/actions.h \ + common/force.c \ + common/force.h \ + common/security-mac.h \ + common/selinux.c \ + statoverride/main.c \ + # EOL + +dpkg_statoverride_LDADD = \ + $(LDADD) \ + $(SELINUX_LIBS) \ + # EOL + +dpkg_trigger_SOURCES = \ + trigger/main.c \ + # EOL + +SUFFIXES = + +include $(top_srcdir)/build-aux/subst.am + +install-data-local: + $(MKDIR_P) $(DESTDIR)$(pkgconfdir)/dpkg.cfg.d + $(MKDIR_P) $(DESTDIR)$(admindir)/info + $(MKDIR_P) $(DESTDIR)$(admindir)/parts + $(MKDIR_P) $(DESTDIR)$(admindir)/updates + +EXTRA_DIST += $(srcdir)/at/atlocal.in +EXTRA_DIST += $(srcdir)/at/package.m4 + +TESTSUITE_AT = $(srcdir)/at/testsuite.at +TESTSUITE_AT += $(srcdir)/at/local.at +TESTSUITE_AT += $(srcdir)/at/deb-format.at +TESTSUITE_AT += $(srcdir)/at/deb-fields.at +TESTSUITE_AT += $(srcdir)/at/deb-content.at +TESTSUITE_AT += $(srcdir)/at/deb-split.at +TESTSUITE_AT += $(srcdir)/at/realpath.at +TESTSUITE_AT += $(srcdir)/at/divert.at +TESTSUITE_AT += $(srcdir)/at/chdir.at +EXTRA_DIST += $(TESTSUITE_AT) + +TESTSUITE = $(srcdir)/at/testsuite +EXTRA_DIST += $(TESTSUITE) + +DISTCLEANFILES += at/atconfig + +include $(top_srcdir)/build-aux/autotest.am + +check-local: autotest-check + +installcheck-local: autotest-installcheck + +clean-local: autotest-clean diff --git a/src/Makefile.in b/src/Makefile.in new file mode 100644 index 0000000..0cb0672 --- /dev/null +++ b/src/Makefile.in @@ -0,0 +1,1402 @@ +# Makefile.in generated by automake 1.16.5 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2021 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# +# Build time variable substitution for generated files. +# + +# Shell support. + + + +VPATH = @srcdir@ +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +bin_PROGRAMS = dpkg$(EXEEXT) dpkg-deb$(EXEEXT) dpkg-divert$(EXEEXT) \ + dpkg-query$(EXEEXT) dpkg-split$(EXEEXT) \ + dpkg-statoverride$(EXEEXT) dpkg-trigger$(EXEEXT) +subdir = src +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/dpkg-arch.m4 \ + $(top_srcdir)/m4/dpkg-build.m4 \ + $(top_srcdir)/m4/dpkg-compiler.m4 \ + $(top_srcdir)/m4/dpkg-coverage.m4 \ + $(top_srcdir)/m4/dpkg-funcs.m4 $(top_srcdir)/m4/dpkg-libs.m4 \ + $(top_srcdir)/m4/dpkg-linker.m4 $(top_srcdir)/m4/dpkg-progs.m4 \ + $(top_srcdir)/m4/dpkg-types.m4 \ + $(top_srcdir)/m4/dpkg-unicode.m4 $(top_srcdir)/m4/gettext.m4 \ + $(top_srcdir)/m4/host-cpu-c-abi.m4 $(top_srcdir)/m4/iconv.m4 \ + $(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \ + $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \ + $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ + $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ + $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \ + $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \ + $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(nobase_dist_pkgdata_DATA) \ + $(am__DIST_COMMON) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(bindir)" \ + "$(DESTDIR)$(pkglibexecdir)" "$(DESTDIR)$(pkgdatadir)" +PROGRAMS = $(bin_PROGRAMS) +am__dirstamp = $(am__leading_dot)dirstamp +am_dpkg_OBJECTS = common/force.$(OBJEXT) common/selinux.$(OBJEXT) \ + main/archives.$(OBJEXT) main/cleanup.$(OBJEXT) \ + main/configure.$(OBJEXT) main/depcon.$(OBJEXT) \ + main/enquiry.$(OBJEXT) main/errors.$(OBJEXT) \ + main/file-match.$(OBJEXT) main/filters.$(OBJEXT) \ + main/help.$(OBJEXT) main/main.$(OBJEXT) \ + main/packages.$(OBJEXT) main/perpkgstate.$(OBJEXT) \ + main/remove.$(OBJEXT) main/script.$(OBJEXT) \ + main/select.$(OBJEXT) main/trigproc.$(OBJEXT) \ + main/unpack.$(OBJEXT) main/update.$(OBJEXT) \ + main/verify.$(OBJEXT) +dpkg_OBJECTS = $(am_dpkg_OBJECTS) +am__DEPENDENCIES_1 = +am__DEPENDENCIES_2 = ../lib/dpkg/libdpkg.la $(am__DEPENDENCIES_1) \ + ../lib/compat/libcompat.la +dpkg_DEPENDENCIES = $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_1) +AM_V_lt = $(am__v_lt_@AM_V@) +am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) +am__v_lt_0 = --silent +am__v_lt_1 = +am_dpkg_deb_OBJECTS = deb/build.$(OBJEXT) deb/extract.$(OBJEXT) \ + deb/info.$(OBJEXT) deb/main.$(OBJEXT) +dpkg_deb_OBJECTS = $(am_dpkg_deb_OBJECTS) +dpkg_deb_DEPENDENCIES = $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_1) \ + $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \ + $(am__DEPENDENCIES_1) +am_dpkg_divert_OBJECTS = divert/main.$(OBJEXT) +dpkg_divert_OBJECTS = $(am_dpkg_divert_OBJECTS) +dpkg_divert_LDADD = $(LDADD) +dpkg_divert_DEPENDENCIES = ../lib/dpkg/libdpkg.la \ + $(am__DEPENDENCIES_1) ../lib/compat/libcompat.la +am_dpkg_query_OBJECTS = query/main.$(OBJEXT) +dpkg_query_OBJECTS = $(am_dpkg_query_OBJECTS) +dpkg_query_LDADD = $(LDADD) +dpkg_query_DEPENDENCIES = ../lib/dpkg/libdpkg.la $(am__DEPENDENCIES_1) \ + ../lib/compat/libcompat.la +am_dpkg_split_OBJECTS = split/info.$(OBJEXT) split/join.$(OBJEXT) \ + split/main.$(OBJEXT) split/queue.$(OBJEXT) \ + split/split.$(OBJEXT) +dpkg_split_OBJECTS = $(am_dpkg_split_OBJECTS) +dpkg_split_LDADD = $(LDADD) +dpkg_split_DEPENDENCIES = ../lib/dpkg/libdpkg.la $(am__DEPENDENCIES_1) \ + ../lib/compat/libcompat.la +am_dpkg_statoverride_OBJECTS = common/force.$(OBJEXT) \ + common/selinux.$(OBJEXT) statoverride/main.$(OBJEXT) +dpkg_statoverride_OBJECTS = $(am_dpkg_statoverride_OBJECTS) +dpkg_statoverride_DEPENDENCIES = $(am__DEPENDENCIES_2) \ + $(am__DEPENDENCIES_1) +am_dpkg_trigger_OBJECTS = trigger/main.$(OBJEXT) +dpkg_trigger_OBJECTS = $(am_dpkg_trigger_OBJECTS) +dpkg_trigger_LDADD = $(LDADD) +dpkg_trigger_DEPENDENCIES = ../lib/dpkg/libdpkg.la \ + $(am__DEPENDENCIES_1) ../lib/compat/libcompat.la +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +SCRIPTS = $(bin_SCRIPTS) $(pkglibexec_SCRIPTS) +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = +depcomp = $(SHELL) $(top_srcdir)/build-aux/depcomp +am__maybe_remake_depfiles = depfiles +am__depfiles_remade = common/$(DEPDIR)/force.Po \ + common/$(DEPDIR)/selinux.Po deb/$(DEPDIR)/build.Po \ + deb/$(DEPDIR)/extract.Po deb/$(DEPDIR)/info.Po \ + deb/$(DEPDIR)/main.Po divert/$(DEPDIR)/main.Po \ + main/$(DEPDIR)/archives.Po main/$(DEPDIR)/cleanup.Po \ + main/$(DEPDIR)/configure.Po main/$(DEPDIR)/depcon.Po \ + main/$(DEPDIR)/enquiry.Po main/$(DEPDIR)/errors.Po \ + main/$(DEPDIR)/file-match.Po main/$(DEPDIR)/filters.Po \ + main/$(DEPDIR)/help.Po main/$(DEPDIR)/main.Po \ + main/$(DEPDIR)/packages.Po main/$(DEPDIR)/perpkgstate.Po \ + main/$(DEPDIR)/remove.Po main/$(DEPDIR)/script.Po \ + main/$(DEPDIR)/select.Po main/$(DEPDIR)/trigproc.Po \ + main/$(DEPDIR)/unpack.Po main/$(DEPDIR)/update.Po \ + main/$(DEPDIR)/verify.Po query/$(DEPDIR)/main.Po \ + split/$(DEPDIR)/info.Po split/$(DEPDIR)/join.Po \ + split/$(DEPDIR)/main.Po split/$(DEPDIR)/queue.Po \ + split/$(DEPDIR)/split.Po statoverride/$(DEPDIR)/main.Po \ + trigger/$(DEPDIR)/main.Po +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_@AM_V@) +am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_@AM_V@) +am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(dpkg_SOURCES) $(dpkg_deb_SOURCES) $(dpkg_divert_SOURCES) \ + $(dpkg_query_SOURCES) $(dpkg_split_SOURCES) \ + $(dpkg_statoverride_SOURCES) $(dpkg_trigger_SOURCES) +DIST_SOURCES = $(dpkg_SOURCES) $(dpkg_deb_SOURCES) \ + $(dpkg_divert_SOURCES) $(dpkg_query_SOURCES) \ + $(dpkg_split_SOURCES) $(dpkg_statoverride_SOURCES) \ + $(dpkg_trigger_SOURCES) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +DATA = $(nobase_dist_pkgdata_DATA) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +am__DIST_COMMON = $(srcdir)/Makefile.in \ + $(top_srcdir)/build-aux/autotest.am \ + $(top_srcdir)/build-aux/depcomp \ + $(top_srcdir)/build-aux/subst.am +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOM4TE = @AUTOM4TE@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BUILD_DEVEL_DOCS = @BUILD_DEVEL_DOCS@ +BZ2_LIBS = @BZ2_LIBS@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CSCOPE = @CSCOPE@ +CTAGS = @CTAGS@ +CURSES_LIBS = @CURSES_LIBS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DOXYGEN = @DOXYGEN@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +ETAGS = @ETAGS@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +FILECMD = @FILECMD@ +GCOV = @GCOV@ +GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ +GMSGFMT = @GMSGFMT@ +GMSGFMT_015 = @GMSGFMT_015@ +GREP = @GREP@ +HAVE_DOT = @HAVE_DOT@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INTLLIBS = @INTLLIBS@ +INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ +KVM_LIBS = @KVM_LIBS@ +LCOV = @LCOV@ +LCOV_GENHTML = @LCOV_GENHTML@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBICONV = @LIBICONV@ +LIBINTL = @LIBINTL@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBICONV = @LTLIBICONV@ +LTLIBINTL = @LTLIBINTL@ +LTLIBOBJS = @LTLIBOBJS@ +LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ +LZMA_LIBS = @LZMA_LIBS@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MD_LIBS = @MD_LIBS@ +MKDIR_P = @MKDIR_P@ +MSGFMT = @MSGFMT@ +MSGMERGE = @MSGMERGE@ +MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_BUG_WEB = @PACKAGE_BUG_WEB@ +PACKAGE_COPYRIGHT_HOLDER = @PACKAGE_COPYRIGHT_HOLDER@ +PACKAGE_CPAN_NAME = @PACKAGE_CPAN_NAME@ +PACKAGE_DIST_IS_RELEASE = @PACKAGE_DIST_IS_RELEASE@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_RELEASE_DATE = @PACKAGE_RELEASE_DATE@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VCS_TYPE = @PACKAGE_VCS_TYPE@ +PACKAGE_VCS_URL = @PACKAGE_VCS_URL@ +PACKAGE_VCS_WEB = @PACKAGE_VCS_WEB@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATCH = @PATCH@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PERL = @PERL@ +PERL_COVER = @PERL_COVER@ +PERL_COVERAGE = @PERL_COVERAGE@ +PERL_LIBDIR = @PERL_LIBDIR@ +PERL_MIN_VERSION = @PERL_MIN_VERSION@ +PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ +PO4A = @PO4A@ +POD2MAN = @POD2MAN@ +POSUB = @POSUB@ +PS_LIBS = @PS_LIBS@ +RANLIB = @RANLIB@ +SED = @SED@ +SELINUX_CFLAGS = @SELINUX_CFLAGS@ +SELINUX_LIBS = @SELINUX_LIBS@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SOCKET_LIBS = @SOCKET_LIBS@ +STRIP = @STRIP@ +TAR = @TAR@ +USE_NLS = @USE_NLS@ +USE_PO4A = @USE_PO4A@ +USE_UNICODE = @USE_UNICODE@ +VERSION = @VERSION@ +XGETTEXT = @XGETTEXT@ +XGETTEXT_015 = @XGETTEXT_015@ +XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ +ZSTD_LIBS = @ZSTD_LIBS@ +Z_LIBS = @Z_LIBS@ +Z_NG_LIBS = @Z_NG_LIBS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +admindir = @admindir@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +backupsdir = @backupsdir@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +devlibdir = @devlibdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +logdir = @logdir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +pkgconfdir = @pkgconfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +runstatedir = @runstatedir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +zshcompletionsdir = @zshcompletionsdir@ +AM_CPPFLAGS = \ + -DLOCALEDIR=\"$(localedir)\" \ + -DADMINDIR=\"$(admindir)\" \ + -idirafter $(top_srcdir)/lib/compat \ + -I$(top_builddir) \ + -I$(top_srcdir)/lib \ + -I$(srcdir)/common \ + # EOL + +LDADD = \ + ../lib/dpkg/libdpkg.la \ + $(LIBINTL) \ + ../lib/compat/libcompat.la \ + # EOL + +EXTRA_DIST = dpkg-db-backup.sh dpkg-maintscript-helper.sh \ + dpkg-realpath.sh $(srcdir)/at/atlocal.in \ + $(srcdir)/at/package.m4 $(TESTSUITE_AT) $(TESTSUITE) \ + $(srcdir)/at/package.m4 +CLEANFILES = $(bin_SCRIPTS) $(pkglibexec_SCRIPTS) # EOL +DISTCLEANFILES = at/atconfig at/atconfig +nobase_dist_pkgdata_DATA = \ + sh/dpkg-error.sh \ + # EOL + +bin_SCRIPTS = \ + dpkg-maintscript-helper \ + dpkg-realpath \ + # EOL + +pkglibexec_SCRIPTS = \ + dpkg-db-backup \ + # EOL + +dpkg_SOURCES = \ + common/actions.h \ + common/force.c \ + common/force.h \ + common/security-mac.h \ + common/selinux.c \ + main/archives.c \ + main/archives.h \ + main/cleanup.c \ + main/configure.c \ + main/depcon.c \ + main/enquiry.c \ + main/errors.c \ + main/file-match.c \ + main/file-match.h \ + main/filters.c \ + main/filters.h \ + main/help.c \ + main/main.c \ + main/main.h \ + main/packages.c \ + main/perpkgstate.c \ + main/remove.c \ + main/script.c \ + main/select.c \ + main/trigproc.c \ + main/unpack.c \ + main/update.c \ + main/verify.c \ + # EOL + +dpkg_LDADD = \ + $(LDADD) \ + $(SELINUX_LIBS) \ + # EOL + +dpkg_deb_SOURCES = \ + deb/dpkg-deb.h \ + deb/build.c \ + deb/extract.c \ + deb/info.c \ + deb/main.c \ + # EOL + +dpkg_deb_LDADD = \ + $(LDADD) \ + $(Z_LIBS) \ + $(LZMA_LIBS) \ + $(ZSTD_LIBS) \ + $(BZ2_LIBS) \ + # EOL + +dpkg_divert_SOURCES = \ + divert/main.c \ + # EOL + +dpkg_query_SOURCES = \ + common/actions.h \ + query/main.c \ + # EOL + +dpkg_split_SOURCES = \ + split/dpkg-split.h \ + split/info.c \ + split/join.c \ + split/main.c \ + split/queue.c \ + split/split.c \ + # EOL + +dpkg_statoverride_SOURCES = \ + common/actions.h \ + common/force.c \ + common/force.h \ + common/security-mac.h \ + common/selinux.c \ + statoverride/main.c \ + # EOL + +dpkg_statoverride_LDADD = \ + $(LDADD) \ + $(SELINUX_LIBS) \ + # EOL + +dpkg_trigger_SOURCES = \ + trigger/main.c \ + # EOL + +SUFFIXES = .sh .pl +do_shell_subst = $(AM_V_GEN) $(SED) \ + -e "s:^ADMINDIR=.*$$:ADMINDIR='$(admindir)':" \ + -e "s:^BACKUPSDIR=.*$$:BACKUPSDIR='$(backupsdir)':" \ + -e "s:^PKGDATADIR_DEFAULT=.*$$:PKGDATADIR_DEFAULT='$(pkgdatadir)':" \ + -e "s:^version=['\"][^'\"]*[\"']:version=\"$(PACKAGE_VERSION)\":" \ + # EOL + + +# Perl support. +do_perl_subst = $(AM_V_GEN) $(SED) \ + -e "s:^\#![[:space:]]*/usr/bin/perl:\#!$(PERL):" \ + -e "s:our \$$CONFDIR = .*;:our \$$CONFDIR = '$(pkgconfdir)';:" \ + -e "s:our \$$ADMINDIR = .*;:our \$$ADMINDIR = '$(admindir)';:" \ + -e "s:our \$$LIBDIR = .*;:our \$$LIBDIR = '$(pkglibexecdir)';:" \ + -e "s:our \$$DATADIR = .*;:our \$$DATADIR = '$(pkgdatadir)';:" \ + -e "s:our \$$PROGMAKE = .*;:our \$$PROGMAKE = '$(MAKE)';:" \ + -e "s:our \$$PROGTAR = .*;:our \$$PROGTAR = '$(TAR)';:" \ + -e "s:our \$$PROGPATCH = .*;:our \$$PROGPATCH = '$(PATCH)';:" \ + -e "s:our \$$PROGVERSION = .*;:our \$$PROGVERSION = '$(PACKAGE_VERSION)';:" \ + # EOL + + +# Makefile support. +do_make_subst = $(AM_V_GEN) $(SED) \ + -e "s:dpkg_datadir[[:space:]]*=[[:space:]]*[^[:space:]]*:dpkg_datadir = $(pkgdatadir):" \ + # EOL + +TESTSUITE_AT = $(srcdir)/at/testsuite.at $(srcdir)/at/local.at \ + $(srcdir)/at/deb-format.at $(srcdir)/at/deb-fields.at \ + $(srcdir)/at/deb-content.at $(srcdir)/at/deb-split.at \ + $(srcdir)/at/realpath.at $(srcdir)/at/divert.at \ + $(srcdir)/at/chdir.at +TESTSUITE = $(srcdir)/at/testsuite +AUTOTEST_DEPS = at/atconfig at/atlocal $(TESTSUITE) +AUTOTEST = $(AUTOM4TE) --language=autotest +all: all-am + +.SUFFIXES: +.SUFFIXES: .sh .pl .c .lo .o .obj +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(top_srcdir)/build-aux/subst.am $(top_srcdir)/build-aux/autotest.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --foreign src/Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ + esac; +$(top_srcdir)/build-aux/subst.am $(top_srcdir)/build-aux/autotest.am $(am__empty): + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): +install-binPROGRAMS: $(bin_PROGRAMS) + @$(NORMAL_INSTALL) + @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \ + fi; \ + for p in $$list; do echo "$$p $$p"; done | \ + sed 's/$(EXEEXT)$$//' | \ + while read p p1; do if test -f $$p \ + || test -f $$p1 \ + ; then echo "$$p"; echo "$$p"; else :; fi; \ + done | \ + sed -e 'p;s,.*/,,;n;h' \ + -e 's|.*|.|' \ + -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ + sed 'N;N;N;s,\n, ,g' | \ + $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ + { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ + if ($$2 == $$4) files[d] = files[d] " " $$1; \ + else { print "f", $$3 "/" $$4, $$1; } } \ + END { for (d in files) print "f", d, files[d] }' | \ + while read type dir files; do \ + if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ + test -z "$$files" || { \ + echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \ + $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \ + } \ + ; done + +uninstall-binPROGRAMS: + @$(NORMAL_UNINSTALL) + @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ + files=`for p in $$list; do echo "$$p"; done | \ + sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ + -e 's/$$/$(EXEEXT)/' \ + `; \ + test -n "$$list" || exit 0; \ + echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \ + cd "$(DESTDIR)$(bindir)" && rm -f $$files + +clean-binPROGRAMS: + @list='$(bin_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list +common/$(am__dirstamp): + @$(MKDIR_P) common + @: > common/$(am__dirstamp) +common/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) common/$(DEPDIR) + @: > common/$(DEPDIR)/$(am__dirstamp) +common/force.$(OBJEXT): common/$(am__dirstamp) \ + common/$(DEPDIR)/$(am__dirstamp) +common/selinux.$(OBJEXT): common/$(am__dirstamp) \ + common/$(DEPDIR)/$(am__dirstamp) +main/$(am__dirstamp): + @$(MKDIR_P) main + @: > main/$(am__dirstamp) +main/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) main/$(DEPDIR) + @: > main/$(DEPDIR)/$(am__dirstamp) +main/archives.$(OBJEXT): main/$(am__dirstamp) \ + main/$(DEPDIR)/$(am__dirstamp) +main/cleanup.$(OBJEXT): main/$(am__dirstamp) \ + main/$(DEPDIR)/$(am__dirstamp) +main/configure.$(OBJEXT): main/$(am__dirstamp) \ + main/$(DEPDIR)/$(am__dirstamp) +main/depcon.$(OBJEXT): main/$(am__dirstamp) \ + main/$(DEPDIR)/$(am__dirstamp) +main/enquiry.$(OBJEXT): main/$(am__dirstamp) \ + main/$(DEPDIR)/$(am__dirstamp) +main/errors.$(OBJEXT): main/$(am__dirstamp) \ + main/$(DEPDIR)/$(am__dirstamp) +main/file-match.$(OBJEXT): main/$(am__dirstamp) \ + main/$(DEPDIR)/$(am__dirstamp) +main/filters.$(OBJEXT): main/$(am__dirstamp) \ + main/$(DEPDIR)/$(am__dirstamp) +main/help.$(OBJEXT): main/$(am__dirstamp) \ + main/$(DEPDIR)/$(am__dirstamp) +main/main.$(OBJEXT): main/$(am__dirstamp) \ + main/$(DEPDIR)/$(am__dirstamp) +main/packages.$(OBJEXT): main/$(am__dirstamp) \ + main/$(DEPDIR)/$(am__dirstamp) +main/perpkgstate.$(OBJEXT): main/$(am__dirstamp) \ + main/$(DEPDIR)/$(am__dirstamp) +main/remove.$(OBJEXT): main/$(am__dirstamp) \ + main/$(DEPDIR)/$(am__dirstamp) +main/script.$(OBJEXT): main/$(am__dirstamp) \ + main/$(DEPDIR)/$(am__dirstamp) +main/select.$(OBJEXT): main/$(am__dirstamp) \ + main/$(DEPDIR)/$(am__dirstamp) +main/trigproc.$(OBJEXT): main/$(am__dirstamp) \ + main/$(DEPDIR)/$(am__dirstamp) +main/unpack.$(OBJEXT): main/$(am__dirstamp) \ + main/$(DEPDIR)/$(am__dirstamp) +main/update.$(OBJEXT): main/$(am__dirstamp) \ + main/$(DEPDIR)/$(am__dirstamp) +main/verify.$(OBJEXT): main/$(am__dirstamp) \ + main/$(DEPDIR)/$(am__dirstamp) + +dpkg$(EXEEXT): $(dpkg_OBJECTS) $(dpkg_DEPENDENCIES) $(EXTRA_dpkg_DEPENDENCIES) + @rm -f dpkg$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(dpkg_OBJECTS) $(dpkg_LDADD) $(LIBS) +deb/$(am__dirstamp): + @$(MKDIR_P) deb + @: > deb/$(am__dirstamp) +deb/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) deb/$(DEPDIR) + @: > deb/$(DEPDIR)/$(am__dirstamp) +deb/build.$(OBJEXT): deb/$(am__dirstamp) deb/$(DEPDIR)/$(am__dirstamp) +deb/extract.$(OBJEXT): deb/$(am__dirstamp) \ + deb/$(DEPDIR)/$(am__dirstamp) +deb/info.$(OBJEXT): deb/$(am__dirstamp) deb/$(DEPDIR)/$(am__dirstamp) +deb/main.$(OBJEXT): deb/$(am__dirstamp) deb/$(DEPDIR)/$(am__dirstamp) + +dpkg-deb$(EXEEXT): $(dpkg_deb_OBJECTS) $(dpkg_deb_DEPENDENCIES) $(EXTRA_dpkg_deb_DEPENDENCIES) + @rm -f dpkg-deb$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(dpkg_deb_OBJECTS) $(dpkg_deb_LDADD) $(LIBS) +divert/$(am__dirstamp): + @$(MKDIR_P) divert + @: > divert/$(am__dirstamp) +divert/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) divert/$(DEPDIR) + @: > divert/$(DEPDIR)/$(am__dirstamp) +divert/main.$(OBJEXT): divert/$(am__dirstamp) \ + divert/$(DEPDIR)/$(am__dirstamp) + +dpkg-divert$(EXEEXT): $(dpkg_divert_OBJECTS) $(dpkg_divert_DEPENDENCIES) $(EXTRA_dpkg_divert_DEPENDENCIES) + @rm -f dpkg-divert$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(dpkg_divert_OBJECTS) $(dpkg_divert_LDADD) $(LIBS) +query/$(am__dirstamp): + @$(MKDIR_P) query + @: > query/$(am__dirstamp) +query/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) query/$(DEPDIR) + @: > query/$(DEPDIR)/$(am__dirstamp) +query/main.$(OBJEXT): query/$(am__dirstamp) \ + query/$(DEPDIR)/$(am__dirstamp) + +dpkg-query$(EXEEXT): $(dpkg_query_OBJECTS) $(dpkg_query_DEPENDENCIES) $(EXTRA_dpkg_query_DEPENDENCIES) + @rm -f dpkg-query$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(dpkg_query_OBJECTS) $(dpkg_query_LDADD) $(LIBS) +split/$(am__dirstamp): + @$(MKDIR_P) split + @: > split/$(am__dirstamp) +split/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) split/$(DEPDIR) + @: > split/$(DEPDIR)/$(am__dirstamp) +split/info.$(OBJEXT): split/$(am__dirstamp) \ + split/$(DEPDIR)/$(am__dirstamp) +split/join.$(OBJEXT): split/$(am__dirstamp) \ + split/$(DEPDIR)/$(am__dirstamp) +split/main.$(OBJEXT): split/$(am__dirstamp) \ + split/$(DEPDIR)/$(am__dirstamp) +split/queue.$(OBJEXT): split/$(am__dirstamp) \ + split/$(DEPDIR)/$(am__dirstamp) +split/split.$(OBJEXT): split/$(am__dirstamp) \ + split/$(DEPDIR)/$(am__dirstamp) + +dpkg-split$(EXEEXT): $(dpkg_split_OBJECTS) $(dpkg_split_DEPENDENCIES) $(EXTRA_dpkg_split_DEPENDENCIES) + @rm -f dpkg-split$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(dpkg_split_OBJECTS) $(dpkg_split_LDADD) $(LIBS) +statoverride/$(am__dirstamp): + @$(MKDIR_P) statoverride + @: > statoverride/$(am__dirstamp) +statoverride/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) statoverride/$(DEPDIR) + @: > statoverride/$(DEPDIR)/$(am__dirstamp) +statoverride/main.$(OBJEXT): statoverride/$(am__dirstamp) \ + statoverride/$(DEPDIR)/$(am__dirstamp) + +dpkg-statoverride$(EXEEXT): $(dpkg_statoverride_OBJECTS) $(dpkg_statoverride_DEPENDENCIES) $(EXTRA_dpkg_statoverride_DEPENDENCIES) + @rm -f dpkg-statoverride$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(dpkg_statoverride_OBJECTS) $(dpkg_statoverride_LDADD) $(LIBS) +trigger/$(am__dirstamp): + @$(MKDIR_P) trigger + @: > trigger/$(am__dirstamp) +trigger/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) trigger/$(DEPDIR) + @: > trigger/$(DEPDIR)/$(am__dirstamp) +trigger/main.$(OBJEXT): trigger/$(am__dirstamp) \ + trigger/$(DEPDIR)/$(am__dirstamp) + +dpkg-trigger$(EXEEXT): $(dpkg_trigger_OBJECTS) $(dpkg_trigger_DEPENDENCIES) $(EXTRA_dpkg_trigger_DEPENDENCIES) + @rm -f dpkg-trigger$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(dpkg_trigger_OBJECTS) $(dpkg_trigger_LDADD) $(LIBS) +install-binSCRIPTS: $(bin_SCRIPTS) + @$(NORMAL_INSTALL) + @list='$(bin_SCRIPTS)'; test -n "$(bindir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \ + done | \ + sed -e 'p;s,.*/,,;n' \ + -e 'h;s|.*|.|' \ + -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \ + $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \ + { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ + if ($$2 == $$4) { files[d] = files[d] " " $$1; \ + if (++n[d] == $(am__install_max)) { \ + print "f", d, files[d]; n[d] = 0; files[d] = "" } } \ + else { print "f", d "/" $$4, $$1 } } \ + END { for (d in files) print "f", d, files[d] }' | \ + while read type dir files; do \ + if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ + test -z "$$files" || { \ + echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(bindir)$$dir'"; \ + $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \ + } \ + ; done + +uninstall-binSCRIPTS: + @$(NORMAL_UNINSTALL) + @list='$(bin_SCRIPTS)'; test -n "$(bindir)" || exit 0; \ + files=`for p in $$list; do echo "$$p"; done | \ + sed -e 's,.*/,,;$(transform)'`; \ + dir='$(DESTDIR)$(bindir)'; $(am__uninstall_files_from_dir) +install-pkglibexecSCRIPTS: $(pkglibexec_SCRIPTS) + @$(NORMAL_INSTALL) + @list='$(pkglibexec_SCRIPTS)'; test -n "$(pkglibexecdir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(pkglibexecdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(pkglibexecdir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \ + done | \ + sed -e 'p;s,.*/,,;n' \ + -e 'h;s|.*|.|' \ + -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \ + $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \ + { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ + if ($$2 == $$4) { files[d] = files[d] " " $$1; \ + if (++n[d] == $(am__install_max)) { \ + print "f", d, files[d]; n[d] = 0; files[d] = "" } } \ + else { print "f", d "/" $$4, $$1 } } \ + END { for (d in files) print "f", d, files[d] }' | \ + while read type dir files; do \ + if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ + test -z "$$files" || { \ + echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(pkglibexecdir)$$dir'"; \ + $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(pkglibexecdir)$$dir" || exit $$?; \ + } \ + ; done + +uninstall-pkglibexecSCRIPTS: + @$(NORMAL_UNINSTALL) + @list='$(pkglibexec_SCRIPTS)'; test -n "$(pkglibexecdir)" || exit 0; \ + files=`for p in $$list; do echo "$$p"; done | \ + sed -e 's,.*/,,;$(transform)'`; \ + dir='$(DESTDIR)$(pkglibexecdir)'; $(am__uninstall_files_from_dir) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + -rm -f common/*.$(OBJEXT) + -rm -f deb/*.$(OBJEXT) + -rm -f divert/*.$(OBJEXT) + -rm -f main/*.$(OBJEXT) + -rm -f query/*.$(OBJEXT) + -rm -f split/*.$(OBJEXT) + -rm -f statoverride/*.$(OBJEXT) + -rm -f trigger/*.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@common/$(DEPDIR)/force.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@common/$(DEPDIR)/selinux.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@deb/$(DEPDIR)/build.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@deb/$(DEPDIR)/extract.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@deb/$(DEPDIR)/info.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@deb/$(DEPDIR)/main.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@divert/$(DEPDIR)/main.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@main/$(DEPDIR)/archives.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@main/$(DEPDIR)/cleanup.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@main/$(DEPDIR)/configure.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@main/$(DEPDIR)/depcon.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@main/$(DEPDIR)/enquiry.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@main/$(DEPDIR)/errors.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@main/$(DEPDIR)/file-match.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@main/$(DEPDIR)/filters.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@main/$(DEPDIR)/help.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@main/$(DEPDIR)/main.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@main/$(DEPDIR)/packages.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@main/$(DEPDIR)/perpkgstate.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@main/$(DEPDIR)/remove.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@main/$(DEPDIR)/script.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@main/$(DEPDIR)/select.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@main/$(DEPDIR)/trigproc.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@main/$(DEPDIR)/unpack.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@main/$(DEPDIR)/update.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@main/$(DEPDIR)/verify.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@query/$(DEPDIR)/main.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@split/$(DEPDIR)/info.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@split/$(DEPDIR)/join.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@split/$(DEPDIR)/main.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@split/$(DEPDIR)/queue.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@split/$(DEPDIR)/split.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@statoverride/$(DEPDIR)/main.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@trigger/$(DEPDIR)/main.Po@am__quote@ # am--include-marker + +$(am__depfiles_remade): + @$(MKDIR_P) $(@D) + @echo '# dummy' >$@-t && $(am__mv) $@-t $@ + +am--depfiles: $(am__depfiles_remade) + +.c.o: +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< + +.c.obj: +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ +@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-nobase_dist_pkgdataDATA: $(nobase_dist_pkgdata_DATA) + @$(NORMAL_INSTALL) + @list='$(nobase_dist_pkgdata_DATA)'; test -n "$(pkgdatadir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(pkgdatadir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)" || exit 1; \ + fi; \ + $(am__nobase_list) | while read dir files; do \ + xfiles=; for file in $$files; do \ + if test -f "$$file"; then xfiles="$$xfiles $$file"; \ + else xfiles="$$xfiles $(srcdir)/$$file"; fi; done; \ + test -z "$$xfiles" || { \ + test "x$$dir" = x. || { \ + echo " $(MKDIR_P) '$(DESTDIR)$(pkgdatadir)/$$dir'"; \ + $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)/$$dir"; }; \ + echo " $(INSTALL_DATA) $$xfiles '$(DESTDIR)$(pkgdatadir)/$$dir'"; \ + $(INSTALL_DATA) $$xfiles "$(DESTDIR)$(pkgdatadir)/$$dir" || exit $$?; }; \ + done + +uninstall-nobase_dist_pkgdataDATA: + @$(NORMAL_UNINSTALL) + @list='$(nobase_dist_pkgdata_DATA)'; test -n "$(pkgdatadir)" || list=; \ + $(am__nobase_strip_setup); files=`$(am__nobase_strip)`; \ + dir='$(DESTDIR)$(pkgdatadir)'; $(am__uninstall_files_from_dir) + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags +distdir: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) distdir-am + +distdir-am: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am + $(MAKE) $(AM_MAKEFLAGS) check-local +check: check-am +all-am: Makefile $(PROGRAMS) $(SCRIPTS) $(DATA) +installdirs: + for dir in "$(DESTDIR)$(bindir)" "$(DESTDIR)$(bindir)" "$(DESTDIR)$(pkglibexecdir)" "$(DESTDIR)$(pkgdatadir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + +clean-generic: + -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + -rm -f common/$(DEPDIR)/$(am__dirstamp) + -rm -f common/$(am__dirstamp) + -rm -f deb/$(DEPDIR)/$(am__dirstamp) + -rm -f deb/$(am__dirstamp) + -rm -f divert/$(DEPDIR)/$(am__dirstamp) + -rm -f divert/$(am__dirstamp) + -rm -f main/$(DEPDIR)/$(am__dirstamp) + -rm -f main/$(am__dirstamp) + -rm -f query/$(DEPDIR)/$(am__dirstamp) + -rm -f query/$(am__dirstamp) + -rm -f split/$(DEPDIR)/$(am__dirstamp) + -rm -f split/$(am__dirstamp) + -rm -f statoverride/$(DEPDIR)/$(am__dirstamp) + -rm -f statoverride/$(am__dirstamp) + -rm -f trigger/$(DEPDIR)/$(am__dirstamp) + -rm -f trigger/$(am__dirstamp) + -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-binPROGRAMS clean-generic clean-libtool clean-local \ + mostlyclean-am + +distclean: distclean-am + -rm -f common/$(DEPDIR)/force.Po + -rm -f common/$(DEPDIR)/selinux.Po + -rm -f deb/$(DEPDIR)/build.Po + -rm -f deb/$(DEPDIR)/extract.Po + -rm -f deb/$(DEPDIR)/info.Po + -rm -f deb/$(DEPDIR)/main.Po + -rm -f divert/$(DEPDIR)/main.Po + -rm -f main/$(DEPDIR)/archives.Po + -rm -f main/$(DEPDIR)/cleanup.Po + -rm -f main/$(DEPDIR)/configure.Po + -rm -f main/$(DEPDIR)/depcon.Po + -rm -f main/$(DEPDIR)/enquiry.Po + -rm -f main/$(DEPDIR)/errors.Po + -rm -f main/$(DEPDIR)/file-match.Po + -rm -f main/$(DEPDIR)/filters.Po + -rm -f main/$(DEPDIR)/help.Po + -rm -f main/$(DEPDIR)/main.Po + -rm -f main/$(DEPDIR)/packages.Po + -rm -f main/$(DEPDIR)/perpkgstate.Po + -rm -f main/$(DEPDIR)/remove.Po + -rm -f main/$(DEPDIR)/script.Po + -rm -f main/$(DEPDIR)/select.Po + -rm -f main/$(DEPDIR)/trigproc.Po + -rm -f main/$(DEPDIR)/unpack.Po + -rm -f main/$(DEPDIR)/update.Po + -rm -f main/$(DEPDIR)/verify.Po + -rm -f query/$(DEPDIR)/main.Po + -rm -f split/$(DEPDIR)/info.Po + -rm -f split/$(DEPDIR)/join.Po + -rm -f split/$(DEPDIR)/main.Po + -rm -f split/$(DEPDIR)/queue.Po + -rm -f split/$(DEPDIR)/split.Po + -rm -f statoverride/$(DEPDIR)/main.Po + -rm -f trigger/$(DEPDIR)/main.Po + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-data-local install-nobase_dist_pkgdataDATA + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: install-binPROGRAMS install-binSCRIPTS \ + install-pkglibexecSCRIPTS + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: installcheck-local + +maintainer-clean: maintainer-clean-am + -rm -f common/$(DEPDIR)/force.Po + -rm -f common/$(DEPDIR)/selinux.Po + -rm -f deb/$(DEPDIR)/build.Po + -rm -f deb/$(DEPDIR)/extract.Po + -rm -f deb/$(DEPDIR)/info.Po + -rm -f deb/$(DEPDIR)/main.Po + -rm -f divert/$(DEPDIR)/main.Po + -rm -f main/$(DEPDIR)/archives.Po + -rm -f main/$(DEPDIR)/cleanup.Po + -rm -f main/$(DEPDIR)/configure.Po + -rm -f main/$(DEPDIR)/depcon.Po + -rm -f main/$(DEPDIR)/enquiry.Po + -rm -f main/$(DEPDIR)/errors.Po + -rm -f main/$(DEPDIR)/file-match.Po + -rm -f main/$(DEPDIR)/filters.Po + -rm -f main/$(DEPDIR)/help.Po + -rm -f main/$(DEPDIR)/main.Po + -rm -f main/$(DEPDIR)/packages.Po + -rm -f main/$(DEPDIR)/perpkgstate.Po + -rm -f main/$(DEPDIR)/remove.Po + -rm -f main/$(DEPDIR)/script.Po + -rm -f main/$(DEPDIR)/select.Po + -rm -f main/$(DEPDIR)/trigproc.Po + -rm -f main/$(DEPDIR)/unpack.Po + -rm -f main/$(DEPDIR)/update.Po + -rm -f main/$(DEPDIR)/verify.Po + -rm -f query/$(DEPDIR)/main.Po + -rm -f split/$(DEPDIR)/info.Po + -rm -f split/$(DEPDIR)/join.Po + -rm -f split/$(DEPDIR)/main.Po + -rm -f split/$(DEPDIR)/queue.Po + -rm -f split/$(DEPDIR)/split.Po + -rm -f statoverride/$(DEPDIR)/main.Po + -rm -f trigger/$(DEPDIR)/main.Po + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-binPROGRAMS uninstall-binSCRIPTS \ + uninstall-nobase_dist_pkgdataDATA uninstall-pkglibexecSCRIPTS + +.MAKE: check-am install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am am--depfiles check check-am \ + check-local clean clean-binPROGRAMS clean-generic \ + clean-libtool clean-local cscopelist-am ctags ctags-am \ + distclean distclean-compile distclean-generic \ + distclean-libtool distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-binPROGRAMS \ + install-binSCRIPTS install-data install-data-am \ + install-data-local install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-man install-nobase_dist_pkgdataDATA \ + install-pdf install-pdf-am install-pkglibexecSCRIPTS \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installcheck-local installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ + pdf pdf-am ps ps-am tags tags-am uninstall uninstall-am \ + uninstall-binPROGRAMS uninstall-binSCRIPTS \ + uninstall-nobase_dist_pkgdataDATA uninstall-pkglibexecSCRIPTS + +.PRECIOUS: Makefile + + +.sh: Makefile + @test -d `dirname $@` || $(MKDIR_P) `dirname $@` + $(do_shell_subst) <$< >$@ + $(AM_V_at) chmod +x $@ + +.pl: Makefile + @test -d `dirname $@` || $(MKDIR_P) `dirname $@` + $(do_perl_subst) <$< >$@ + $(AM_V_at) chmod +x $@ + +install-data-local: + $(MKDIR_P) $(DESTDIR)$(pkgconfdir)/dpkg.cfg.d + $(MKDIR_P) $(DESTDIR)$(admindir)/info + $(MKDIR_P) $(DESTDIR)$(admindir)/parts + $(MKDIR_P) $(DESTDIR)$(admindir)/updates + +# The ":;" works around a Bash 3.2 bug when the output is not writable. +$(srcdir)/at/package.m4: $(top_srcdir)/configure.ac + :;{ \ + echo '# Signature of the current package.' && \ + echo 'm4_define([AT_PACKAGE_NAME], [$(PACKAGE_NAME)])' && \ + echo 'm4_define([AT_PACKAGE_TARNAME], [$(PACKAGE_TARNAME)])' && \ + echo 'm4_define([AT_PACKAGE_VERSION], [$(PACKAGE_VERSION)])' && \ + echo 'm4_define([AT_PACKAGE_STRING], [$(PACKAGE_STRING)])' && \ + echo 'm4_define([AT_PACKAGE_URL], [$(PACKAGE_URL)])' && \ + echo 'm4_define([AT_PACKAGE_BUGREPORT], [$(PACKAGE_BUGREPORT)])'; \ + } >'$(srcdir)/at/package.m4' + +autotest-check: $(AUTOTEST_DEPS) + $(SHELL) '$(TESTSUITE)' -C at $(TESTSUITEFLAGS) + +autotest-installcheck: $(AUTOTEST_DEPS) + $(SHELL) '$(TESTSUITE)' -C at AUTOTEST_PATH='$(bindir)' $(TESTSUITEFLAGS) + +autotest-clean: + test ! -f '$(TESTSUITE)' || $(SHELL) '$(TESTSUITE)' -C at --clean +$(TESTSUITE): $(srcdir)/at/package.m4 $(TESTSUITE_AT) + $(AUTOTEST) -I '$(srcdir)/at' -o $@.tmp $@.at + mv $@.tmp $@ + +check-local: autotest-check + +installcheck-local: autotest-installcheck + +clean-local: autotest-clean + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/src/at/atlocal.in b/src/at/atlocal.in new file mode 100644 index 0000000..bf72333 --- /dev/null +++ b/src/at/atlocal.in @@ -0,0 +1,32 @@ +# Global shell definitions for the autotest test suite + +PATH="@abs_top_builddir@/src:$PATH" +export PATH + +SED=@SED@ +PERL=@PERL@ + +# Setup a sane environment + +umask 0022 + +LC_ALL=C +export LC_ALL + +TZ=UTC0 +export TZ + +SOURCE_DATE_EPOCH=0 +export SOURCE_DATE_EPOCH + +prefix="@prefix@" +eval "export DEFAULT_ADMINDIR='@admindir@'" +export DPKG_DATADIR="@abs_top_srcdir@/src" + +# Cleanup variables that might affect the tests. +unset GZIP +unset BZIP +unset XZ_OPT +unset XZ_DEFAULTS + +unset DPKG_ROOT diff --git a/src/at/chdir.at b/src/at/chdir.at new file mode 100644 index 0000000..ec9299f --- /dev/null +++ b/src/at/chdir.at @@ -0,0 +1,491 @@ +# +# Test commands with --root, --instdir and --admindir. +# + +m4_foreach_w([CMD], [dpkg dpkg-divert dpkg-statoverride], [ + m4_define([CMD_PRINT_DIRS], [DPKG_DEBUG=1 CMD --version]) + + AT_SETUP([CMD chdir opts]) + AT_KEYWORDS([CMD command-line chdir]) + + DPKG_ROOT= + DPKG_ADMINDIR= + + AT_CHECK_UNQUOTED( + [CMD_PRINT_DIRS --root=/rootdir_opt], + [], [ignore], + [D000001: root=/rootdir_opt admindir=/rootdir_opt$DEFAULT_ADMINDIR +]) + AT_CHECK_UNQUOTED( + [CMD_PRINT_DIRS --admindir=/admindir_opt], + [], [ignore], + [D000001: root=$DEFAULT_ROOTDIR admindir=/admindir_opt +]) + AT_CHECK_UNQUOTED( + [CMD_PRINT_DIRS --instdir=/instdir_opt], + [], [ignore], + [D000001: root=/instdir_opt admindir=$DEFAULT_ADMINDIR +]) + AT_CHECK( + [CMD_PRINT_DIRS --root=/rootdir_opt --admindir=/admindir_opt], + [], [ignore], + [D000001: root=/rootdir_opt admindir=/admindir_opt +]) + AT_CHECK_UNQUOTED( + [CMD_PRINT_DIRS --admindir=/admindir_opt --root=/rootdir_opt], + [], [ignore], + [D000001: root=/rootdir_opt admindir=/rootdir_opt$DEFAULT_ADMINDIR +]) + AT_CHECK_UNQUOTED( + [CMD_PRINT_DIRS --root=/rootdir_opt --instdir=/instdir_opt], + [], [ignore], + [D000001: root=/instdir_opt admindir=/rootdir_opt$DEFAULT_ADMINDIR +]) + AT_CHECK_UNQUOTED( + [CMD_PRINT_DIRS --instdir=/instdir_opt --root=/rootdir_opt], + [], [ignore], + [D000001: root=/rootdir_opt admindir=/rootdir_opt$DEFAULT_ADMINDIR +]) + AT_CHECK( + [CMD_PRINT_DIRS --instdir=/instdir_opt --admindir=/admindir_opt], + [], [ignore], + [D000001: root=/instdir_opt admindir=/admindir_opt +]) + AT_CHECK( + [CMD_PRINT_DIRS --admindir=/admindir_opt --instdir=/instdir_opt], + [], [ignore], + [D000001: root=/instdir_opt admindir=/admindir_opt +]) + AT_CHECK( + [CMD_PRINT_DIRS --root=/rootdir_opt --admindir=/admindir_opt --instdir=/instdir_opt], + [], [ignore], + [D000001: root=/instdir_opt admindir=/admindir_opt +]) + AT_CHECK_UNQUOTED( + [CMD_PRINT_DIRS --admindir=/admindir_opt --instdir=/instdir_opt --root=/rootdir_opt], + [], [ignore], + [D000001: root=/rootdir_opt admindir=/rootdir_opt$DEFAULT_ADMINDIR +]) + + AT_CLEANUP + + AT_SETUP([CMD chdir env]) + AT_KEYWORDS([CMD command-line chdir]) + + DPKG_ROOT= + DPKG_ADMINDIR= + + AT_CHECK_UNQUOTED( + [DPKG_ADMINDIR=/admindir_env \ + CMD_PRINT_DIRS], + [], [ignore], + [D000001: root=$DEFAULT_ROOTDIR admindir=/admindir_env +]) + AT_CHECK_UNQUOTED( + [DPKG_ROOT=/rootdir_env \ + CMD_PRINT_DIRS], + [], [ignore], + [D000001: root=/rootdir_env admindir=/rootdir_env$DEFAULT_ADMINDIR +]) + AT_CHECK( + [DPKG_ROOT=/rootdir_env DPKG_ADMINDIR=/admindir_env \ + CMD_PRINT_DIRS], + [], [ignore], + [D000001: root=/rootdir_env admindir=/admindir_env +]) + + AT_CLEANUP + + AT_SETUP([CMD chdir env+opt admindir]) + AT_KEYWORDS([CMD command-line chdir]) + + DPKG_ROOT= + DPKG_ADMINDIR= + + AT_CHECK_UNQUOTED( + [DPKG_ADMINDIR=/admindir_env \ + CMD_PRINT_DIRS --root=/rootdir_opt], + [], [ignore], + [D000001: root=/rootdir_opt admindir=/rootdir_opt$DEFAULT_ADMINDIR +]) + AT_CHECK_UNQUOTED( + [DPKG_ADMINDIR=/admindir_env \ + CMD_PRINT_DIRS --admindir=/admindir_opt], + [], [ignore], + [D000001: root=$DEFAULT_ROOTDIR admindir=/admindir_opt +]) + AT_CHECK_UNQUOTED( + [DPKG_ADMINDIR=/admindir_env \ + CMD_PRINT_DIRS --instdir=/instdir_opt], + [], [ignore], + [D000001: root=/instdir_opt admindir=/admindir_env +]) + AT_CHECK( + [DPKG_ADMINDIR=/admindir_env \ + CMD_PRINT_DIRS --root=/rootdir_opt --admindir=/admindir_opt], + [], [ignore], + [D000001: root=/rootdir_opt admindir=/admindir_opt +]) + AT_CHECK_UNQUOTED( + [DPKG_ADMINDIR=/admindir_env \ + CMD_PRINT_DIRS --admindir=/admindir_opt --root=/rootdir_opt], + [], [ignore], + [D000001: root=/rootdir_opt admindir=/rootdir_opt$DEFAULT_ADMINDIR +]) + AT_CHECK_UNQUOTED( + [DPKG_ADMINDIR=/admindir_env \ + CMD_PRINT_DIRS --root=/rootdir_opt --instdir=/instdir_opt], + [], [ignore], + [D000001: root=/instdir_opt admindir=/rootdir_opt$DEFAULT_ADMINDIR +]) + AT_CHECK_UNQUOTED( + [DPKG_ADMINDIR=/admindir_env \ + CMD_PRINT_DIRS --instdir=/instdir_opt --root=/rootdir_opt], + [], [ignore], + [D000001: root=/rootdir_opt admindir=/rootdir_opt$DEFAULT_ADMINDIR +]) + AT_CHECK( + [DPKG_ADMINDIR=/admindir_env \ + CMD_PRINT_DIRS --instdir=/instdir_opt --admindir=/admindir_opt], + [], [ignore], + [D000001: root=/instdir_opt admindir=/admindir_opt +]) + AT_CHECK( + [DPKG_ADMINDIR=/admindir_env \ + CMD_PRINT_DIRS --admindir=/admindir_opt --instdir=/instdir_opt], + [], [ignore], + [D000001: root=/instdir_opt admindir=/admindir_opt +]) + AT_CHECK( + [DPKG_ADMINDIR=/admindir_env \ + CMD_PRINT_DIRS --root=/rootdir_opt --admindir=/admindir_opt --instdir=/instdir_opt], + [], [ignore], + [D000001: root=/instdir_opt admindir=/admindir_opt +]) + AT_CHECK_UNQUOTED( + [DPKG_ADMINDIR=/admindir_env \ + CMD_PRINT_DIRS --admindir=/admindir_opt --instdir=/instdir_opt --root=/rootdir_opt], + [], [ignore], + [D000001: root=/rootdir_opt admindir=/rootdir_opt$DEFAULT_ADMINDIR +]) + + AT_CLEANUP + + AT_SETUP([CMD chdir env+opt root]) + AT_KEYWORDS([CMD command-line chdir]) + + DPKG_ROOT= + DPKG_ADMINDIR= + + AT_CHECK_UNQUOTED( + [DPKG_ROOT=/rootdir_env \ + CMD_PRINT_DIRS --root=/rootdir_opt], + [], [ignore], + [D000001: root=/rootdir_opt admindir=/rootdir_opt$DEFAULT_ADMINDIR +]) + AT_CHECK( + [DPKG_ROOT=/rootdir_env \ + CMD_PRINT_DIRS --admindir=/admindir_opt], + [], [ignore], + [D000001: root=/rootdir_env admindir=/admindir_opt +]) + AT_CHECK_UNQUOTED( + [DPKG_ROOT=/rootdir_env \ + CMD_PRINT_DIRS --instdir=/instdir_opt], + [], [ignore], + [D000001: root=/instdir_opt admindir=/rootdir_env$DEFAULT_ADMINDIR +]) + AT_CHECK( + [DPKG_ROOT=/rootdir_env \ + CMD_PRINT_DIRS --root=/rootdir_opt --admindir=/admindir_opt], + [], [ignore], + [D000001: root=/rootdir_opt admindir=/admindir_opt +]) + AT_CHECK_UNQUOTED( + [DPKG_ROOT=/rootdir_env \ + CMD_PRINT_DIRS --admindir=/admindir_opt --root=/rootdir_opt], + [], [ignore], + [D000001: root=/rootdir_opt admindir=/rootdir_opt$DEFAULT_ADMINDIR +]) + AT_CHECK_UNQUOTED( + [DPKG_ROOT=/rootdir_env \ + CMD_PRINT_DIRS --root=/rootdir_opt --instdir=/instdir_opt], + [], [ignore], + [D000001: root=/instdir_opt admindir=/rootdir_opt$DEFAULT_ADMINDIR +]) + AT_CHECK_UNQUOTED( + [DPKG_ROOT=/rootdir_env \ + CMD_PRINT_DIRS --instdir=/instdir_opt --root=/rootdir_opt], + [], [ignore], + [D000001: root=/rootdir_opt admindir=/rootdir_opt$DEFAULT_ADMINDIR +]) + AT_CHECK( + [DPKG_ROOT=/rootdir_env \ + CMD_PRINT_DIRS --instdir=/instdir_opt --admindir=/admindir_opt], + [], [ignore], + [D000001: root=/instdir_opt admindir=/admindir_opt +]) + AT_CHECK( + [DPKG_ROOT=/rootdir_env \ + CMD_PRINT_DIRS --admindir=/admindir_opt --instdir=/instdir_opt], + [], [ignore], + [D000001: root=/instdir_opt admindir=/admindir_opt +]) + AT_CHECK( + [DPKG_ROOT=/rootdir_env \ + CMD_PRINT_DIRS --root=/rootdir_opt --admindir=/admindir_opt --instdir=/instdir_opt], + [], [ignore], + [D000001: root=/instdir_opt admindir=/admindir_opt +]) + AT_CHECK_UNQUOTED( + [DPKG_ROOT=/rootdir_env \ + CMD_PRINT_DIRS --admindir=/admindir_opt --instdir=/instdir_opt --root=/rootdir_opt], + [], [ignore], + [D000001: root=/rootdir_opt admindir=/rootdir_opt$DEFAULT_ADMINDIR +]) + + AT_CLEANUP + + AT_SETUP([CMD chdir env+opt root+admindir]) + AT_KEYWORDS([CMD command-line chdir]) + + DPKG_ROOT= + DPKG_ADMINDIR= + + AT_CHECK_UNQUOTED( + [DPKG_ROOT=/rootdir_env DPKG_ADMINDIR=/admindir_env \ + CMD_PRINT_DIRS --root=/rootdir_opt], + [], [ignore], + [D000001: root=/rootdir_opt admindir=/rootdir_opt$DEFAULT_ADMINDIR +]) + AT_CHECK( + [DPKG_ROOT=/rootdir_env DPKG_ADMINDIR=/admindir_env \ + CMD_PRINT_DIRS --admindir=/admindir_opt], + [], [ignore], + [D000001: root=/rootdir_env admindir=/admindir_opt +]) + AT_CHECK_UNQUOTED( + [DPKG_ROOT=/rootdir_env DPKG_ADMINDIR=/admindir_env \ + CMD_PRINT_DIRS --instdir=/instdir_opt], + [], [ignore], + [D000001: root=/instdir_opt admindir=/admindir_env +]) + AT_CHECK( + [DPKG_ROOT=/rootdir_env DPKG_ADMINDIR=/admindir_env \ + CMD_PRINT_DIRS --root=/rootdir_opt --admindir=/admindir_opt], + [], [ignore], + [D000001: root=/rootdir_opt admindir=/admindir_opt +]) + AT_CHECK_UNQUOTED( + [DPKG_ROOT=/rootdir_env DPKG_ADMINDIR=/admindir_env \ + CMD_PRINT_DIRS --admindir=/admindir_opt --root=/rootdir_opt], + [], [ignore], + [D000001: root=/rootdir_opt admindir=/rootdir_opt$DEFAULT_ADMINDIR +]) + AT_CHECK_UNQUOTED( + [DPKG_ROOT=/rootdir_env DPKG_ADMINDIR=/admindir_env \ + CMD_PRINT_DIRS --root=/rootdir_opt --instdir=/instdir_opt], + [], [ignore], + [D000001: root=/instdir_opt admindir=/rootdir_opt$DEFAULT_ADMINDIR +]) + AT_CHECK_UNQUOTED( + [DPKG_ROOT=/rootdir_env DPKG_ADMINDIR=/admindir_env \ + CMD_PRINT_DIRS --instdir=/instdir_opt --root=/rootdir_opt], + [], [ignore], + [D000001: root=/rootdir_opt admindir=/rootdir_opt$DEFAULT_ADMINDIR +]) + AT_CHECK( + [DPKG_ROOT=/rootdir_env DPKG_ADMINDIR=/admindir_env \ + CMD_PRINT_DIRS --instdir=/instdir_opt --admindir=/admindir_opt], + [], [ignore], + [D000001: root=/instdir_opt admindir=/admindir_opt +]) + AT_CHECK( + [DPKG_ROOT=/rootdir_env DPKG_ADMINDIR=/admindir_env \ + CMD_PRINT_DIRS --admindir=/admindir_opt --instdir=/instdir_opt], + [], [ignore], + [D000001: root=/instdir_opt admindir=/admindir_opt +]) + AT_CHECK( + [DPKG_ROOT=/rootdir_env DPKG_ADMINDIR=/admindir_env \ + CMD_PRINT_DIRS --root=/rootdir_opt --admindir=/admindir_opt --instdir=/instdir_opt], + [], [ignore], + [D000001: root=/instdir_opt admindir=/admindir_opt +]) + AT_CHECK_UNQUOTED( + [DPKG_ROOT=/rootdir_env DPKG_ADMINDIR=/admindir_env \ + CMD_PRINT_DIRS --admindir=/admindir_opt --instdir=/instdir_opt --root=/rootdir_opt], + [], [ignore], + [D000001: root=/rootdir_opt admindir=/rootdir_opt$DEFAULT_ADMINDIR +]) + + AT_CLEANUP +]) + +# +# Test commands with only --root and --admindir. +# + +m4_foreach_w([CMD], [dpkg-split dpkg-query dpkg-trigger], [ + m4_define([CMD_PRINT_DIRS], [DPKG_DEBUG=1 CMD --version]) + + AT_SETUP([CMD chdir opts]) + AT_KEYWORDS([CMD command-line chdir]) + + DPKG_ROOT= + DPKG_ADMINDIR= + + AT_CHECK_UNQUOTED( + [CMD_PRINT_DIRS --root=/rootdir_opt], + [], [ignore], + [D000001: root=/rootdir_opt admindir=/rootdir_opt$DEFAULT_ADMINDIR +]) + + AT_CHECK_UNQUOTED( + [CMD_PRINT_DIRS --admindir=/admindir_opt], + [], [ignore], + [D000001: root=$DEFAULT_ROOTDIR admindir=/admindir_opt +]) + + AT_CHECK_UNQUOTED( + [CMD_PRINT_DIRS --root=/rootdir_opt --admindir=/admindir_opt], + [], [ignore], + [D000001: root=/rootdir_opt admindir=/admindir_opt +]) + + AT_CHECK_UNQUOTED( + [CMD_PRINT_DIRS --admindir=/admindir_opt --root=/rootdir_opt], + [], [ignore], + [D000001: root=/rootdir_opt admindir=/rootdir_opt$DEFAULT_ADMINDIR +]) + + AT_CLEANUP + + AT_SETUP([CMD chdir env]) + AT_KEYWORDS([CMD command-line chdir]) + + DPKG_ROOT= + DPKG_ADMINDIR= + + AT_CHECK_UNQUOTED( + [DPKG_ADMINDIR=/admindir_env \ + CMD_PRINT_DIRS], + [], [ignore], + [D000001: root=$DEFAULT_ROOTDIR admindir=/admindir_env +]) + + AT_CHECK_UNQUOTED( + [DPKG_ROOT=/rootdir_env \ + CMD_PRINT_DIRS], + [], [ignore], + [D000001: root=/rootdir_env admindir=/rootdir_env$DEFAULT_ADMINDIR +]) + + AT_CHECK( + [DPKG_ROOT=/rootdir_env DPKG_ADMINDIR=/admindir_env \ + CMD_PRINT_DIRS], + [], [ignore], + [D000001: root=/rootdir_env admindir=/admindir_env +]) + + AT_CLEANUP + + AT_SETUP([CMD chdir env+opt admindir]) + AT_KEYWORDS([CMD command-line chdir]) + + DPKG_ROOT= + DPKG_ADMINDIR= + + AT_CHECK_UNQUOTED( + [DPKG_ADMINDIR=/admindir_env \ + CMD_PRINT_DIRS --root=/rootdir_opt], + [], [ignore], + [D000001: root=/rootdir_opt admindir=/rootdir_opt$DEFAULT_ADMINDIR +]) + AT_CHECK_UNQUOTED( + [DPKG_ADMINDIR=/admindir_env \ + CMD_PRINT_DIRS --admindir=/admindir_opt], + [], [ignore], + [D000001: root=$DEFAULT_ROOTDIR admindir=/admindir_opt +]) + AT_CHECK( + [DPKG_ADMINDIR=/admindir_env \ + CMD_PRINT_DIRS --root=/rootdir_opt --admindir=/admindir_opt], + [], [ignore], + [D000001: root=/rootdir_opt admindir=/admindir_opt +]) + AT_CHECK_UNQUOTED( + [DPKG_ADMINDIR=/admindir_env \ + CMD_PRINT_DIRS --admindir=/admindir_opt --root=/rootdir_opt], + [], [ignore], + [D000001: root=/rootdir_opt admindir=/rootdir_opt$DEFAULT_ADMINDIR +]) + + AT_CLEANUP + + AT_SETUP([CMD chdir env+opt root]) + AT_KEYWORDS([CMD command-line chdir]) + + DPKG_ROOT= + DPKG_ADMINDIR= + + AT_CHECK_UNQUOTED( + [DPKG_ROOT=/rootdir_env \ + CMD_PRINT_DIRS --root=/rootdir_opt], + [], [ignore], + [D000001: root=/rootdir_opt admindir=/rootdir_opt$DEFAULT_ADMINDIR +]) + AT_CHECK( + [DPKG_ROOT=/rootdir_env \ + CMD_PRINT_DIRS --admindir=/admindir_opt], + [], [ignore], + [D000001: root=/rootdir_env admindir=/admindir_opt +]) + AT_CHECK( + [DPKG_ROOT=/rootdir_env \ + CMD_PRINT_DIRS --root=/rootdir_opt --admindir=/admindir_opt], + [], [ignore], + [D000001: root=/rootdir_opt admindir=/admindir_opt +]) + AT_CHECK_UNQUOTED( + [DPKG_ROOT=/rootdir_env \ + CMD_PRINT_DIRS --admindir=/admindir_opt --root=/rootdir_opt], + [], [ignore], + [D000001: root=/rootdir_opt admindir=/rootdir_opt$DEFAULT_ADMINDIR +]) + + AT_CLEANUP + + AT_SETUP([CMD chdir env+opt root+admindir]) + AT_KEYWORDS([CMD command-line chdir]) + + DPKG_ROOT= + DPKG_ADMINDIR= + + AT_CHECK_UNQUOTED( + [DPKG_ROOT=/rootdir_env DPKG_ADMINDIR=/admindir_env \ + CMD_PRINT_DIRS --root=/rootdir_opt], + [], [ignore], + [D000001: root=/rootdir_opt admindir=/rootdir_opt$DEFAULT_ADMINDIR +]) + AT_CHECK( + [DPKG_ROOT=/rootdir_env DPKG_ADMINDIR=/admindir_env \ + CMD_PRINT_DIRS --admindir=/admindir_opt], + [], [ignore], + [D000001: root=/rootdir_env admindir=/admindir_opt +]) + AT_CHECK( + [DPKG_ROOT=/rootdir_env DPKG_ADMINDIR=/admindir_env \ + CMD_PRINT_DIRS --root=/rootdir_opt --admindir=/admindir_opt], + [], [ignore], + [D000001: root=/rootdir_opt admindir=/admindir_opt +]) + AT_CHECK_UNQUOTED( + [DPKG_ROOT=/rootdir_env DPKG_ADMINDIR=/admindir_env \ + CMD_PRINT_DIRS --admindir=/admindir_opt --root=/rootdir_opt], + [], [ignore], + [D000001: root=/rootdir_opt admindir=/rootdir_opt$DEFAULT_ADMINDIR +]) + + AT_CLEANUP +]) diff --git a/src/at/deb-content.at b/src/at/deb-content.at new file mode 100644 index 0000000..f475603 --- /dev/null +++ b/src/at/deb-content.at @@ -0,0 +1,129 @@ +AT_SETUP([dpkg-deb .deb conffiles]) +AT_KEYWORDS([dpkg-deb deb conffiles]) + +DPKG_GEN_CONTROL([pkg-conff-duped]) +DPKG_GEN_CTRL_FILE([pkg-conff-duped], [conffiles], [/test-conffile-1 +/test-conffile-2 +/test-conffile-1]) +AT_DATA([pkg-conff-duped/test-conffile-1], [test init +]) +AT_DATA([pkg-conff-duped/test-conffile-2], [test init +]) +AT_CHECK([ +# Duplicate conffile entries should produce a warning. +dpkg-deb -b pkg-conff-duped +], [0], [ignore], [dpkg-deb: warning: conffile name '/test-conffile-1' is duplicated +dpkg-deb: warning: ignoring 1 warning about the control file(s) +]) + +DPKG_GEN_CONTROL([pkg-conff-noeol]) +printf "/test-conffile-1" >"pkg-conff-noeol/DEBIAN/conffiles" +AT_DATA([pkg-conff-noeol/test-conffile-1], [test init +]) +AT_CHECK([ +# Conffiles need a final newline to guarantee there's been no accidental +# file truncation. +dpkg-deb -b pkg-conff-noeol pkg-conff-noeol.deb +], [2], [ignore], [dpkg-deb: error: conffile name '/test-conffile-1' is too long, or missing final newline +]) + +DPKG_GEN_CONTROL([pkg-conff-noabs]) +DPKG_GEN_CTRL_FILE([pkg-conff-noabs], [conffiles], [test-conffile-rel]) +AT_DATA([pkg-conff-noabs/test-conffile-rel], [test init +]) +AT_CHECK([ +# Conffiles must use absolute pathnames. +dpkg-deb -b pkg-conff-noabs pkg-conff-noabs.deb +], [2], [ignore], [dpkg-deb: error: conffile name 'test-conffile-rel' is not an absolute pathname +]) + +DPKG_GEN_CONTROL([pkg-conff-empty]) +printf " \n" >"pkg-conff-empty/DEBIAN/conffiles" +AT_CHECK([ +# Conffiles must not contain empty lines. +dpkg-deb -b pkg-conff-empty pkg-conff-empty.deb +], [2], [ignore], [dpkg-deb: error: empty and whitespace-only lines are not allowed in conffiles +]) + +DPKG_GEN_CONTROL([pkg-conff-space-prefix]) +DPKG_GEN_CTRL_FILE([pkg-conff-space-prefix], [conffiles], [ /test-conffile]) +AT_CHECK([ +# Conffiles must not contain prefixed spaces. +dpkg-deb -b pkg-conff-space-prefix pkg-conff-space-prefix.deb +], [2], [ignore], [dpkg-deb: error: line with conffile filename '/test-conffile' has leading white spaces +]) + +DPKG_GEN_CONTROL([pkg-conff-unknown-flag]) +DPKG_GEN_CTRL_FILE([pkg-conff-unknown-flag], [conffiles], [unknown-flag /test-conffile]) +AT_CHECK([ +# Conffiles marked with an unknown flag. +dpkg-deb -b pkg-conff-unknown-flag pkg-conff-unknown-flag.deb +], [2], [ignore], [dpkg-deb: error: unknown flag 'unknown-flag' for conffile '/test-conffile' +]) + +DPKG_GEN_CONTROL([pkg-conff-missing-pathname]) +printf "unknown-flag \n" >"pkg-conff-missing-pathname/DEBIAN/conffiles" +AT_CHECK([ +# Conffiles need a pathname, in addition to a flag. +dpkg-deb -b pkg-conff-missing-pathname pkg-conff-missing-pathname.deb +], [2], [ignore], [dpkg-deb: error: conffile name missing after flag 'unknown-flag' +]) + +DPKG_GEN_CONTROL([pkg-conff-removed-missing]) +DPKG_GEN_CTRL_FILE([pkg-conff-removed-missing], [conffiles], [remove-on-upgrade /test-conffile-missing]) +AT_CHECK([ +# Conffiles marked for removal must not be present. +dpkg-deb -b pkg-conff-removed-missing pkg-conff-removed-missing.deb +], [0], [ignore], []) + +DPKG_GEN_CONTROL([pkg-conff-removed-duped]) +DPKG_GEN_CTRL_FILE([pkg-conff-removed-duped], [conffiles], [remove-on-upgrade /test-conffile-1 +remove-on-upgrade /test-conffile-2 +remove-on-upgrade /test-conffile-1]) +AT_CHECK([ +# Duplicate conffile entries should produce a warning. +dpkg-deb -b pkg-conff-removed-duped +], [0], [ignore], [dpkg-deb: warning: conffile name '/test-conffile-1' is duplicated +dpkg-deb: warning: ignoring 1 warning about the control file(s) +]) + +DPKG_GEN_CONTROL([pkg-conff-removed-noeol]) +printf "remove-on-upgrade /test-conffile-1" >"pkg-conff-removed-noeol/DEBIAN/conffiles" +AT_CHECK([ +# Conffiles need a final newline to guarantee there has been no accidental +# file truncation. +dpkg-deb -b pkg-conff-removed-noeol pkg-conff-removed-noeol.deb +], [2], [ignore], [dpkg-deb: error: conffile name 'remove-on-upgrade /test-conffile-1' is too long, or missing final newline +]) + +DPKG_GEN_CONTROL([pkg-conff-removed-noabs]) +DPKG_GEN_CTRL_FILE([pkg-conff-removed-noabs], [conffiles], [remove-on-upgrade test-conffile-rel]) +AT_DATA([pkg-conff-removed-noabs/test-conffile-rel], [test init +]) +AT_CHECK([ +# Conffiles must use absolute pathnames. +dpkg-deb -b pkg-conff-removed-noabs pkg-conff-removed-noabs.deb +], [2], [ignore], [dpkg-deb: error: conffile name 'test-conffile-rel' is not an absolute pathname +]) + +DPKG_GEN_CONTROL([pkg-conff-removed-present]) +DPKG_GEN_CTRL_FILE([pkg-conff-removed-present], [conffiles], [remove-on-upgrade /test-conffile-present]) +AT_DATA([pkg-conff-removed-present/test-conffile-present], [test init +]) +AT_CHECK([ +# Conffiles marked for removal must not be present. +dpkg-deb -b pkg-conff-removed-present pkg-conff-removed-present.deb +], [2], [ignore], [dpkg-deb: error: conffile '/test-conffile-present' is present but is requested to be removed +]) + +DPKG_GEN_CONTROL([pkg-deb-newline]) +touch 'pkg-deb-newline/file +newline' +AT_CHECK([ +# Cannot create package with newlines in filenames. +dpkg-deb -b pkg-deb-newline +], [2], [ignore], [dpkg-deb: error: newline not allowed in pathname './file +newline' +]) + +AT_CLEANUP diff --git a/src/at/deb-fields.at b/src/at/deb-fields.at new file mode 100644 index 0000000..484ccb7 --- /dev/null +++ b/src/at/deb-fields.at @@ -0,0 +1,47 @@ +AT_SETUP([dpkg-deb .deb fields]) +AT_KEYWORDS([dpkg-deb deb fields]) + +DPKG_GEN_CONTROL([pkg-package-type-void]) +AT_CHECK([ +dpkg-deb -b pkg-package-type-void +# Test absence of Package-Type field. +test -z "$(dpkg-deb -f pkg-package-type-void.deb Package-Type)" +], [0], [ignore]) + +DPKG_GEN_CONTROL([pkg-package-type-use]) +DPKG_MOD_CONTROL([pkg-package-type-use], [/^Package:/aPackage-Type: udeb]) +AT_CHECK([ +dpkg-deb -b pkg-package-type-use +# Test presence of Package-Type field. +test -n "$(dpkg-deb -f pkg-package-type-use.deb Package-Type)" +], [0], [ignore]) + +DPKG_GEN_CONTROL([pkg-obsolete-fields]) +DPKG_MOD_CONTROL([pkg-obsolete-fields], [s/^Priority:/Class:/]) +DPKG_MOD_CONTROL([pkg-obsolete-fields], [s/^Version: 0.0-1/Version: 0.0/]) +DPKG_MOD_CONTROL([pkg-obsolete-fields], [/^Version:/aRevision: 1]) +DPKG_MOD_CONTROL([pkg-obsolete-fields], [/^Package:/aOptional: suggests]) +DPKG_MOD_CONTROL([pkg-obsolete-fields], [/^Package:/aRecommended: recommends]) +AT_CHECK([ +dpkg-deb -b pkg-obsolete-fields +], [0], [ignore], +[dpkg-deb: warning: parsing file 'pkg-obsolete-fields/DEBIAN/control' near line 2 package 'pkg-obsolete-fields': + obsolete 'Recommended' field used +dpkg-deb: warning: parsing file 'pkg-obsolete-fields/DEBIAN/control' near line 3 package 'pkg-obsolete-fields': + obsolete 'Optional' field used +dpkg-deb: warning: parsing file 'pkg-obsolete-fields/DEBIAN/control' near line 5 package 'pkg-obsolete-fields': + obsolete 'Revision' field used +dpkg-deb: warning: parsing file 'pkg-obsolete-fields/DEBIAN/control' near line 7 package 'pkg-obsolete-fields': + obsolete 'Class' field used +dpkg-deb: warning: ignoring 4 warnings about the control file(s) +]) +AT_CHECK([ +dpkg-deb -f pkg-obsolete-fields.deb \ + Version Recommends Suggests Priority 2>/dev/null +], [0], [Version: 0.0-1 +Recommends: recommends +Suggests: suggests +Priority: extra +]) + +AT_CLEANUP diff --git a/src/at/deb-format.at b/src/at/deb-format.at new file mode 100644 index 0000000..c3b412f --- /dev/null +++ b/src/at/deb-format.at @@ -0,0 +1,601 @@ +AT_SETUP([dpkg-deb options]) +AT_KEYWORDS([dpkg-deb command-line]) + +AT_CHECK([dpkg-deb --version], [], [ignore]) +AT_CHECK([dpkg-deb --help], [], [ignore]) + +AT_CLEANUP + + +AT_SETUP([dpkg-deb .deb format 0.93x]) +AT_KEYWORDS([dpkg-deb deb-old]) + +AT_SKIP_IF([! command -v gzip >/dev/null]) + +AT_DATA([pkg-deb-old-bogus-only-version.deb], [0.93 +]) +AT_CHECK([ +# Check truncated old deb w/ only version magic +dpkg-deb --info pkg-deb-old-bogus-only-version.deb +], [2], [], [dpkg-deb: error: unexpected end of file in archive control member size in pkg-deb-old-bogus-only-version.deb +]) + +DPKG_GEN_CONTROL([pkg-deb-old-format]) +DPKG_MOD_CONTROL([pkg-deb-old-format], + [s/^Description:.*$/& - deb old format support/]) +AT_DATA([pkg-deb-old-format/file-templ], [test +]) +AT_CHECK([ +# Initialize the template package +mv pkg-deb-old-format pkg-old-templ +cp $top_srcdir/ChangeLog.old pkg-old-templ/ +chmod 0644 pkg-old-templ/ChangeLog.old +chmod -R u+w pkg-old-templ +find pkg-old-templ | xargs touch -t 197001010100.00 +dpkg-deb --deb-format=0.939000 --root-owner-group -Zgzip -b pkg-old-templ >/dev/null + +dpkg-deb --fsys-tarfile pkg-old-templ.deb >fsys.tar +gzip -n fsys.tar + +# Create deb-old 0.939 +cp pkg-old-templ.deb pkg-old.deb + +# Create deb-old-old-old 0.931 +mkdir -p pkg-old-0931-templ/.DEBIAN +cp pkg-old-templ/DEBIAN/* pkg-old-0931-templ/.DEBIAN/ +find pkg-old-0931-templ | xargs touch -t 197001010100.00 +tar czf ctrl-0931.tar.gz --format=gnu --mtime @0 --clamp-mtime --owner root:0 --group root:0 -C pkg-old-0931-templ .DEBIAN + +echo '0.931000' >pkg-old-0931.deb +DPKG_FILE_SIZE([ctrl-0931.tar.gz]) >>pkg-old-0931.deb +cat ctrl-0931.tar.gz >>pkg-old-0931.deb +cat fsys.tar.gz >>pkg-old-0931.deb + +# Create deb-old-old template +mkdir -p pkg-old-0932-templ/DEBIAN +cp pkg-old-templ/DEBIAN/* pkg-old-0932-templ/DEBIAN/ +find pkg-old-0932-templ | xargs touch -t 197001010100.00 +tar czf ctrl-0932.tar.gz --format=gnu --mtime @0 --clamp-mtime --owner root:0 --group root:0 -C pkg-old-0932-templ DEBIAN + +# Create deb-old-old 0.932 +echo '0.932000' >pkg-old-0932.deb +DPKG_FILE_SIZE([ctrl-0932.tar.gz]) >>pkg-old-0932.deb +cat ctrl-0932.tar.gz >>pkg-old-0932.deb +cat fsys.tar.gz >>pkg-old-0932.deb + +# Create deb-old-old 0.933 +echo '0.933000' >pkg-old-0933.deb +DPKG_FILE_SIZE([ctrl-0932.tar.gz]) >>pkg-old-0933.deb +cat ctrl-0932.tar.gz >>pkg-old-0933.deb +cat fsys.tar.gz >>pkg-old-0933.deb +]) + +AT_CHECK([ +# Check old package metadata +dpkg-deb -I pkg-old.deb | $SED -e 's/ *$//' +], [], [ old Debian package, version 0.939000. + size 174621 bytes: control archive=274, main archive=174334. + 201 bytes, 7 lines control + Package: pkg-deb-old-format + Version: 0.0-1 + Section: test + Priority: extra + Maintainer: Dpkg Developers + Architecture: all + Description: test package - deb old format support +]) + +AT_CHECK([ +# Check old package metadata +dpkg-deb -I pkg-old-0931.deb | $SED -e 's/ *$//' +], [], [ old Debian package, version 0.931000. + size 175522 bytes: control archive=291, main archive=175218. + 201 bytes, 7 lines control + Package: pkg-deb-old-format + Version: 0.0-1 + Section: test + Priority: extra + Maintainer: Dpkg Developers + Architecture: all + Description: test package - deb old format support +]) + +AT_CHECK([ +# Check old package metadata +dpkg-deb -I pkg-old-0932.deb | $SED -e 's/ *$//' +], [], [ old Debian package, version 0.932000. + size 175522 bytes: control archive=291, main archive=175218. + 201 bytes, 7 lines control + Package: pkg-deb-old-format + Version: 0.0-1 + Section: test + Priority: extra + Maintainer: Dpkg Developers + Architecture: all + Description: test package - deb old format support +]) + +AT_CHECK([ +# Check old package metadata +dpkg-deb -I pkg-old-0933.deb | $SED -e 's/ *$//' +], [], [ old Debian package, version 0.933000. + size 175522 bytes: control archive=291, main archive=175218. + 201 bytes, 7 lines control + Package: pkg-deb-old-format + Version: 0.0-1 + Section: test + Priority: extra + Maintainer: Dpkg Developers + Architecture: all + Description: test package - deb old format support +]) + +AT_CHECK([ +# Check old package contents +dpkg-deb -c pkg-old.deb +], [], [drwxr-xr-x root/root 0 1970-01-01 00:00 ./ +-rw-r--r-- root/root 641345 1970-01-01 00:00 ./ChangeLog.old +-rw-r--r-- root/root 5 1970-01-01 00:00 ./file-templ +]) + +AT_CHECK([ +# Check old package contents +dpkg-deb -c pkg-old-0931.deb +], [], [drwxr-xr-x root/root 0 1970-01-01 00:00 ./ +-rw-r--r-- root/root 641345 1970-01-01 00:00 ./ChangeLog.old +-rw-r--r-- root/root 5 1970-01-01 00:00 ./file-templ +]) + +AT_CHECK([ +# Check old package contents +dpkg-deb -c pkg-old-0932.deb +], [], [drwxr-xr-x root/root 0 1970-01-01 00:00 ./ +-rw-r--r-- root/root 641345 1970-01-01 00:00 ./ChangeLog.old +-rw-r--r-- root/root 5 1970-01-01 00:00 ./file-templ +]) + +AT_CHECK([ +# Check old package contents +dpkg-deb -c pkg-old-0933.deb +], [], [drwxr-xr-x root/root 0 1970-01-01 00:00 ./ +-rw-r--r-- root/root 641345 1970-01-01 00:00 ./ChangeLog.old +-rw-r--r-- root/root 5 1970-01-01 00:00 ./file-templ +]) + +AT_CLEANUP + + +AT_SETUP([dpkg-deb .deb format 2.x]) +AT_KEYWORDS([dpkg-deb deb]) + +AT_SKIP_IF([! command -v xz >/dev/null]) +AT_SKIP_IF([! command -v gzip >/dev/null]) +AT_SKIP_IF([! command -v zstd >/dev/null]) +AT_SKIP_IF([! command -v bzip2 >/dev/null]) +AT_SKIP_IF([! command -v lzma >/dev/null]) + +AT_DATA([pkg-deb-bogus-empty.deb], []) +AT_CHECK([ +# Check truncated deb w/ 0 size +dpkg-deb --info pkg-deb-bogus-empty.deb +], [2], [], [dpkg-deb: error: unexpected end of file in archive magic version number in pkg-deb-bogus-empty.deb +]) + +DPKG_GEN_CONTROL([pkg-deb-format]) +DPKG_MOD_CONTROL([pkg-deb-format], + [s/^Description:.*$/& - deb format support/]) +AT_DATA([pkg-deb-format/file-templ], [test +]) +AT_CHECK([ +# Initialize the template package +mv pkg-deb-format pkg-templ +cp $top_srcdir/ChangeLog.old pkg-templ/ +chmod 0644 pkg-templ/ChangeLog.old +chmod -R u+w pkg-templ +find pkg-templ | xargs touch -t 197001010100.00 +dpkg-deb --uniform-compression --root-owner-group -Znone -b pkg-templ >/dev/null + +# Extract the base members +ar x pkg-templ.deb +gzip -c control.tar >control.tar.gz +gzip -c data.tar >data.tar.gz +xz -c control.tar >control.tar.xz +xz -c data.tar >data.tar.xz +zstd -c control.tar >control.tar.zst +zstd -c data.tar >data.tar.zst +bzip2 -c data.tar >data.tar.bz2 +lzma -c data.tar >data.tar.lzma +touch _ignore +touch unknown +]) + +AT_CHECK([ +# Test debian-binary with 2.x versions +cp pkg-templ.deb pkg-version-2x.deb +echo 2.999 >debian-binary +ar rc pkg-version-2x.deb debian-binary +ar t pkg-version-2x.deb +ar x pkg-templ.deb debian-binary +# XXX: Ideally we would have no need to strip trailing spaces. +dpkg-deb -I pkg-version-2x.deb | $SED -e 's/ *$//' +], [], [debian-binary +control.tar +data.tar + new Debian package, version 2.999. + size 655554 bytes: control archive=10240 bytes. + 193 bytes, 7 lines control + Package: pkg-deb-format + Version: 0.0-1 + Section: test + Priority: extra + Maintainer: Dpkg Developers + Architecture: all + Description: test package - deb format support +]) + +AT_CHECK([ +# Test debian-binary with extra lines +cp pkg-templ.deb pkg-magic-extra.deb +echo "extra line" >>debian-binary +ar rc pkg-magic-extra.deb debian-binary +ar t pkg-magic-extra.deb +ar x pkg-templ.deb debian-binary +# XXX: Ideally we would have no need to strip trailing spaces. +dpkg-deb -I pkg-magic-extra.deb | $SED -e 's/ *$//' +], [], [debian-binary +control.tar +data.tar + new Debian package, version 2.0. + size 655564 bytes: control archive=10240 bytes. + 193 bytes, 7 lines control + Package: pkg-deb-format + Version: 0.0-1 + Section: test + Priority: extra + Maintainer: Dpkg Developers + Architecture: all + Description: test package - deb format support +]) + +AT_CHECK([ +# Test missing debian-binary member +cp pkg-templ.deb pkg-missing-magic.deb +ar d pkg-missing-magic.deb debian-binary +ar t pkg-missing-magic.deb +dpkg-deb -I pkg-missing-magic.deb +], [2], [control.tar +data.tar +], [dpkg-deb: error: file 'pkg-missing-magic.deb' is not a Debian binary archive (try dpkg-split?) +]) + +AT_CHECK([ +# Test missing control member +cp pkg-templ.deb pkg-missing-control.deb +ar d pkg-missing-control.deb control.tar +ar t pkg-missing-control.deb +dpkg-deb -I pkg-missing-control.deb +], [2], [debian-binary +data.tar +], [dpkg-deb: error: archive 'pkg-missing-control.deb' has premature member 'data.tar' before 'control.tar', giving up +]) + +AT_CHECK([ +# Test missing data member +cp pkg-templ.deb pkg-missing-data.deb +ar d pkg-missing-data.deb data.tar +ar t pkg-missing-data.deb +dpkg-deb -c pkg-missing-data.deb +], [2], [debian-binary +control.tar +], [dpkg-deb: error: unexpected end of file in archive member header in pkg-missing-data.deb +]) + +AT_CHECK([ +# Test duplicate debian-binary member +cp pkg-templ.deb pkg-duplicate-magic.deb +ar ra debian-binary pkg-duplicate-magic.deb debian-binary debian-binary +ar t pkg-duplicate-magic.deb +dpkg-deb -I pkg-duplicate-magic.deb +], [2], [debian-binary +debian-binary +control.tar +data.tar +], [dpkg-deb: error: archive 'pkg-duplicate-magic.deb' has premature member 'debian-binary' before 'control.tar', giving up +]) + +AT_CHECK([ +# Test duplicate control member +cp pkg-templ.deb pkg-duplicate-control.deb +ar ra control.tar pkg-duplicate-control.deb control.tar control.tar +ar t pkg-duplicate-control.deb +dpkg-deb -c pkg-duplicate-control.deb +], [2], [debian-binary +control.tar +control.tar +data.tar +], [dpkg-deb: error: archive 'pkg-duplicate-control.deb' contains two control members, giving up +]) + +AT_CHECK([ +# Test mixed member (index 1) +cp pkg-templ.deb pkg-mixed-1-member.deb +ar ra debian-binary pkg-mixed-1-member.deb unknown +ar t pkg-mixed-1-member.deb +dpkg-deb -I pkg-mixed-1-member.deb +], [2], [debian-binary +unknown +control.tar +data.tar +], [dpkg-deb: error: archive 'pkg-mixed-1-member.deb' has premature member 'unknown' before 'control.tar', giving up +]) + +AT_CHECK([ +# 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 t pkg-mixed-2-member.deb +dpkg-deb -c pkg-mixed-2-member.deb +], [2], [debian-binary +control.tar +unknown +data.tar +], [dpkg-deb: error: archive 'pkg-mixed-2-member.deb' has premature member 'unknown' before 'data.tar', giving up +]) + +AT_CHECK([ +# 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 t pkg-swap-members.deb +dpkg-deb -I pkg-swap-members.deb +], [2], [debian-binary +data.tar +control.tar +], [dpkg-deb: error: archive 'pkg-swap-members.deb' has premature member 'data.tar' before 'control.tar', giving up +]) + +AT_CHECK([ +# Test extra member +cp pkg-templ.deb pkg-extra-member.deb +ar q pkg-extra-member.deb unknown +ar t pkg-extra-member.deb +# XXX: Ideally we would have no need to strip trailing spaces. +dpkg-deb -I pkg-extra-member.deb | $SED -e 's/ *$//' +], [], [debian-binary +control.tar +data.tar +unknown + new Debian package, version 2.0. + size 655612 bytes: control archive=10240 bytes. + 193 bytes, 7 lines control + Package: pkg-deb-format + Version: 0.0-1 + Section: test + Priority: extra + Maintainer: Dpkg Developers + Architecture: all + Description: test package - deb format support +]) + +AT_CHECK([ +# Test _ member +cp pkg-templ.deb pkg-under-member.deb +ar ra debian-binary pkg-under-member.deb _ignore +ar t pkg-under-member.deb +# XXX: Ideally we would have no need to strip trailing spaces. +dpkg-deb -I pkg-under-member.deb | $SED -e 's/ *$//' +], [], [debian-binary +_ignore +control.tar +data.tar + new Debian package, version 2.0. + size 655612 bytes: control archive=10240 bytes. + 193 bytes, 7 lines control + Package: pkg-deb-format + Version: 0.0-1 + Section: test + Priority: extra + Maintainer: Dpkg Developers + Architecture: all + Description: test package - deb format support +]) + +AT_CHECK([ +# Test data.tar.bad member +dd if=/dev/zero of=data.tar.bad bs=1K count=4 status=none +ar rc pkg-data-bad.deb debian-binary control.tar.gz data.tar.bad +ar t pkg-data-bad.deb +dpkg-deb -c pkg-data-bad.deb +], [2], [debian-binary +control.tar.gz +data.tar.bad +], [dpkg-deb: error: archive 'pkg-data-bad.deb' uses unknown compression for member 'data.tar.bad', giving up +]) + +AT_CHECK([ +# Test control.tar member +ar rc pkg-control-none.deb debian-binary control.tar data.tar +ar t pkg-control-none.deb +# XXX: Ideally we would have no need to strip trailing spaces. +dpkg-deb -I pkg-control-none.deb | $SED -e 's/ *$//' +], [], [debian-binary +control.tar +data.tar + new Debian package, version 2.0. + size 655552 bytes: control archive=10240 bytes. + 193 bytes, 7 lines control + Package: pkg-deb-format + Version: 0.0-1 + Section: test + Priority: extra + Maintainer: Dpkg Developers + Architecture: all + Description: test package - deb format support +]) + +AT_CHECK([ +# Test control.tar.xz member +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 +], [], [debian-binary +control.tar.xz +data.tar.xz +drwxr-xr-x root/root 0 1970-01-01 00:00 ./ +-rw-r--r-- root/root 641345 1970-01-01 00:00 ./ChangeLog.old +-rw-r--r-- root/root 5 1970-01-01 00:00 ./file-templ +]) + +AT_CHECK([ +# Test control.tar.zst member +ar rc pkg-control-zst.deb debian-binary control.tar.zst data.tar.zst +ar t pkg-control-zst.deb +dpkg-deb -c pkg-control-zst.deb +], [], [debian-binary +control.tar.zst +data.tar.zst +drwxr-xr-x root/root 0 1970-01-01 00:00 ./ +-rw-r--r-- root/root 641345 1970-01-01 00:00 ./ChangeLog.old +-rw-r--r-- root/root 5 1970-01-01 00:00 ./file-templ +]) + +AT_CHECK([ +# Test data.tar member +ar rc pkg-data-none.deb debian-binary control.tar.gz data.tar +ar t pkg-data-none.deb +dpkg-deb -c pkg-data-none.deb +], [], [debian-binary +control.tar.gz +data.tar +drwxr-xr-x root/root 0 1970-01-01 00:00 ./ +-rw-r--r-- root/root 641345 1970-01-01 00:00 ./ChangeLog.old +-rw-r--r-- root/root 5 1970-01-01 00:00 ./file-templ +]) + +AT_CHECK([ +# Test data.tar.gz member +ar rc pkg-data-gz.deb debian-binary control.tar.gz data.tar.gz +ar t pkg-data-gz.deb +dpkg-deb -c pkg-data-gz.deb +], [], [debian-binary +control.tar.gz +data.tar.gz +drwxr-xr-x root/root 0 1970-01-01 00:00 ./ +-rw-r--r-- root/root 641345 1970-01-01 00:00 ./ChangeLog.old +-rw-r--r-- root/root 5 1970-01-01 00:00 ./file-templ +]) + +AT_CHECK([ +# Test data.tar.xz member +ar rc pkg-data-xz.deb debian-binary control.tar.gz data.tar.xz +ar t pkg-data-xz.deb +dpkg-deb -c pkg-data-xz.deb +], [], [debian-binary +control.tar.gz +data.tar.xz +drwxr-xr-x root/root 0 1970-01-01 00:00 ./ +-rw-r--r-- root/root 641345 1970-01-01 00:00 ./ChangeLog.old +-rw-r--r-- root/root 5 1970-01-01 00:00 ./file-templ +]) + +AT_CHECK([ +# Test data.tar.zst member +ar rc pkg-data-zst.deb debian-binary control.tar.gz data.tar.zst +ar t pkg-data-zst.deb +dpkg-deb -c pkg-data-zst.deb +], [], [debian-binary +control.tar.gz +data.tar.zst +drwxr-xr-x root/root 0 1970-01-01 00:00 ./ +-rw-r--r-- root/root 641345 1970-01-01 00:00 ./ChangeLog.old +-rw-r--r-- root/root 5 1970-01-01 00:00 ./file-templ +]) + +AT_CHECK([ +# Test data.tar.bz2 member +ar rc pkg-data-bz2.deb debian-binary control.tar.gz data.tar.bz2 +ar t pkg-data-bz2.deb +dpkg-deb -c pkg-data-bz2.deb +], [], [debian-binary +control.tar.gz +data.tar.bz2 +drwxr-xr-x root/root 0 1970-01-01 00:00 ./ +-rw-r--r-- root/root 641345 1970-01-01 00:00 ./ChangeLog.old +-rw-r--r-- root/root 5 1970-01-01 00:00 ./file-templ +]) + +AT_CHECK([ +# Test data.tar.lzma member +ar rc pkg-data-lzma.deb debian-binary control.tar.gz data.tar.lzma +ar t pkg-data-lzma.deb +dpkg-deb -c pkg-data-lzma.deb +], [], [debian-binary +control.tar.gz +data.tar.lzma +drwxr-xr-x root/root 0 1970-01-01 00:00 ./ +-rw-r--r-- root/root 641345 1970-01-01 00:00 ./ChangeLog.old +-rw-r--r-- root/root 5 1970-01-01 00:00 ./file-templ +]) + +AT_CHECK([ +# 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 +# XXX: Ideally we would have no need to strip trailing spaces. +dpkg-deb -I pkg-mixed-comp.deb | $SED -e 's/ *$//' +dpkg-deb -c pkg-mixed-comp.deb +], [], [debian-binary +control.tar.xz +data.tar.gz + new Debian package, version 2.0. + size 175756 bytes: control archive=336 bytes. + 193 bytes, 7 lines control + Package: pkg-deb-format + Version: 0.0-1 + Section: test + Priority: extra + Maintainer: Dpkg Developers + Architecture: all + Description: test package - deb format support +drwxr-xr-x root/root 0 1970-01-01 00:00 ./ +-rw-r--r-- root/root 641345 1970-01-01 00:00 ./ChangeLog.old +-rw-r--r-- root/root 5 1970-01-01 00:00 ./file-templ +]) + +AT_CHECK([ +# Test building and extracting none compressed archive +dpkg-deb --uniform-compression --root-owner-group -Znone -b pkg-templ pkg-comp-none.deb >/dev/null +dpkg-deb --ctrl-tarfile pkg-comp-none.deb >ctrl-none.tar +dpkg-deb --fsys-tarfile pkg-comp-none.deb >fsys-none.tar +cmp ctrl-none.tar control.tar +cmp fsys-none.tar data.tar +]) + +AT_CHECK([ +# Test building and extracting gzip compressed archive +dpkg-deb --uniform-compression --root-owner-group -Zgzip -b pkg-templ pkg-comp-gzip.deb >/dev/null +dpkg-deb --ctrl-tarfile pkg-comp-gzip.deb >ctrl-gzip.tar +dpkg-deb --fsys-tarfile pkg-comp-gzip.deb >fsys-gzip.tar +cmp ctrl-gzip.tar control.tar +cmp fsys-gzip.tar data.tar +]) + +AT_CHECK([ +# Test building and extracting xz compressed archive +dpkg-deb --uniform-compression --root-owner-group -Zxz -b pkg-templ pkg-comp-xz.deb >/dev/null +dpkg-deb --ctrl-tarfile pkg-comp-xz.deb >ctrl-xz.tar +dpkg-deb --fsys-tarfile pkg-comp-xz.deb >fsys-xz.tar +cmp ctrl-xz.tar control.tar +cmp fsys-xz.tar data.tar +]) + +AT_CHECK([ +# Test building and extracting zstd compressed archive +dpkg-deb --uniform-compression --root-owner-group -Zzstd -b pkg-templ pkg-comp-zstd.deb >/dev/null +dpkg-deb --ctrl-tarfile pkg-comp-zstd.deb >ctrl-zstd.tar +dpkg-deb --fsys-tarfile pkg-comp-zstd.deb >fsys-zstd.tar +cmp ctrl-zstd.tar control.tar +cmp fsys-zstd.tar data.tar +]) + +AT_CLEANUP diff --git a/src/at/deb-split.at b/src/at/deb-split.at new file mode 100644 index 0000000..6b07d79 --- /dev/null +++ b/src/at/deb-split.at @@ -0,0 +1,228 @@ +AT_SETUP([dpkg-split options]) +AT_KEYWORDS([dpkg-split command-line]) + +AT_CHECK([dpkg-split --version], [], [ignore]) +AT_CHECK([dpkg-split --help], [], [ignore]) + +AT_CLEANUP + +AT_SETUP([dpkg-split .deb format]) +AT_KEYWORDS([dpkg-split deb-split]) + +DPKG_GEN_CONTROL([pkg-split]) +DPKG_MOD_CONTROL([pkg-split], + [s/^Description:.*$/& - normal package to be split/]) +AT_CHECK([ +# Initialize the template package +chmod -R u+w pkg-split +$PERL -E 'print "fade" foreach 1 .. 1024 * 512' >pkg-split/data-file +find pkg-split | xargs touch -t 197001010100.00 +dpkg-deb --root-owner-group -Znone -b pkg-split >/dev/null +]) + +AT_CHECK([ +# Test splitting a package (in 10 parts: 9 * 210 KiB B + 158 KiB) +dpkg-split -S 210 -s pkg-split.deb pkg-split-part +for p in $(seq 10); do + test -f pkg-split-part.${p}of10.deb +done +], [], [Splitting package pkg-split into 10 parts: 1 2 3 4 5 6 7 8 9 10 done +]) + +DEB_SPLIT_MD5SUM=1684b6cdb72bf035ccafd653f307d3da +DEB_SPLIT_LENGTH=2109632 +DEB_SPLIT_PART_LENGTH=214016 +DEB_SPLIT_PART_SIZE=214222 +DEB_SPLIT_LAST_LENGTH=183488 +DEB_SPLIT_LAST_SIZE=183694 + +DEB_SPLIT_PART_SIZE_VERSION=$((DEB_SPLIT_PART_SIZE + 2)) + +AT_CHECK_UNQUOTED([ +# Test debian-split with 2.x version +cp pkg-split-part.1of10.deb pkg-split-part-version-2x.deb +ar x pkg-split-part-version-2x.deb debian-split +sed -e '1c2.999' debian-split >debian-split.new +mv debian-split.new debian-split +ar rc pkg-split-part-version-2x.deb debian-split +ar t pkg-split-part-version-2x.deb +dpkg-split -I pkg-split-part-version-2x.deb +], [], [debian-split +data.1 +pkg-split-part-version-2x.deb: + Part format version: 2.999 + Part of package: pkg-split + ... version: 0.0-1 + ... architecture: all + ... MD5 checksum: $DEB_SPLIT_MD5SUM + ... length: $DEB_SPLIT_LENGTH bytes + ... split every: $DEB_SPLIT_PART_LENGTH bytes + Part number: 1/10 + Part length: $DEB_SPLIT_PART_LENGTH bytes + Part offset: 0 bytes + Part file size (used portion): $DEB_SPLIT_PART_SIZE_VERSION bytes + +]) + +DEB_SPLIT_PART_SIZE_MAGIC_EXTRA=$((DEB_SPLIT_PART_SIZE + 10)) + +AT_CHECK_UNQUOTED([ +# Test debian-split with extra lines +cp pkg-split-part.1of10.deb pkg-split-part-magic-extra.deb +ar x pkg-split-part-magic-extra.deb debian-split +echo "extra line" >>debian-split +ar rc pkg-split-part-magic-extra.deb debian-split +ar t pkg-split-part-magic-extra.deb +dpkg-split -I pkg-split-part-magic-extra.deb +], [], [debian-split +data.1 +pkg-split-part-magic-extra.deb: + Part format version: 2.1 + Part of package: pkg-split + ... version: 0.0-1 + ... architecture: all + ... MD5 checksum: $DEB_SPLIT_MD5SUM + ... length: $DEB_SPLIT_LENGTH bytes + ... split every: $DEB_SPLIT_PART_LENGTH bytes + Part number: 1/10 + Part length: $DEB_SPLIT_PART_LENGTH bytes + Part offset: 0 bytes + Part file size (used portion): $DEB_SPLIT_PART_SIZE_MAGIC_EXTRA bytes + +]) + +AT_CHECK([ +# Test missing debian-split +cp pkg-split-part.1of10.deb pkg-split-part-missing-magic.deb +ar d pkg-split-part-missing-magic.deb debian-split +ar t pkg-split-part-missing-magic.deb +dpkg-split -I pkg-split-part-missing-magic.deb +], [], [data.1 +file 'pkg-split-part-missing-magic.deb' is not an archive part +]) + +AT_CHECK([ +# Test missing data part member +cp pkg-split-part.1of10.deb pkg-split-part-missing-data.deb +ar d pkg-split-part-missing-data.deb data.1 +ar t pkg-split-part-missing-data.deb +dpkg-split -I pkg-split-part-missing-data.deb +], [2], [debian-split +], [dpkg-split: error: unexpected end of file in reading data part member ar header in pkg-split-part-missing-data.deb +]) + +AT_CHECK([ +# Test duplicate debian-split member +cp pkg-split-part.1of10.deb pkg-split-part-duplicate-magic.deb +ar x pkg-split-part-duplicate-magic.deb debian-split +ar ra debian-split pkg-split-part-duplicate-magic.deb debian-split debian-split +ar t pkg-split-part-duplicate-magic.deb +dpkg-split -I pkg-split-part-duplicate-magic.deb +], [2], [debian-split +debian-split +data.1 +], [dpkg-split: error: file 'pkg-split-part-duplicate-magic.deb' is corrupt - second member is not data member +]) + +AT_CHECK_UNQUOTED([ +# Test unknown extra member +cp pkg-split-part.1of10.deb pkg-split-part-extra-member.deb +echo "some content" >unknown +ar q pkg-split-part-extra-member.deb unknown +ar t pkg-split-part-extra-member.deb +dpkg-split -I pkg-split-part-extra-member.deb +], [], [debian-split +data.1 +unknown +pkg-split-part-extra-member.deb: + Part format version: 2.1 + Part of package: pkg-split + ... version: 0.0-1 + ... architecture: all + ... MD5 checksum: $DEB_SPLIT_MD5SUM + ... length: $DEB_SPLIT_LENGTH bytes + ... split every: $DEB_SPLIT_PART_LENGTH bytes + Part number: 1/10 + Part length: $DEB_SPLIT_PART_LENGTH bytes + Part offset: 0 bytes + Part file size (used portion): $DEB_SPLIT_PART_SIZE bytes + +]) + +AT_CHECK_UNQUOTED([ +# Test getting information about the split parts (parsing verification) +dpkg-split -I pkg-split-part.1of10.deb +], [], [pkg-split-part.1of10.deb: + Part format version: 2.1 + Part of package: pkg-split + ... version: 0.0-1 + ... architecture: all + ... MD5 checksum: $DEB_SPLIT_MD5SUM + ... length: $DEB_SPLIT_LENGTH bytes + ... split every: $DEB_SPLIT_PART_LENGTH bytes + Part number: 1/10 + Part length: $DEB_SPLIT_PART_LENGTH bytes + Part offset: 0 bytes + Part file size (used portion): $DEB_SPLIT_PART_SIZE bytes + +]) +AT_CHECK_UNQUOTED([ +# Test getting information about the split parts (parsing verification) +dpkg-split -I pkg-split-part.2of10.deb +], [], [pkg-split-part.2of10.deb: + Part format version: 2.1 + Part of package: pkg-split + ... version: 0.0-1 + ... architecture: all + ... MD5 checksum: $DEB_SPLIT_MD5SUM + ... length: $DEB_SPLIT_LENGTH bytes + ... split every: $DEB_SPLIT_PART_LENGTH bytes + Part number: 2/10 + Part length: $DEB_SPLIT_PART_LENGTH bytes + Part offset: 214016 bytes + Part file size (used portion): $DEB_SPLIT_PART_SIZE bytes + +]) +AT_CHECK_UNQUOTED([ +# Test getting information about the split parts (parsing verification) +dpkg-split -I pkg-split-part.9of10.deb +], [], [pkg-split-part.9of10.deb: + Part format version: 2.1 + Part of package: pkg-split + ... version: 0.0-1 + ... architecture: all + ... MD5 checksum: $DEB_SPLIT_MD5SUM + ... length: $DEB_SPLIT_LENGTH bytes + ... split every: $DEB_SPLIT_PART_LENGTH bytes + Part number: 9/10 + Part length: $DEB_SPLIT_PART_LENGTH bytes + Part offset: 1712128 bytes + Part file size (used portion): $DEB_SPLIT_PART_SIZE bytes + +]) +AT_CHECK_UNQUOTED([ +# Test getting information about the split parts (parsing verification) +dpkg-split -I pkg-split-part.10of10.deb +], [], [pkg-split-part.10of10.deb: + Part format version: 2.1 + Part of package: pkg-split + ... version: 0.0-1 + ... architecture: all + ... MD5 checksum: $DEB_SPLIT_MD5SUM + ... length: $DEB_SPLIT_LENGTH bytes + ... split every: $DEB_SPLIT_PART_LENGTH bytes + Part number: 10/10 + Part length: $DEB_SPLIT_LAST_LENGTH bytes + Part offset: 1926144 bytes + Part file size (used portion): $DEB_SPLIT_LAST_SIZE bytes + +]) + +AT_CHECK([ +# Test joining the split parts back together +dpkg-split -o pkg-joined.deb -j pkg-split-part.*.deb +cmp pkg-split.deb pkg-joined.deb +], [], [Putting package pkg-split together from 10 parts: 1 2 3 4 5 6 7 8 9 10 done +]) + +AT_CLEANUP diff --git a/src/at/divert.at b/src/at/divert.at new file mode 100644 index 0000000..f8689d0 --- /dev/null +++ b/src/at/divert.at @@ -0,0 +1,639 @@ +AT_SETUP([dpkg-divert options]) +AT_KEYWORDS([dpkg-divert command-line]) + +DPKG_GEN_FSYS_DIR([/testdir]) + +AT_CHECK([dpkg-divert --version], [], [ignore]) +AT_CHECK([dpkg-divert --help], [], [ignore]) + +AT_CHECK([dpkg-divert --admindir], [2], [], [stderr]) +AT_CHECK([grep -qE '(takes a value|needs.*argument)' stderr]) + +AT_CHECK([DPKG_DIVERT --jachsmitbju], [2], [], [stderr]) +AT_CHECK([grep -q 'unknown option' stderr]) + +AT_CHECK([DPKG_DIVERT --add --remove], [2], [], [stderr]) +AT_CHECK([grep -qE '(conflicting|two).*remove.*add.*' stderr]) + +AT_CHECK([DPKG_DIVERT --divert], [2], [], [stderr]) +AT_CHECK([grep -qE '(takes a value|needs.*argument)' stderr]) + +AT_CHECK([DPKG_DIVERT --divert foo], [2], [], [stderr]) +AT_CHECK([grep -q 'absolute' stderr]) + +AT_CHECK([DPKG_DIVERT --divert "/foo +bar"], [2], [], [stderr]) +AT_CHECK([grep -q 'newline' stderr]) + +AT_CHECK([DPKG_DIVERT --package], [2], [], [stderr]) +AT_CHECK([grep -qE '(takes a value|needs.*argument)' stderr]) + +AT_CHECK([DPKG_DIVERT --package "foo +bar"], [2], [], [stderr]) +AT_CHECK([grep -q 'newline' stderr]) + +AT_CHECK([DPKG_DIVERT --add], [2], [], [stderr]) +AT_CHECK([grep -q 'needs a single argument' stderr]) + +AT_CHECK([DPKG_DIVERT --add foo], [2], [], [stderr]) +AT_CHECK([grep -q 'absolute' stderr]) + +AT_CHECK([DPKG_DIVERT --add "/foo +bar"], [2], [], [stderr]) +AT_CHECK([grep -q 'newline' stderr]) + +AT_CHECK([DPKG_DIVERT --add "/testdir"], [2], [], [stderr]) +AT_CHECK([grep -qE 'director(y|ies)' stderr]) + +AT_CHECK([DPKG_DIVERT --add --divert bar /foo/bar], [2], [], [stderr]) +AT_CHECK([grep -q 'absolute' stderr]) + +AT_CHECK([DPKG_DIVERT --remove], [2], [], [stderr]) +AT_CHECK([grep -q 'needs a single argument' stderr]) + +AT_CHECK([DPKG_DIVERT --remove foo], [2], [], [stderr]) +AT_CHECK([grep -q 'absolute' stderr]) + +AT_CHECK([DPKG_DIVERT --remove "/foo +bar"], [2], [], [stderr]) +AT_CHECK([grep -q 'newline' stderr]) + +AT_CHECK([DPKG_DIVERT --listpackage], [2], [], [stderr]) +AT_CHECK([grep -q 'needs a single argument' stderr]) + +AT_CHECK([DPKG_DIVERT --listpackage foo], [2], [], [stderr]) +AT_CHECK([grep -q 'absolute' stderr]) + +AT_CHECK([DPKG_DIVERT --listpackage "/foo +bar"], [2], [], [stderr]) +AT_CHECK([grep -q 'newline' stderr]) + +AT_CHECK([DPKG_DIVERT --truename], [2], [], [stderr]) +AT_CHECK([grep -q 'needs a single argument' stderr]) + +AT_CHECK([DPKG_DIVERT --truename foo], [2], [], [stderr]) +AT_CHECK([grep -q 'absolute' stderr]) + +AT_CHECK([DPKG_DIVERT --truename "/foo +bar"], [2], [], [stderr]) +AT_CHECK([grep -q 'newline' stderr]) + +AT_CLEANUP + +AT_SETUP([dpkg-divert query (empty db)]) +AT_KEYWORDS([dpkg-divert query]) + +DPKG_GEN_DB_DIVERSIONS([]) + +AT_CHECK([DPKG_DIVERT --list]) +AT_CHECK([DPKG_DIVERT --list '*']) +AT_CHECK([DPKG_DIVERT --list 'baz']) + +AT_CLEANUP + +AT_SETUP([dpkg-divert query (list)]) +AT_KEYWORDS([dpkg-divert query]) + +DPKG_GEN_DB_DIVERSIONS([/bin/sh +/bin/sh.distrib +dash +/usr/share/man/man1/sh.1.gz +/usr/share/man/man1/sh.distrib.1.gz +dash +/usr/bin/nm +/usr/bin/nm.single +binutils-multiarch +]) + +m4_define([di_dash], [diversion of /bin/sh to /bin/sh.distrib by dash +]) +m4_define([di_dashman], + [diversion of /usr/share/man/man1/sh.1.gz to /usr/share/man/man1/sh.distrib.1.gz by dash +]) +m4_define([di_nm], + [diversion of /usr/bin/nm to /usr/bin/nm.single by binutils-multiarch +]) +m4_define([all_di], [m4_join([], di_nm, di_dashman, di_dash)]) + +AT_CHECK([DPKG_DIVERT --list], [], all_di) +AT_CHECK([DPKG_DIVERT --list '*'], [], all_di) +AT_CHECK([DPKG_DIVERT --list '']) + +AT_CHECK([DPKG_DIVERT --list '???????'], [], di_dash) +AT_CHECK([DPKG_DIVERT --list '*/sh'], [], di_dash) +AT_CHECK([DPKG_DIVERT --list '/bin/*'], [], di_dash) +AT_CHECK([DPKG_DIVERT --list binutils-multiarch], [], di_nm) +AT_CHECK([DPKG_DIVERT --list /bin/sh], [], di_dash) +AT_CHECK([DPKG_DIVERT --list -- /bin/sh], [], di_dash) +AT_CHECK([DPKG_DIVERT --list /usr/bin/nm.single], [], di_nm) +AT_CHECK([DPKG_DIVERT --list /bin/sh /usr/share/man/man1/sh.1.gz], [], + [m4_join([], di_dashman, di_dash)]) + +AT_CLEANUP + +AT_SETUP([dpkg-divert query (listpackage + truename)]) +AT_KEYWORDS([dpkg-divert query]) + +DPKG_GEN_DB_DIVERSIONS([/bin/sh +/bin/sh.distrib +dash +/bin/true +/bin/true.coreutils +: +]) + +AT_CHECK([DPKG_DIVERT --listpackage /bin/sh], [], [dash +]) +AT_CHECK([DPKG_DIVERT --listpackage /bin/true], [], [LOCAL +]) +AT_CHECK([DPKG_DIVERT --listpackage /bin/false]) + +AT_CHECK([DPKG_DIVERT --truename /bin/sh], [], [/bin/sh.distrib +]) +AT_CHECK([DPKG_DIVERT --truename /bin/sh.distrib], [], [/bin/sh.distrib +]) +AT_CHECK([DPKG_DIVERT --truename /bin/something], [], [/bin/something +]) + +AT_CLEANUP + +AT_SETUP([dpkg-divert add (local rename)]) +AT_KEYWORDS([dpkg-divert add]) + +DPKG_GEN_FSYS_FILE([/testdir/foo], []) +DPKG_GEN_DB_DIVERSIONS([]) +AT_DATA([ref-diversions], [/testdir/foo +/testdir/foo.distrib +: +]) + +AT_CHECK([DPKG_DIVERT --rename --add /testdir/foo], [], [stdout]) +AT_CHECK([grep -q "Adding.*local.*diversion.* /testdir/foo.* /testdir/foo.distrib" stdout]) +DPKG_CHECK_FSYS_PATH_MISSING([/testdir/foo]) +DPKG_CHECK_FSYS_PATH_EXISTS([/testdir/foo.distrib]) +AT_CHECK([diff -u ref-diversions DPKG_DIR_ADMIN/diversions]) + +AT_CLEANUP + +AT_SETUP([dpkg-divert add (local no-rename)]) +AT_KEYWORDS([dpkg-divert add]) + +DPKG_GEN_FSYS_FILE([/testdir/foo], []) +DPKG_GEN_DB_DIVERSIONS([]) +AT_DATA([ref-diversions], [/testdir/foo +/testdir/foo.distrib +: +]) + +AT_CHECK([DPKG_DIVERT --no-rename --add /testdir/foo], [], [stdout]) +AT_CHECK([grep -q "Adding.*local.*diversion.* /testdir/foo.* /testdir/foo.distrib" stdout]) +DPKG_CHECK_FSYS_PATH_EXISTS([/testdir/foo]) +DPKG_CHECK_FSYS_PATH_MISSING([/testdir/foo.distrib]) +AT_CHECK([diff -u ref-diversions DPKG_DIR_ADMIN/diversions]) + +AT_CLEANUP + +AT_SETUP([dpkg-divert add (rename quiet)]) +AT_KEYWORDS([dpkg-divert add]) + +DPKG_GEN_FSYS_FILE([/testdir/foo], []) +DPKG_GEN_DB_DIVERSIONS([]) +AT_DATA([ref-diversions], [/testdir/foo +/testdir/foo.distrib +: +]) + +AT_CHECK([DPKG_DIVERT --quiet --rename --add /testdir/foo]) +DPKG_CHECK_FSYS_PATH_MISSING([/testdir/foo]) +DPKG_CHECK_FSYS_PATH_EXISTS([/testdir/foo.distrib]) +AT_CHECK([diff -u ref-diversions DPKG_DIR_ADMIN/diversions]) + +AT_CLEANUP + +AT_SETUP([dpkg-divert add (test rename quiet)]) +AT_KEYWORDS([dpkg-divert add]) + +DPKG_GEN_FSYS_FILE([/testdir/foo], []) +DPKG_GEN_DB_DIVERSIONS([]) + +AT_CHECK([DPKG_DIVERT --quiet --rename --test /testdir/foo]) +DPKG_CHECK_FSYS_PATH_EXISTS([/testdir/foo]) +DPKG_CHECK_FSYS_PATH_MISSING([/testdir/foo.distrib]) +AT_CHECK([cat DPKG_DIR_ADMIN/diversions]) + +AT_CLEANUP + +AT_SETUP([dpkg-divert add (rename missing quiet)]) +AT_KEYWORDS([dpkg-divert add]) + +DPKG_GEN_FSYS_DIR([/testdir]) +DPKG_GEN_DB_DIVERSIONS([]) +AT_DATA([ref-diversions], [/testdir/foo +/testdir/foo.distrib +: +]) + +AT_CHECK([DPKG_DIVERT --quiet --rename /testdir/foo]) +DPKG_CHECK_FSYS_PATH_MISSING([/testdir/foo]) +DPKG_CHECK_FSYS_PATH_MISSING([/testdir/foo.distrib]) +AT_CHECK([diff -u ref-diversions DPKG_DIR_ADMIN/diversions]) + +AT_CLEANUP + +AT_SETUP([dpkg-divert add (local rename quiet)]) +AT_KEYWORDS([dpkg-divert add]) + +DPKG_GEN_FSYS_FILE([/testdir/foo], []) +DPKG_GEN_DB_DIVERSIONS([]) +AT_DATA([ref-diversions], [/testdir/foo +/testdir/foo.distrib +: +]) + +AT_CHECK([DPKG_DIVERT --quiet --local --rename /testdir/foo]) +DPKG_CHECK_FSYS_PATH_MISSING([/testdir/foo]) +DPKG_CHECK_FSYS_PATH_EXISTS([/testdir/foo.distrib]) +AT_CHECK([diff -u ref-diversions DPKG_DIR_ADMIN/diversions]) + +AT_CLEANUP + +AT_SETUP([dpkg-divert add (package rename quiet)]) +AT_KEYWORDS([dpkg-divert add]) + +DPKG_GEN_DB_DIVERSIONS([]) +AT_DATA([ref-diversions], [/testdir/foo +/testdir/foo.distrib +bash +]) + +AT_CHECK([DPKG_DIVERT --quiet --rename --package bash /testdir/foo]) +AT_CHECK([diff -u ref-diversions DPKG_DIR_ADMIN/diversions]) + +AT_CLEANUP + +AT_SETUP([dpkg-divert add (rename self-link)]) +AT_KEYWORDS([dpkg-divert add]) + +DPKG_GEN_FSYS_FILE([/testdir/foo], []) +DPKG_GEN_FSYS_LINK([/testdir/foo], [/testdir/foo.distrib]) +DPKG_GEN_DB_DIVERSIONS([]) +AT_DATA([ref-diversions], [/testdir/foo +/testdir/foo.distrib +: +]) + +AT_CHECK([DPKG_DIVERT --quiet --rename /testdir/foo]) +DPKG_CHECK_FSYS_PATH_MISSING([/testdir/foo]) +DPKG_CHECK_FSYS_PATH_EXISTS([/testdir/foo.distrib]) +AT_CHECK([diff -u ref-diversions DPKG_DIR_ADMIN/diversions]) + +AT_CLEANUP + +AT_SETUP([dpkg-divert add (rename other-file)]) +AT_KEYWORDS([dpkg-divert add]) + +DPKG_GEN_FSYS_FILE([/testdir/foo], []) +DPKG_GEN_FSYS_FILE([/testdir/foo.distrib], []) +DPKG_GEN_DB_DIVERSIONS([]) + +AT_CHECK([DPKG_DIVERT --quiet --rename /testdir/foo], [2], [], [stderr]) +AT_CHECK([grep -q 'error: rename involves overwriting' stderr]) +AT_CHECK([cat DPKG_DIR_ADMIN/diversions]) + +AT_CLEANUP + +AT_SETUP([dpkg-divert add (rename missing dir)]) +AT_KEYWORDS([dpkg-divert add]) + +DPKG_GEN_DB_DIVERSIONS([]) +AT_DATA([ref-diversions], [/testdir/zoo/foo +/testdir/zoo/foo.distrib +: +]) + +AT_CHECK([DPKG_DIVERT --quiet --rename --add /testdir/zoo/foo]) +AT_CHECK([diff -u ref-diversions DPKG_DIR_ADMIN/diversions]) + +AT_CLEANUP + +AT_SETUP([dpkg-divert add (rename read-only dir)]) +AT_KEYWORDS([dpkg-divert fsys]) + +AT_SKIP_IF([test -n "$FAKEROOTKEY" || test "$(id -u)" = 0]) + +DPKG_GEN_FSYS_DIR([/testdir/rodir]) +DPKG_GEN_FSYS_FILE([/testdir/rodir/foo]) +DPKG_GEN_FSYS_FILE([/testdir/bar]) +DPKG_MOD_FSYS_MODE([500], [/testdir/rodir]) +DPKG_GEN_DB_DIVERSIONS([]) + +AT_CHECK([DPKG_DIVERT --quiet --rename --add /testdir/rodir/foo], + [2], [], [stderr]) +AT_CHECK([grep -q 'error: .* Permission denied' stderr]) + +AT_CHECK([DPKG_DIVERT --quiet --rename --divert /testdir/rodir/bar --add /testdir/bar], + [2], [], [stderr]) +AT_CHECK([grep -q 'error: .* Permission denied' stderr]) + +AT_CHECK([cat DPKG_DIR_ADMIN/diversions]) + +DPKG_MOD_FSYS_MODE([755], [/testdir/rodir]) +AT_CLEANUP + +AT_SETUP([dpkg-divert add (rename no-access dir)]) +AT_KEYWORDS([dpkg-divert fsys]) + +AT_SKIP_IF([test -n "$FAKEROOTKEY" || test "$(id -u)" = 0]) + +DPKG_GEN_FSYS_FILE([/testdir/foo]) +DPKG_GEN_FSYS_DIR([/testdir/nadir]) +DPKG_MOD_FSYS_MODE([000], [/testdir/nadir]) +DPKG_GEN_DB_DIVERSIONS([]) + +AT_CHECK([DPKG_DIVERT --rename --add /testdir/nadir/foo], [2], [], [stderr]) +AT_CHECK([grep -q 'error: .* Permission denied' stderr]) + +AT_CHECK([DPKG_DIVERT --quiet --rename --divert /testdir/nadir/foo --add /testdir/foo], + [2], [], [stderr]) +AT_CHECK([grep -q 'error: .* Permission denied' stderr]) + +AT_CHECK([cat DPKG_DIR_ADMIN/diversions]) + +# On FreeBSD «rm -rf» cannot traverse a directory with mode 000. +rmdir DPKG_DIR_INST/testdir/nadir + +AT_CLEANUP + +AT_SETUP([dpkg-divert add second diversion]) +AT_KEYWORDS([dpkg-divert add]) + +DPKG_GEN_FSYS_DIR([/testdir]) +DPKG_GEN_DB_DIVERSIONS([]) + +AT_CHECK([DPKG_DIVERT --rename --add /testdir/foo], [], [stdout]) +AT_CHECK([grep -q 'Adding' stdout]) + +AT_CHECK([DPKG_DIVERT --rename --add /testdir/foo], [], [stdout]) +AT_CHECK([grep -q 'Leaving' stdout]) + +AT_CHECK([DPKG_DIVERT --rename --add /testdir/foo], [], [stdout]) +AT_CHECK([grep -q 'Leaving' stdout]) + +AT_CHECK([DPKG_DIVERT --divert /testdir/foo.bar /testdir/foo], + [2], [], [stderr]) +AT_CHECK([grep -q 'clashes' stderr]) + +AT_CHECK([DPKG_DIVERT --package foobar /testdir/foo], [2], [], [stderr]) +AT_CHECK([grep -q 'clashes' stderr]) + +AT_CHECK([DPKG_DIVERT --divert /testdir/foo.distrib /testdir/bar], + [2], [], [stderr]) +AT_CHECK([grep -q 'clashes' stderr]) + +AT_CHECK([DPKG_DIVERT /testdir/foo.distrib], [2], [], [stderr]) +AT_CHECK([grep -q 'clashes' stderr]) + +AT_CHECK([DPKG_DIVERT --divert /testdir/foo /testdir/bar], [2], [], [stderr]) +AT_CHECK([grep -q 'clashes' stderr]) + +AT_CLEANUP + +AT_SETUP([dpkg-divert add third diversion]) +AT_KEYWORDS([dpkg-divert add]) + +DPKG_GEN_FSYS_DIR([/testdir]) +DPKG_GEN_DB_DIVERSIONS([]) + +AT_CHECK([DPKG_DIVERT --rename --add /testdir/foo], [], [stdout]) +AT_CHECK([grep -q 'Adding' stdout]) +AT_CHECK([DPKG_DIVERT --rename --add /testdir/bar], [], [stdout]) +AT_CHECK([grep -q 'Adding' stdout]) + +AT_CHECK([DPKG_DIVERT --rename --add /testdir/foo], [], [stdout]) +AT_CHECK([grep -q 'Leaving' stdout]) +AT_CHECK([DPKG_DIVERT --rename --package foobar --add /testdir/bar], + [2], [], [stderr]) +AT_CHECK([grep -q 'clashes' stderr]) + +AT_CLEANUP + +AT_SETUP([dpkg-divert add (file owned by --package)]) +AT_KEYWORDS([dpkg-divert add]) + +DPKG_GEN_FSYS_FILE([/testdir/foo], []) +# Only installed packages have their files list considered. +DPKG_GEN_DB_STATUS([Package: coreutils +Status: install ok installed +Version: 0 +Architecture: i386 +Maintainer: dummy +Description: dummy +]) +DPKG_GEN_DB_INFO_FILE([coreutils], [list], [/testdir/foo +]) +DPKG_GEN_DB_DIVERSIONS([]) +AT_DATA([ref-diversions], [/testdir/foo +/testdir/foo.distrib +coreutils +]) + +AT_CHECK([DPKG_DIVERT --quiet --rename --package coreutils --add /testdir/foo]) +DPKG_CHECK_FSYS_PATH_EXISTS([/testdir/foo]) +DPKG_CHECK_FSYS_PATH_MISSING([/testdir/foo.distrib]) +AT_CHECK([diff -u ref-diversions DPKG_DIR_ADMIN/diversions]) + +AT_CLEANUP + +AT_SETUP([dpkg-divert remove (missing)]) +AT_KEYWORDS([dpkg-divert remove]) + +DPKG_GEN_DB_DIVERSIONS([]) + +AT_CHECK([DPKG_DIVERT --no-rename --remove /bin/sh], [], [stdout]) +AT_CHECK([grep -q 'No diversion' stdout]) + +AT_CHECK([DPKG_DIVERT --quiet --no-rename --remove /bin/sh]) + +AT_CLEANUP + +AT_SETUP([dpkg-divert remove (divert-to)]) +AT_KEYWORDS([dpkg-divert remove]) + +DPKG_GEN_DB_DIVERSIONS([]) +AT_DATA([ref-diversions], [/testdir/bar +/testdir/bar.distrib +: +/testdir/baz +/testdir/baz.distrib +: +]) + +AT_CHECK([DPKG_DIVERT --quiet --no-rename --add /testdir/foo]) +AT_CHECK([DPKG_DIVERT --quiet --no-rename --add /testdir/bar]) +AT_CHECK([DPKG_DIVERT --quiet --no-rename --add /testdir/baz]) + +AT_CHECK([DPKG_DIVERT --divert /testdir/foo.my --remove /testdir/foo], + [2], [], [stderr]) +AT_CHECK([grep -q 'mismatch on divert-to' stderr]) + +AT_CHECK([DPKG_DIVERT --package baz --remove /testdir/foo], [2], [], [stderr]) +AT_CHECK([grep -q 'mismatch on package' stderr]) + +AT_CHECK([DPKG_DIVERT --package baz --divert /testdir/foo.my --remove /testdir/foo], + [2], [], [stderr]) +AT_CHECK([grep -qE 'mismatch on (package|divert-to)' stderr]) + +AT_CHECK([DPKG_DIVERT --rename --divert /testdir/foo.distrib --remove /testdir/foo], + [], [stdout]) +AT_CHECK([grep -qE 'Removing .*/testdir/foo' stdout]) + +AT_CHECK([diff -u ref-diversions DPKG_DIR_ADMIN/diversions]) + +AT_CLEANUP + +AT_SETUP([dpkg-divert remove (plain)]) +AT_KEYWORDS([dpkg-divert remove]) + +DPKG_GEN_DB_DIVERSIONS([]) +AT_DATA([ref-diversions], [/testdir/foo +/testdir/foo.distrib +: +/testdir/baz +/testdir/baz.distrib +: +]) + +AT_CHECK([DPKG_DIVERT --quiet --no-rename --add /testdir/foo]) +AT_CHECK([DPKG_DIVERT --quiet --no-rename --add /testdir/bar]) +AT_CHECK([DPKG_DIVERT --quiet --no-rename --add /testdir/baz]) + +AT_CHECK([DPKG_DIVERT --no-rename --remove /testdir/bar], [], [stdout]) +AT_CHECK([grep -qE 'Removing .* /testdir/bar' stdout]) + +AT_CHECK([diff -u ref-diversions DPKG_DIR_ADMIN/diversions]) + +AT_CLEANUP + +AT_SETUP([dpkg-divert remove (by-package)]) +AT_KEYWORDS([dpkg-divert remove]) + +DPKG_GEN_DB_DIVERSIONS([]) +AT_DATA([ref-diversions], [/testdir/bar +/testdir/bar.distrib +: +/testdir/foo +/testdir/foo.distrib +: +]) + +AT_CHECK([DPKG_DIVERT --quiet --no-rename /testdir/foo]) +AT_CHECK([DPKG_DIVERT --quiet --no-rename /testdir/bar]) +AT_CHECK([DPKG_DIVERT --quiet --no-rename --package bash /testdir/baz]) + +AT_CHECK([DPKG_DIVERT --no-rename --quiet --package bash --remove /testdir/baz]) + +AT_CHECK([diff -u ref-diversions DPKG_DIR_ADMIN/diversions]) + +AT_CLEANUP + +AT_SETUP([dpkg-divert remove (test)]) +AT_KEYWORDS([dpkg-divert remove]) + +DPKG_GEN_FSYS_FILE([/testdir/foo], []) +DPKG_GEN_DB_DIVERSIONS([]) +AT_DATA([ref-diversions], [/testdir/foo +/testdir/foo.distrib +: +]) + +AT_CHECK([DPKG_DIVERT --quiet --rename /testdir/foo]) + +AT_CHECK([DPKG_DIVERT --test --rename --remove /testdir/foo], [], [stdout]) +AT_CHECK([grep -q 'Removing .*/testdir/foo' stdout]) +DPKG_CHECK_FSYS_PATH_MISSING([/testdir/foo]) +DPKG_CHECK_FSYS_PATH_EXISTS([/testdir/foo.distrib]) +AT_CHECK([diff -u ref-diversions DPKG_DIR_ADMIN/diversions]) + +AT_CHECK([DPKG_DIVERT --quiet --rename --remove /testdir/foo]) +DPKG_CHECK_FSYS_PATH_EXISTS([/testdir/foo]) +DPKG_CHECK_FSYS_PATH_MISSING([/testdir/foo.distrib]) +AT_CHECK([cat DPKG_DIR_ADMIN/diversions]) + +AT_CLEANUP + +AT_SETUP([dpkg-divert db (no-access)]) +AT_KEYWORDS([dpkg-divert db]) + +AT_SKIP_IF([test -n "$FAKEROOTKEY" || test "$(id -u)" = 0]) + +# An inexistent diversions db file should not be considered a failure, +# but a failure to open it should be. +DPKG_GEN_DB_DIVERSIONS([]) +DPKG_MOD_DB_MODE([000], [diversions]) + +AT_CHECK([DPKG_DIVERT --list], [2], [], [stderr]) +AT_CHECK([grep -qE '(cannot|failed).*open' stderr]) + +DPKG_MOD_DB_MODE([644], [diversions]) +AT_CLEANUP + +AT_SETUP([dpkg-divert db (truncated)]) +AT_KEYWORDS([dpkg-divert db]) + +DPKG_GEN_DB_DIVERSIONS([/bin/sh +]) + +AT_CHECK([DPKG_DIVERT --list], [2], [], [stderr]) +AT_CHECK([grep -qE '(corrupt|unexpected end of file)' stderr]) + +DPKG_GEN_DB_DIVERSIONS([/bin/sh +bash +]) + +AT_CHECK([DPKG_DIVERT --list], [2], [], [stderr]) +AT_CHECK([grep -qE '(corrupt|unexpected end of file)' stderr]) + +AT_CLEANUP + +AT_SETUP([dpkg-divert db (read-only dir)]) +AT_KEYWORDS([dpkg-divert db]) + +AT_SKIP_IF([test -n "$FAKEROOTKEY" || test "$(id -u)" = 0]) + +DPKG_GEN_DB_DIVERSIONS([]) +DPKG_MOD_DB_MODE([500]) + +AT_CHECK([DPKG_DIVERT --rename --add /testdir/foo], [2], [stdout], [stderr]) +AT_CHECK([grep -q 'Adding' stdout]) +AT_CHECK([grep -q 'create.*new' stderr]) + +DPKG_MOD_DB_MODE([755]) +AT_CLEANUP + +AT_SETUP([dpkg-divert db (disk full)]) +AT_KEYWORDS([dpkg-divert db]) + +AT_SKIP_IF([test -n "$FAKEROOTKEY" || test "$(id -u)" = 0]) +AT_SKIP_IF([! test -c /dev/full]) + +DPKG_GEN_DB_DIVERSIONS([]) +ln -s /dev/full DPKG_DIR_ADMIN/diversions-new + +AT_CHECK([DPKG_DIVERT --rename --add /testdir/foo], [2], [stdout], [stderr]) +AT_CHECK([grep -q 'Adding' stdout]) +AT_CHECK([grep -qE '(write|flush|close).*new' stderr]) + +AT_CLEANUP + +AT_SETUP([dpkg-divert db (pathname is dir)]) +AT_KEYWORDS([dpkg-divert db]) + +DPKG_GEN_DB_DIVERSIONS([]) +rm -f DPKG_DIR_ADMIN/diversions-new +mkdir DPKG_DIR_ADMIN/diversions-old + +AT_CHECK([DPKG_DIVERT --rename --add /testdir/foo], [2], [stdout], [stderr]) +AT_CHECK([grep -q 'Adding' stdout]) +AT_CHECK([grep -q 'remov.*old' stderr]) + +AT_CLEANUP diff --git a/src/at/local.at b/src/at/local.at new file mode 100644 index 0000000..1def684 --- /dev/null +++ b/src/at/local.at @@ -0,0 +1,132 @@ +# Dpkg helper macros + +m4_pattern_forbid([^DPKG_]) +m4_pattern_allow([^DPKG_DEBUG$]) +m4_pattern_allow([^DPKG_ROOT$]) +m4_pattern_allow([^DPKG_ADMINDIR$]) +m4_pattern_allow([^DPKG_DATADIR$]) + +# +# Options. +# + +m4_define([DPKG_DIR_INST], [dpkginst]) +m4_define([DPKG_DIR_ADMIN], [dpkgdb]) + +# DPKG_OPTIONS_COMMON +m4_define([DPKG_OPTIONS_COMMON], [dnl + --admindir=DPKG_DIR_ADMIN dnl +]) + +# DPKG_DIVERT_OPTIONS +m4_define([DPKG_DIVERT_OPTIONS], [dnl + --instdir=DPKG_DIR_INST dnl +]) + +# DPKG_DIVERT(...) +m4_define([DPKG_DIVERT], + [dpkg-divert DPKG_OPTIONS_COMMON DPKG_DIVERT_OPTIONS]) + +# DPKG_DIVERT_ADD(...) +m4_define([DPKG_DIVERT_ADD], [DPKG_DIVERT --add]) + +# DPKG_DIVERT_DEL(...) +m4_define([DPKG_DIVERT_DEL], [DPKG_DIVERT --remove]) + +# +# Macros. +# + +# DPKG_FILE_SIZE() +m4_define([DPKG_FILE_SIZE], [ + $PERL -E 'say -s shift' "$1" dnl +]) + +# DPKG_GEN_FSYS() +m4_define([DPKG_GEN_DB], [ + mkdir -p DPKG_DIR_INST +]) + +# DPKG_GEN_FSYS_DIR([$dirname]) +m4_define([DPKG_GEN_FSYS_DIR], [ + mkdir -p "DPKG_DIR_INST/$1" +]) + +# DPKG_GEN_FSYS_FILE([$filename], [$contents]) +m4_define([DPKG_GEN_FSYS_FILE], [ + mkdir -p "DPKG_DIR_INST/$(dirname '$1')" + AT_DATA([DPKG_DIR_INST/$1], [$2]) +]) + +# DPKG_GEN_FSYS_LINK([$pathname], [$target]) +m4_define([DPKG_GEN_FSYS_LINK], [ + ln "DPKG_DIR_INST/$1" "DPKG_DIR_INST/$2" +]) + +# DPKG_CHECK_FSYS_PATH_EXISTS([$pathname]) +m4_define([DPKG_CHECK_FSYS_PATH_EXISTS], [ + AT_CHECK([test -e "DPKG_DIR_INST/$1"]) +]) + +# DPKG_CHECK_FSYS_PATH_MISSING([$pathname]) +m4_define([DPKG_CHECK_FSYS_PATH_MISSING], [ + AT_CHECK([test -e "DPKG_DIR_INST/$1"], [1]) +]) + +# DPKG_MOD_FSYS_MODE([$mode], [$pathname]) +m4_define([DPKG_MOD_FSYS_MODE], [ + chmod $1 "DPKG_DIR_INST/$2" +]) + +# DPKG_TMPL_CONTROL([$pkgname]) +m4_define([DPKG_TMPL_CONTROL], +[Package: $1 +Version: 0.0-1 +Section: test +Priority: extra +Maintainer: Dpkg Developers +Architecture: all +Description: test package]) + +# DPKG_GEN_DB_STATUS([$contents]) +m4_define([DPKG_GEN_DB_STATUS], [ + mkdir -p "DPKG_DIR_ADMIN" + AT_DATA([DPKG_DIR_ADMIN/status], [$1]) +]) + +# DPKG_GEN_DB_DIVERSIONS([$contents]) +m4_define([DPKG_GEN_DB_DIVERSIONS], [ + mkdir -p "DPKG_DIR_ADMIN" + AT_DATA([DPKG_DIR_ADMIN/diversions], [$1]) +]) + +# DPKG_GEN_DB_INFO_FILE([$pkg], [$file], [$contents]) +m4_define([DPKG_GEN_DB_INFO_FILE], [ + mkdir -p "DPKG_DIR_ADMIN/info" + AT_DATA([DPKG_DIR_ADMIN/info/$1.$2], [$3]) +]) + +# DPKG_MOD_DB_MODE([$mode], [$pathname]) +m4_define([DPKG_MOD_DB_MODE], [ + chmod $1 "DPKG_DIR_ADMIN/$2" +]) + +# DPKG_GEN_CTRL_FILE([$pkgname], [$file], [$contents]) +m4_define([DPKG_GEN_CTRL_FILE], [ + mkdir -p '$1/DEBIAN' + + cat >'$1/DEBIAN/$2' <'$1/DEBIAN/control.new' + mv '$1/DEBIAN/control.new' '$1/DEBIAN/control' +]) diff --git a/src/at/package.m4 b/src/at/package.m4 new file mode 100644 index 0000000..37a97d6 --- /dev/null +++ b/src/at/package.m4 @@ -0,0 +1,7 @@ +# Signature of the current package. +m4_define([AT_PACKAGE_NAME], [dpkg]) +m4_define([AT_PACKAGE_TARNAME], [dpkg]) +m4_define([AT_PACKAGE_VERSION], [1.21.22]) +m4_define([AT_PACKAGE_STRING], [dpkg 1.21.22]) +m4_define([AT_PACKAGE_URL], [https://wiki.debian.org/Teams/Dpkg]) +m4_define([AT_PACKAGE_BUGREPORT], [debian-dpkg@lists.debian.org]) diff --git a/src/at/realpath.at b/src/at/realpath.at new file mode 100644 index 0000000..2919c3e --- /dev/null +++ b/src/at/realpath.at @@ -0,0 +1,86 @@ +AT_SETUP([dpkg-realpath options]) +AT_KEYWORDS([dpkg-realpath command-line]) + +AT_CHECK([dpkg-realpath --version], [], [ignore]) +AT_CHECK([dpkg-realpath --help], [], [ignore]) + +AT_CLEANUP + +AT_SETUP([dpkg-realpath path resolving]) +AT_KEYWORDS([dpkg-realpath canonicalize]) + +mkdir -p aa/bb/cc +mkdir -p zz/yy/xx +mkdir -p usr/bin +AT_DATA([aa/bb/cc/file], []) +ln -sfT aa/bb/cc/file zz/yy/xx/symlink-rel +ln -sfT /aa/bb/cc/file zz/yy/xx/symlink-abs +AT_DATA([usr/bin/a-shell], []) +ln -sfT /usr/bin/a-shell usr/bin/sh + +tmpdir="$(pwd)" +export DPKG_ROOT= + +# Relative paths +AT_CHECK_UNQUOTED([dpkg-realpath aa/bb/cc], [], +[$tmpdir/aa/bb/cc +]) +AT_CHECK_UNQUOTED([dpkg-realpath zz/yy/xx], [], [$tmpdir/zz/yy/xx +]) +AT_CHECK_UNQUOTED([dpkg-realpath usr/bin], [], [$tmpdir/usr/bin +]) +AT_CHECK_UNQUOTED([dpkg-realpath aa/bb/cc/file], [], [$tmpdir/aa/bb/cc/file +]) +AT_CHECK_UNQUOTED([dpkg-realpath zz/yy/xx/symlink-rel], [], +[$tmpdir/zz/yy/xx/aa/bb/cc/file +]) +AT_CHECK([dpkg-realpath zz/yy/xx/symlink-abs], [], [/aa/bb/cc/file +]) +AT_CHECK_UNQUOTED([dpkg-realpath usr/bin/a-shell], [], +[$tmpdir/usr/bin/a-shell +]) +AT_CHECK([dpkg-realpath usr/bin/sh], [], [/usr/bin/a-shell +]) + +# Absolute paths +cd / +AT_CHECK_UNQUOTED([dpkg-realpath "$tmpdir/aa/bb/cc"], [], [$tmpdir/aa/bb/cc +]) +AT_CHECK_UNQUOTED([dpkg-realpath "$tmpdir/zz/yy/xx"], [], [$tmpdir/zz/yy/xx +]) +AT_CHECK_UNQUOTED([dpkg-realpath "$tmpdir/usr/bin"], [], [$tmpdir/usr/bin +]) +AT_CHECK_UNQUOTED([dpkg-realpath "$tmpdir/aa/bb/cc/file"], [], +[$tmpdir/aa/bb/cc/file +]) +AT_CHECK_UNQUOTED([dpkg-realpath "$tmpdir/zz/yy/xx/symlink-rel"], [], +[$tmpdir/zz/yy/xx/aa/bb/cc/file +]) +AT_CHECK([dpkg-realpath "$tmpdir/zz/yy/xx/symlink-abs"], [], [/aa/bb/cc/file +]) +AT_CHECK_UNQUOTED([dpkg-realpath "$tmpdir/usr/bin/a-shell"], [], +[$tmpdir/usr/bin/a-shell +]) +AT_CHECK([dpkg-realpath "$tmpdir/usr/bin/sh"], [], [/usr/bin/a-shell +]) + +# Chrooted paths +DPKG_ROOT="$tmpdir" +AT_CHECK([dpkg-realpath /aa/bb/cc], [], [/aa/bb/cc +]) +AT_CHECK([dpkg-realpath /zz/yy/xx], [], [/zz/yy/xx +]) +AT_CHECK([dpkg-realpath /usr/bin], [], [/usr/bin +]) +AT_CHECK([dpkg-realpath /aa/bb/cc/file], [], [/aa/bb/cc/file +]) +AT_CHECK([dpkg-realpath /zz/yy/xx/symlink-rel], [], [/zz/yy/xx/aa/bb/cc/file +]) +AT_CHECK([dpkg-realpath /zz/yy/xx/symlink-abs], [], [/aa/bb/cc/file +]) +AT_CHECK([dpkg-realpath /usr/bin/a-shell], [], [/usr/bin/a-shell +]) +AT_CHECK([dpkg-realpath /usr/bin/sh], [], [/usr/bin/a-shell +]) + +AT_CLEANUP diff --git a/src/at/testsuite b/src/at/testsuite new file mode 100755 index 0000000..57fc1fb --- /dev/null +++ b/src/at/testsuite @@ -0,0 +1,12702 @@ +#! /bin/sh +# Generated from testsuite.at by GNU Autoconf 2.71. +# +# Copyright (C) 2009-2017, 2020-2021 Free Software Foundation, Inc. +# +# This test suite is free software; the Free Software Foundation gives +# unlimited permission to copy, distribute and modify it. +## -------------------- ## +## M4sh Initialization. ## +## -------------------- ## + +# Be more Bourne compatible +DUALCASE=1; export DUALCASE # for MKS sh +as_nop=: +if test ${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 +then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else $as_nop + case `(set -o) 2>/dev/null` in #( + *posix*) : + set -o posix ;; #( + *) : + ;; +esac +fi + + + +# Reset variables that may have inherited troublesome values from +# the environment. + +# IFS needs to be set, to space, tab, and newline, in precisely that order. +# (If _AS_PATH_WALK were called with IFS unset, it would have the +# side effect of setting IFS to empty, thus disabling word splitting.) +# Quoting is to prevent editors from complaining about space-tab. +as_nl=' +' +export as_nl +IFS=" "" $as_nl" + +PS1='$ ' +PS2='> ' +PS4='+ ' + +# Ensure predictable behavior from utilities with locale-dependent output. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# We cannot yet rely on "unset" to work, but we need these variables +# to be unset--not just set to an empty or harmless value--now, to +# avoid bugs in old shells (e.g. pre-3.0 UWIN ksh). This construct +# also avoids known problems related to "unset" and subshell syntax +# in other old shells (e.g. bash 2.01 and pdksh 5.2.14). +for as_var in BASH_ENV ENV MAIL MAILPATH CDPATH +do eval test \${$as_var+y} \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +done + +# Ensure that fds 0, 1, and 2 are open. +if (exec 3>&0) 2>/dev/null; then :; else exec 0&1) 2>/dev/null; then :; else exec 1>/dev/null; fi +if (exec 3>&2) ; then :; else exec 2>/dev/null; fi + +# The user is always right. +if ${PATH_SEPARATOR+false} :; then + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { + (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || + PATH_SEPARATOR=';' + } +fi + + +# Find who we are. Look in the path if we contain no directory separator. +as_myself= +case $0 in #(( + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + test -r "$as_dir$0" && as_myself=$as_dir$0 && break + done +IFS=$as_save_IFS + + ;; +esac +# We did not find ourselves, most probably we were run as `sh COMMAND' +# in which case we are not to be found in the path. +if test "x$as_myself" = x; then + as_myself=$0 +fi +if test ! -f "$as_myself"; then + printf "%s\n" "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + exit 1 +fi + + +if test "x$CONFIG_SHELL" = x; then + as_bourne_compatible="as_nop=: +if test \${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 +then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which + # is contrary to our usage. Disable this feature. + alias -g '\${1+\"\$@\"}'='\"\$@\"' + setopt NO_GLOB_SUBST +else \$as_nop + case \`(set -o) 2>/dev/null\` in #( + *posix*) : + set -o posix ;; #( + *) : + ;; +esac +fi +" + as_required="as_fn_return () { (exit \$1); } +as_fn_success () { as_fn_return 0; } +as_fn_failure () { as_fn_return 1; } +as_fn_ret_success () { return 0; } +as_fn_ret_failure () { return 1; } + +exitcode=0 +as_fn_success || { exitcode=1; echo as_fn_success failed.; } +as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } +as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } +as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } +if ( set x; as_fn_ret_success y && test x = \"\$1\" ) +then : + +else \$as_nop + exitcode=1; echo positional parameters were not saved. +fi +test x\$exitcode = x0 || exit 1 +blah=\$(echo \$(echo blah)) +test x\"\$blah\" = xblah || exit 1 +test -x / || exit 1" + as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO + as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO + eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && + test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 +test \$(( 1 + 1 )) = 2 || exit 1" + if (eval "$as_required") 2>/dev/null +then : + as_have_required=yes +else $as_nop + as_have_required=no +fi + if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null +then : + +else $as_nop + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +as_found=false +for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + as_found=: + case $as_dir in #( + /*) + for as_base in sh bash ksh sh5; do + # Try only shells that exist, to save several forks. + as_shell=$as_dir$as_base + if { test -f "$as_shell" || test -f "$as_shell.exe"; } && + as_run=a "$as_shell" -c "$as_bourne_compatible""$as_required" 2>/dev/null +then : + CONFIG_SHELL=$as_shell as_have_required=yes + if as_run=a "$as_shell" -c "$as_bourne_compatible""$as_suggested" 2>/dev/null +then : + break 2 +fi +fi + done;; + esac + as_found=false +done +IFS=$as_save_IFS +if $as_found +then : + +else $as_nop + if { test -f "$SHELL" || test -f "$SHELL.exe"; } && + as_run=a "$SHELL" -c "$as_bourne_compatible""$as_required" 2>/dev/null +then : + CONFIG_SHELL=$SHELL as_have_required=yes +fi +fi + + + if test "x$CONFIG_SHELL" != x +then : + export CONFIG_SHELL + # We cannot yet assume a decent shell, so we have to provide a +# neutralization value for shells without unset; and this also +# works around shells that cannot unset nonexistent variables. +# Preserve -v and -x to the replacement shell. +BASH_ENV=/dev/null +ENV=/dev/null +(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV +case $- in # (((( + *v*x* | *x*v* ) as_opts=-vx ;; + *v* ) as_opts=-v ;; + *x* ) as_opts=-x ;; + * ) as_opts= ;; +esac +exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} +# Admittedly, this is quite paranoid, since all the known shells bail +# out after a failed `exec'. +printf "%s\n" "$0: could not re-execute with $CONFIG_SHELL" >&2 +exit 255 +fi + + if test x$as_have_required = xno +then : + printf "%s\n" "$0: This script requires a shell more modern than all" + printf "%s\n" "$0: the shells that I found on your system." + if test ${ZSH_VERSION+y} ; then + printf "%s\n" "$0: In particular, zsh $ZSH_VERSION has bugs and should" + printf "%s\n" "$0: be upgraded to zsh 4.3.4 or later." + else + printf "%s\n" "$0: Please tell bug-autoconf@gnu.org about your system, +$0: including any error possibly output before this +$0: message. Then install a modern shell, or manually run +$0: the script under such a shell if you do have one." + fi + exit 1 +fi +fi +fi +SHELL=${CONFIG_SHELL-/bin/sh} +export SHELL +# Unset more variables known to interfere with behavior of common tools. +CLICOLOR_FORCE= GREP_OPTIONS= +unset CLICOLOR_FORCE GREP_OPTIONS + +## --------------------- ## +## M4sh Shell Functions. ## +## --------------------- ## +# as_fn_unset VAR +# --------------- +# Portably unset VAR. +as_fn_unset () +{ + { eval $1=; unset $1;} +} +as_unset=as_fn_unset + + +# as_fn_set_status STATUS +# ----------------------- +# Set $? to STATUS, without forking. +as_fn_set_status () +{ + return $1 +} # as_fn_set_status + +# as_fn_exit STATUS +# ----------------- +# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. +as_fn_exit () +{ + set +e + as_fn_set_status $1 + exit $1 +} # as_fn_exit +# as_fn_nop +# --------- +# Do nothing but, unlike ":", preserve the value of $?. +as_fn_nop () +{ + return $? +} +as_nop=as_fn_nop + +# as_fn_mkdir_p +# ------------- +# Create "$as_dir" as a directory, including parents if necessary. +as_fn_mkdir_p () +{ + + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || eval $as_mkdir_p || { + as_dirs= + while :; do + case $as_dir in #( + *\'*) as_qdir=`printf "%s\n" "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +printf "%s\n" X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break + done + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" + + +} # as_fn_mkdir_p + +# as_fn_executable_p FILE +# ----------------------- +# Test if FILE is an executable regular file. +as_fn_executable_p () +{ + test -f "$1" && test -x "$1" +} # as_fn_executable_p +# as_fn_append VAR VALUE +# ---------------------- +# Append the text in VALUE to the end of the definition contained in VAR. Take +# advantage of any shell optimizations that allow amortized linear growth over +# repeated appends, instead of the typical quadratic growth present in naive +# implementations. +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null +then : + eval 'as_fn_append () + { + eval $1+=\$2 + }' +else $as_nop + as_fn_append () + { + eval $1=\$$1\$2 + } +fi # as_fn_append + +# as_fn_arith ARG... +# ------------------ +# Perform arithmetic evaluation on the ARGs, and store the result in the +# global $as_val. Take advantage of shells that can avoid forks. The arguments +# must be portable across $(()) and expr. +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null +then : + eval 'as_fn_arith () + { + as_val=$(( $* )) + }' +else $as_nop + as_fn_arith () + { + as_val=`expr "$@" || test $? -eq 1` + } +fi # as_fn_arith + + +# as_fn_error STATUS ERROR [LINENO LOG_FD] +# ---------------------------------------- +# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are +# provided, also output the error to LOG_FD, referencing LINENO. Then exit the +# script with STATUS, using 1 if that was 0. +as_fn_error () +{ + as_status=$1; test $as_status -eq 0 && as_status=1 + if test "$4"; then + as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + fi + printf "%s\n" "$as_me: error: $2" >&2 + as_fn_exit $as_status +} # as_fn_error + +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + +as_me=`$as_basename -- "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +printf "%s\n" X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + + + as_lineno_1=$LINENO as_lineno_1a=$LINENO + as_lineno_2=$LINENO as_lineno_2a=$LINENO + eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && + test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { + # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) + sed -n ' + p + /[$]LINENO/= + ' <$as_myself | + sed ' + s/[$]LINENO.*/&-/ + t lineno + b + :lineno + N + :loop + s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ + t loop + s/-\n.*// + ' >$as_me.lineno && + chmod +x "$as_me.lineno" || + { printf "%s\n" "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } + + # If we had to re-execute with $CONFIG_SHELL, we're ensured to have + # already done that, so ensure we don't try to do so again and fall + # in an infinite loop. This has already happened in practice. + _as_can_reexec=no; export _as_can_reexec + # Don't try to exec as it changes $[0], causing all sort of problems + # (the dirname of $[0] is not the place where we might find the + # original and so on. Autoconf is especially sensitive to this). + . "./$as_me.lineno" + # Exit status is that of the last command. + exit +} + + +# Determine whether it's possible to make 'echo' print without a newline. +# These variables are no longer used directly by Autoconf, but are AC_SUBSTed +# for compatibility with existing Makefiles. +ECHO_C= ECHO_N= ECHO_T= +case `echo -n x` in #((((( +-n*) + case `echo 'xy\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. + xy) ECHO_C='\c';; + *) echo `echo ksh88 bug on AIX 6.1` > /dev/null + ECHO_T=' ';; + esac;; +*) + ECHO_N='-n';; +esac + +# For backward compatibility with old third-party macros, we provide +# the shell variables $as_echo and $as_echo_n. New code should use +# AS_ECHO(["message"]) and AS_ECHO_N(["message"]), respectively. +as_echo='printf %s\n' +as_echo_n='printf %s' + + +rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir 2>/dev/null +fi +if (echo >conf$$.file) 2>/dev/null; then + if ln -s conf$$.file conf$$ 2>/dev/null; then + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. + # In both cases, we have to default to `cp -pR'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -pR' + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else + as_ln_s='cp -pR' + fi +else + as_ln_s='cp -pR' +fi +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null + +if mkdir -p . 2>/dev/null; then + as_mkdir_p='mkdir -p "$as_dir"' +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + +as_test_x='test -x' +as_executable_p=as_fn_executable_p + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + + + + + +SHELL=${CONFIG_SHELL-/bin/sh} + +# How were we run? +at_cli_args="$@" + + +# Not all shells have the 'times' builtin; the subshell is needed to make +# sure we discard the 'times: not found' message from the shell. +at_times_p=false +(times) >/dev/null 2>&1 && at_times_p=: + +# CLI Arguments to pass to the debugging scripts. +at_debug_args= +# -e sets to true +at_errexit_p=false +# Shall we be verbose? ':' means no, empty means yes. +at_verbose=: +at_quiet= +# Running several jobs in parallel, 0 means as many as test groups. +at_jobs=1 +at_traceon=: +at_trace_echo=: +at_check_filter_trace=: + +# Shall we keep the debug scripts? Must be `:' when the suite is +# run by a debug script, so that the script doesn't remove itself. +at_debug_p=false +# Display help message? +at_help_p=false +# Display the version message? +at_version_p=false +# List test groups? +at_list_p=false +# --clean +at_clean=false +# Test groups to run +at_groups= +# Whether to rerun failed tests. +at_recheck= +# Whether a write failure occurred +at_write_fail=0 + +# The directory we run the suite in. Default to . if no -C option. +at_dir=`pwd` +# An absolute reference to this testsuite script. +case $as_myself in + [\\/]* | ?:[\\/]* ) at_myself=$as_myself ;; + * ) at_myself=$at_dir/$as_myself ;; +esac +# Whether -C is in effect. +at_change_dir=false + +# Whether to enable colored test results. +at_color=auto +# As many question marks as there are digits in the last test group number. +# Used to normalize the test group numbers so that `ls' lists them in +# numerical order. +at_format='??' +# Description of all the test groups. +at_help_all="1;deb-format.at:1;dpkg-deb options;dpkg-deb command-line; +2;deb-format.at:10;dpkg-deb .deb format 0.93x;dpkg-deb deb-old; +3;deb-format.at:168;dpkg-deb .deb format 2.x;dpkg-deb deb; +4;deb-content.at:1;dpkg-deb .deb conffiles;dpkg-deb deb conffiles; +5;deb-fields.at:1;dpkg-deb .deb fields;dpkg-deb deb fields; +6;deb-split.at:1;dpkg-split options;dpkg-split command-line; +7;deb-split.at:9;dpkg-split .deb format;dpkg-split deb-split; +8;realpath.at:1;dpkg-realpath options;dpkg-realpath command-line; +9;realpath.at:9;dpkg-realpath path resolving;dpkg-realpath canonicalize; +10;divert.at:1;dpkg-divert options;dpkg-divert command-line; +11;divert.at:83;dpkg-divert query (empty db);dpkg-divert query; +12;divert.at:94;dpkg-divert query (list);dpkg-divert query; +13;divert.at:134;dpkg-divert query (listpackage + truename);dpkg-divert query; +14;divert.at:160;dpkg-divert add (local rename);dpkg-divert add; +15;divert.at:178;dpkg-divert add (local no-rename);dpkg-divert add; +16;divert.at:196;dpkg-divert add (rename quiet);dpkg-divert add; +17;divert.at:213;dpkg-divert add (test rename quiet);dpkg-divert add; +18;divert.at:226;dpkg-divert add (rename missing quiet);dpkg-divert add; +19;divert.at:243;dpkg-divert add (local rename quiet);dpkg-divert add; +20;divert.at:260;dpkg-divert add (package rename quiet);dpkg-divert add; +21;divert.at:274;dpkg-divert add (rename self-link);dpkg-divert add; +22;divert.at:292;dpkg-divert add (rename other-file);dpkg-divert add; +23;divert.at:305;dpkg-divert add (rename missing dir);dpkg-divert add; +24;divert.at:319;dpkg-divert add (rename read-only dir);dpkg-divert fsys; +25;divert.at:343;dpkg-divert add (rename no-access dir);dpkg-divert fsys; +26;divert.at:367;dpkg-divert add second diversion;dpkg-divert add; +27;divert.at:401;dpkg-divert add third diversion;dpkg-divert add; +28;divert.at:420;dpkg-divert add (file owned by --package);dpkg-divert add; +29;divert.at:447;dpkg-divert remove (missing);dpkg-divert remove; +30;divert.at:459;dpkg-divert remove (divert-to);dpkg-divert remove; +31;divert.at:494;dpkg-divert remove (plain);dpkg-divert remove; +32;divert.at:517;dpkg-divert remove (by-package);dpkg-divert remove; +33;divert.at:539;dpkg-divert remove (test);dpkg-divert remove; +34;divert.at:564;dpkg-divert db (no-access);dpkg-divert db; +35;divert.at:580;dpkg-divert db (truncated);dpkg-divert db; +36;divert.at:598;dpkg-divert db (read-only dir);dpkg-divert db; +37;divert.at:613;dpkg-divert db (disk full);dpkg-divert db; +38;divert.at:628;dpkg-divert db (pathname is dir);dpkg-divert db; +39;chdir.at:5;dpkg chdir opts;dpkg command-line chdir; +40;chdir.at:5;dpkg chdir env;dpkg command-line chdir; +41;chdir.at:5;dpkg chdir env+opt admindir;dpkg command-line chdir; +42;chdir.at:5;dpkg chdir env+opt root;dpkg command-line chdir; +43;chdir.at:5;dpkg chdir env+opt root+admindir;dpkg command-line chdir; +44;chdir.at:5;dpkg-divert chdir opts;dpkg-divert command-line chdir; +45;chdir.at:5;dpkg-divert chdir env;dpkg-divert command-line chdir; +46;chdir.at:5;dpkg-divert chdir env+opt admindir;dpkg-divert command-line chdir; +47;chdir.at:5;dpkg-divert chdir env+opt root;dpkg-divert command-line chdir; +48;chdir.at:5;dpkg-divert chdir env+opt root+admindir;dpkg-divert command-line chdir; +49;chdir.at:5;dpkg-statoverride chdir opts;dpkg-statoverride command-line chdir; +50;chdir.at:5;dpkg-statoverride chdir env;dpkg-statoverride command-line chdir; +51;chdir.at:5;dpkg-statoverride chdir env+opt admindir;dpkg-statoverride command-line chdir; +52;chdir.at:5;dpkg-statoverride chdir env+opt root;dpkg-statoverride command-line chdir; +53;chdir.at:5;dpkg-statoverride chdir env+opt root+admindir;dpkg-statoverride command-line chdir; +54;chdir.at:329;dpkg-split chdir opts;dpkg-split command-line chdir; +55;chdir.at:329;dpkg-split chdir env;dpkg-split command-line chdir; +56;chdir.at:329;dpkg-split chdir env+opt admindir;dpkg-split command-line chdir; +57;chdir.at:329;dpkg-split chdir env+opt root;dpkg-split command-line chdir; +58;chdir.at:329;dpkg-split chdir env+opt root+admindir;dpkg-split command-line chdir; +59;chdir.at:329;dpkg-query chdir opts;dpkg-query command-line chdir; +60;chdir.at:329;dpkg-query chdir env;dpkg-query command-line chdir; +61;chdir.at:329;dpkg-query chdir env+opt admindir;dpkg-query command-line chdir; +62;chdir.at:329;dpkg-query chdir env+opt root;dpkg-query command-line chdir; +63;chdir.at:329;dpkg-query chdir env+opt root+admindir;dpkg-query command-line chdir; +64;chdir.at:329;dpkg-trigger chdir opts;dpkg-trigger command-line chdir; +65;chdir.at:329;dpkg-trigger chdir env;dpkg-trigger command-line chdir; +66;chdir.at:329;dpkg-trigger chdir env+opt admindir;dpkg-trigger command-line chdir; +67;chdir.at:329;dpkg-trigger chdir env+opt root;dpkg-trigger command-line chdir; +68;chdir.at:329;dpkg-trigger chdir env+opt root+admindir;dpkg-trigger command-line chdir; +" +# List of the all the test groups. +at_groups_all=`printf "%s\n" "$at_help_all" | sed 's/;.*//'` + +# at_fn_validate_ranges NAME... +# ----------------------------- +# Validate and normalize the test group number contained in each variable +# NAME. Leading zeroes are treated as decimal. +at_fn_validate_ranges () +{ + for at_grp + do + eval at_value=\$$at_grp + if test $at_value -lt 1 || test $at_value -gt 68; then + printf "%s\n" "invalid test group: $at_value" >&2 + exit 1 + fi + case $at_value in + 0*) # We want to treat leading 0 as decimal, like expr and test, but + # AS_VAR_ARITH treats it as octal if it uses $(( )). + # With XSI shells, ${at_value#${at_value%%[1-9]*}} avoids the + # expr fork, but it is not worth the effort to determine if the + # shell supports XSI when the user can just avoid leading 0. + eval $at_grp='`expr $at_value + 0`' ;; + esac + done +} +# List of the tested programs. +at_tested='"dpkg-deb" +"dpkg-split" +"dpkg-realpath" +"dpkg-divert" +"dpkg"' + + +at_prev= +for at_option +do + # If the previous option needs an argument, assign it. + if test -n "$at_prev"; then + at_option=$at_prev=$at_option + at_prev= + fi + + case $at_option in + *=?*) at_optarg=`expr "X$at_option" : '[^=]*=\(.*\)'` ;; + *) at_optarg= ;; + esac + + case $at_option in + --help | -h ) + at_help_p=: + ;; + + --list | -l ) + at_list_p=: + ;; + + --version | -V ) + at_version_p=: + ;; + + --clean | -c ) + at_clean=: + ;; + + --color ) + at_color=always + ;; + --color=* ) + case $at_optarg in + no | never | none) at_color=never ;; + auto | tty | if-tty) at_color=auto ;; + always | yes | force) at_color=always ;; + *) at_optname=`echo " $at_option" | sed 's/^ //; s/=.*//'` + as_fn_error $? "unrecognized argument to $at_optname: $at_optarg" ;; + esac + ;; + + --debug | -d ) + at_debug_p=: + ;; + + --errexit | -e ) + at_debug_p=: + at_errexit_p=: + ;; + + --verbose | -v ) + at_verbose=; at_quiet=: + ;; + + --trace | -x ) + at_traceon='set -x' + at_trace_echo=echo + at_check_filter_trace=at_fn_filter_trace + ;; + + [0-9] | [0-9][0-9] | [0-9][0-9][0-9] | [0-9][0-9][0-9][0-9]) + at_fn_validate_ranges at_option + as_fn_append at_groups "$at_option$as_nl" + ;; + + # Ranges + [0-9]- | [0-9][0-9]- | [0-9][0-9][0-9]- | [0-9][0-9][0-9][0-9]-) + at_range_start=`echo $at_option |tr -d X-` + at_fn_validate_ranges at_range_start + at_range=`printf "%s\n" "$at_groups_all" | \ + sed -ne '/^'$at_range_start'$/,$p'` + as_fn_append at_groups "$at_range$as_nl" + ;; + + -[0-9] | -[0-9][0-9] | -[0-9][0-9][0-9] | -[0-9][0-9][0-9][0-9]) + at_range_end=`echo $at_option |tr -d X-` + at_fn_validate_ranges at_range_end + at_range=`printf "%s\n" "$at_groups_all" | \ + sed -ne '1,/^'$at_range_end'$/p'` + as_fn_append at_groups "$at_range$as_nl" + ;; + + [0-9]-[0-9] | [0-9]-[0-9][0-9] | [0-9]-[0-9][0-9][0-9] | \ + [0-9]-[0-9][0-9][0-9][0-9] | [0-9][0-9]-[0-9][0-9] | \ + [0-9][0-9]-[0-9][0-9][0-9] | [0-9][0-9]-[0-9][0-9][0-9][0-9] | \ + [0-9][0-9][0-9]-[0-9][0-9][0-9] | \ + [0-9][0-9][0-9]-[0-9][0-9][0-9][0-9] | \ + [0-9][0-9][0-9][0-9]-[0-9][0-9][0-9][0-9] ) + at_range_start=`expr $at_option : '\(.*\)-'` + at_range_end=`expr $at_option : '.*-\(.*\)'` + if test $at_range_start -gt $at_range_end; then + at_tmp=$at_range_end + at_range_end=$at_range_start + at_range_start=$at_tmp + fi + at_fn_validate_ranges at_range_start at_range_end + at_range=`printf "%s\n" "$at_groups_all" | \ + sed -ne '/^'$at_range_start'$/,/^'$at_range_end'$/p'` + as_fn_append at_groups "$at_range$as_nl" + ;; + + # Directory selection. + --directory | -C ) + at_prev=--directory + ;; + --directory=* ) + at_change_dir=: + at_dir=$at_optarg + if test x- = "x$at_dir" ; then + at_dir=./- + fi + ;; + + # Parallel execution. + --jobs | -j ) + at_jobs=0 + ;; + --jobs=* | -j[0-9]* ) + if test -n "$at_optarg"; then + at_jobs=$at_optarg + else + at_jobs=`expr X$at_option : 'X-j\(.*\)'` + fi + case $at_jobs in *[!0-9]*) + at_optname=`echo " $at_option" | sed 's/^ //; s/[0-9=].*//'` + as_fn_error $? "non-numeric argument to $at_optname: $at_jobs" ;; + esac + ;; + + # Keywords. + --keywords | -k ) + at_prev=--keywords + ;; + --keywords=* ) + at_groups_selected=$at_help_all + at_save_IFS=$IFS + IFS=, + set X $at_optarg + shift + IFS=$at_save_IFS + for at_keyword + do + at_invert= + case $at_keyword in + '!'*) + at_invert="-v" + at_keyword=`expr "X$at_keyword" : 'X!\(.*\)'` + ;; + esac + # It is on purpose that we match the test group titles too. + at_groups_selected=`printf "%s\n" "$at_groups_selected" | + grep -i $at_invert "^[1-9][^;]*;.*[; ]$at_keyword[ ;]"` + done + # Smash the keywords. + at_groups_selected=`printf "%s\n" "$at_groups_selected" | sed 's/;.*//'` + as_fn_append at_groups "$at_groups_selected$as_nl" + ;; + --recheck) + at_recheck=: + ;; + + *=*) + at_envvar=`expr "x$at_option" : 'x\([^=]*\)='` + # Reject names that are not valid shell variable names. + case $at_envvar in + '' | [0-9]* | *[!_$as_cr_alnum]* ) + as_fn_error $? "invalid variable name: \`$at_envvar'" ;; + esac + at_value=`printf "%s\n" "$at_optarg" | sed "s/'/'\\\\\\\\''/g"` + # Export now, but save eval for later and for debug scripts. + export $at_envvar + as_fn_append at_debug_args " $at_envvar='$at_value'" + ;; + + *) printf "%s\n" "$as_me: invalid option: $at_option" >&2 + printf "%s\n" "Try \`$0 --help' for more information." >&2 + exit 1 + ;; + esac +done + +# Verify our last option didn't require an argument +if test -n "$at_prev" +then : + as_fn_error $? "\`$at_prev' requires an argument" +fi + +# The file containing the suite. +at_suite_log=$at_dir/$as_me.log + +# Selected test groups. +if test -z "$at_groups$at_recheck"; then + at_groups=$at_groups_all +else + if test -n "$at_recheck" && test -r "$at_suite_log"; then + at_oldfails=`sed -n ' + /^Failed tests:$/,/^Skipped tests:$/{ + s/^[ ]*\([1-9][0-9]*\):.*/\1/p + } + /^Unexpected passes:$/,/^## Detailed failed tests/{ + s/^[ ]*\([1-9][0-9]*\):.*/\1/p + } + /^## Detailed failed tests/q + ' "$at_suite_log"` + as_fn_append at_groups "$at_oldfails$as_nl" + fi + # Sort the tests, removing duplicates. + at_groups=`printf "%s\n" "$at_groups" | sort -nu | sed '/^$/d'` +fi + +if test x"$at_color" = xalways \ + || { test x"$at_color" = xauto && test -t 1; }; then + at_red=`printf '\033[0;31m'` + at_grn=`printf '\033[0;32m'` + at_lgn=`printf '\033[1;32m'` + at_blu=`printf '\033[1;34m'` + at_std=`printf '\033[m'` +else + at_red= at_grn= at_lgn= at_blu= at_std= +fi + +# Help message. +if $at_help_p; then + cat <<_ATEOF || at_write_fail=1 +Usage: $0 [OPTION]... [VARIABLE=VALUE]... [TESTS] + +Run all the tests, or the selected TESTS, given by numeric ranges, and +save a detailed log file. Upon failure, create debugging scripts. + +Do not change environment variables directly. Instead, set them via +command line arguments. Set \`AUTOTEST_PATH' to select the executables +to exercise. Each relative directory is expanded as build and source +directories relative to the top level of this distribution. +E.g., from within the build directory /tmp/foo-1.0, invoking this: + + $ $0 AUTOTEST_PATH=bin + +is equivalent to the following, assuming the source directory is /src/foo-1.0: + + PATH=/tmp/foo-1.0/bin:/src/foo-1.0/bin:\$PATH $0 +_ATEOF +cat <<_ATEOF || at_write_fail=1 + +Operation modes: + -h, --help print the help message, then exit + -V, --version print version number, then exit + -c, --clean remove all the files this test suite might create and exit + -l, --list describes all the tests, or the selected TESTS +_ATEOF +cat <<_ATEOF || at_write_fail=1 + +Execution tuning: + -C, --directory=DIR + change to directory DIR before starting + --color[=never|auto|always] + disable colored test results, or enable even without terminal + -j, --jobs[=N] + Allow N jobs at once; infinite jobs with no arg (default 1) + -k, --keywords=KEYWORDS + select the tests matching all the comma-separated KEYWORDS + multiple \`-k' accumulate; prefixed \`!' negates a KEYWORD + --recheck select all tests that failed or passed unexpectedly last time + -e, --errexit abort as soon as a test fails; implies --debug + -v, --verbose force more detailed output + default for debugging scripts + -d, --debug inhibit clean up and top-level logging + default for debugging scripts + -x, --trace enable tests shell tracing +_ATEOF +cat <<_ATEOF || at_write_fail=1 + +Report bugs to . +dpkg home page: . +_ATEOF + exit $at_write_fail +fi + +# List of tests. +if $at_list_p; then + cat <<_ATEOF || at_write_fail=1 +dpkg 1.21.22 test suite: dpkg tools functional test suite test groups: + + NUM: FILE-NAME:LINE TEST-GROUP-NAME + KEYWORDS + +_ATEOF + # Pass an empty line as separator between selected groups and help. + printf "%s\n" "$at_groups$as_nl$as_nl$at_help_all" | + awk 'NF == 1 && FS != ";" { + selected[$ 1] = 1 + next + } + /^$/ { FS = ";" } + NF > 0 { + if (selected[$ 1]) { + printf " %3d: %-18s %s\n", $ 1, $ 2, $ 3 + if ($ 4) { + lmax = 79 + indent = " " + line = indent + len = length (line) + n = split ($ 4, a, " ") + for (i = 1; i <= n; i++) { + l = length (a[i]) + 1 + if (i > 1 && len + l > lmax) { + print line + line = indent " " a[i] + len = length (line) + } else { + line = line " " a[i] + len += l + } + } + if (n) + print line + } + } + }' || at_write_fail=1 + exit $at_write_fail +fi +if $at_version_p; then + printf "%s\n" "$as_me (dpkg 1.21.22)" && + cat <<\_ATEOF || at_write_fail=1 + +Copyright (C) 2021 Free Software Foundation, Inc. +This test suite is free software; the Free Software Foundation gives +unlimited permission to copy, distribute and modify it. +_ATEOF + exit $at_write_fail +fi + +# Should we print banners? Yes if more than one test is run. +case $at_groups in #( + *$as_nl* ) + at_print_banners=: ;; #( + * ) at_print_banners=false ;; +esac +# Text for banner N, set to a single space once printed. +# Banner 1. testsuite.at:5 +# Category starts at test group 1. +at_banner_text_1="Binary .deb packages" +# Banner 2. testsuite.at:11 +# Category starts at test group 6. +at_banner_text_2="Split .deb packages" +# Banner 3. testsuite.at:15 +# Category starts at test group 8. +at_banner_text_3="Resolve pathnames" +# Banner 4. testsuite.at:19 +# Category starts at test group 10. +at_banner_text_4="Diversions" +# Banner 5. testsuite.at:23 +# Category starts at test group 39. +at_banner_text_5="Change directory options" + +# Take any -C into account. +if $at_change_dir ; then + test x != "x$at_dir" && cd "$at_dir" \ + || as_fn_error $? "unable to change directory" + at_dir=`pwd` +fi + +# Load the config files for any default variable assignments. +for at_file in atconfig atlocal +do + test -r $at_file || continue + . ./$at_file || as_fn_error $? "invalid content: $at_file" +done + +# Autoconf <=2.59b set at_top_builddir instead of at_top_build_prefix: +: "${at_top_build_prefix=$at_top_builddir}" + +# Perform any assignments requested during argument parsing. +eval "$at_debug_args" + +# atconfig delivers names relative to the directory the test suite is +# in, but the groups themselves are run in testsuite-dir/group-dir. +if test -n "$at_top_srcdir"; then + builddir=../.. + for at_dir_var in srcdir top_srcdir top_build_prefix + do + eval at_val=\$at_$at_dir_var + case $at_val in + [\\/$]* | ?:[\\/]* ) at_prefix= ;; + *) at_prefix=../../ ;; + esac + eval "$at_dir_var=\$at_prefix\$at_val" + done +fi + +## -------------------- ## +## Directory structure. ## +## -------------------- ## + +# This is the set of directories and files used by this script +# (non-literals are capitalized): +# +# TESTSUITE - the testsuite +# TESTSUITE.log - summarizes the complete testsuite run +# TESTSUITE.dir/ - created during a run, remains after -d or failed test +# + at-groups/ - during a run: status of all groups in run +# | + NNN/ - during a run: meta-data about test group NNN +# | | + check-line - location (source file and line) of current AT_CHECK +# | | + status - exit status of current AT_CHECK +# | | + stdout - stdout of current AT_CHECK +# | | + stder1 - stderr, including trace +# | | + stderr - stderr, with trace filtered out +# | | + test-source - portion of testsuite that defines group +# | | + times - timestamps for computing duration +# | | + pass - created if group passed +# | | + xpass - created if group xpassed +# | | + fail - created if group failed +# | | + xfail - created if group xfailed +# | | + skip - created if group skipped +# + at-stop - during a run: end the run if this file exists +# + at-source-lines - during a run: cache of TESTSUITE line numbers for extraction +# + 0..NNN/ - created for each group NNN, remains after -d or failed test +# | + TESTSUITE.log - summarizes the group results +# | + ... - files created during the group + +# The directory the whole suite works in. +# Should be absolute to let the user `cd' at will. +at_suite_dir=$at_dir/$as_me.dir +# The file containing the suite ($at_dir might have changed since earlier). +at_suite_log=$at_dir/$as_me.log +# The directory containing helper files per test group. +at_helper_dir=$at_suite_dir/at-groups +# Stop file: if it exists, do not start new jobs. +at_stop_file=$at_suite_dir/at-stop +# The fifo used for the job dispatcher. +at_job_fifo=$at_suite_dir/at-job-fifo + +if $at_clean; then + test -d "$at_suite_dir" && + find "$at_suite_dir" -type d ! -perm -700 -exec chmod u+rwx \{\} \; + rm -f -r "$at_suite_dir" "$at_suite_log" + exit $? +fi + +# Don't take risks: use only absolute directories in PATH. +# +# For stand-alone test suites (ie. atconfig was not found), +# AUTOTEST_PATH is relative to `.'. +# +# For embedded test suites, AUTOTEST_PATH is relative to the top level +# of the package. Then expand it into build/src parts, since users +# may create executables in both places. +AUTOTEST_PATH=`printf "%s\n" "$AUTOTEST_PATH" | sed "s|:|$PATH_SEPARATOR|g"` +at_path= +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $AUTOTEST_PATH $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + test -n "$at_path" && as_fn_append at_path $PATH_SEPARATOR +case $as_dir in + [\\/]* | ?:[\\/]* ) + as_fn_append at_path "$as_dir" + ;; + * ) + if test -z "$at_top_build_prefix"; then + # Stand-alone test suite. + as_fn_append at_path "$as_dir" + else + # Embedded test suite. + as_fn_append at_path "$at_top_build_prefix$as_dir$PATH_SEPARATOR" + as_fn_append at_path "$at_top_srcdir/$as_dir" + fi + ;; +esac + done +IFS=$as_save_IFS + + +# Now build and simplify PATH. +# +# There might be directories that don't exist, but don't redirect +# builtins' (eg., cd) stderr directly: Ultrix's sh hates that. +at_new_path= +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $at_path +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + test -d "$as_dir" || continue +case $as_dir in + [\\/]* | ?:[\\/]* ) ;; + * ) as_dir=`(cd "$as_dir" && pwd) 2>/dev/null` ;; +esac +case $PATH_SEPARATOR$at_new_path$PATH_SEPARATOR in + *$PATH_SEPARATOR$as_dir$PATH_SEPARATOR*) ;; + $PATH_SEPARATOR$PATH_SEPARATOR) at_new_path=$as_dir ;; + *) as_fn_append at_new_path "$PATH_SEPARATOR$as_dir" ;; +esac + done +IFS=$as_save_IFS + +PATH=$at_new_path +export PATH + +# Setting up the FDs. + + + +# 5 is the log file. Not to be overwritten if `-d'. +if $at_debug_p; then + at_suite_log=/dev/null +else + : >"$at_suite_log" +fi +exec 5>>"$at_suite_log" + +# Banners and logs. +printf "%s\n" "## ---------------------------------------------------------- ## +## dpkg 1.21.22 test suite: dpkg tools functional test suite. ## +## ---------------------------------------------------------- ##" +{ + printf "%s\n" "## ---------------------------------------------------------- ## +## dpkg 1.21.22 test suite: dpkg tools functional test suite. ## +## ---------------------------------------------------------- ##" + echo + + printf "%s\n" "$as_me: command line was:" + printf "%s\n" " \$ $0 $at_cli_args" + echo + + # If ChangeLog exists, list a few lines in case it might help determining + # the exact version. + if test -n "$at_top_srcdir" && test -f "$at_top_srcdir/ChangeLog"; then + printf "%s\n" "## ---------- ## +## ChangeLog. ## +## ---------- ##" + echo + sed 's/^/| /;10q' "$at_top_srcdir/ChangeLog" + echo + fi + + { +cat <<_ASUNAME +## --------- ## +## Platform. ## +## --------- ## + +hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` +uname -m = `(uname -m) 2>/dev/null || echo unknown` +uname -r = `(uname -r) 2>/dev/null || echo unknown` +uname -s = `(uname -s) 2>/dev/null || echo unknown` +uname -v = `(uname -v) 2>/dev/null || echo unknown` + +/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` +/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` + +/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` +/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` +/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` +/usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` +/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` +/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` +/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` + +_ASUNAME + +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + printf "%s\n" "PATH: $as_dir" + done +IFS=$as_save_IFS + +} + echo + + # Contents of the config files. + for at_file in atconfig atlocal + do + test -r $at_file || continue + printf "%s\n" "$as_me: $at_file:" + sed 's/^/| /' $at_file + echo + done +} >&5 + + +## ------------------------- ## +## Autotest shell functions. ## +## ------------------------- ## + +# at_fn_banner NUMBER +# ------------------- +# Output banner NUMBER, provided the testsuite is running multiple groups and +# this particular banner has not yet been printed. +at_fn_banner () +{ + $at_print_banners || return 0 + eval at_banner_text=\$at_banner_text_$1 + test "x$at_banner_text" = "x " && return 0 + eval "at_banner_text_$1=\" \"" + if test -z "$at_banner_text"; then + $at_first || echo + else + printf "%s\n" "$as_nl$at_banner_text$as_nl" + fi +} # at_fn_banner + +# at_fn_check_prepare_notrace REASON LINE +# --------------------------------------- +# Perform AT_CHECK preparations for the command at LINE for an untraceable +# command; REASON is the reason for disabling tracing. +at_fn_check_prepare_notrace () +{ + $at_trace_echo "Not enabling shell tracing (command contains $1)" + printf "%s\n" "$2" >"$at_check_line_file" + at_check_trace=: at_check_filter=: + : >"$at_stdout"; : >"$at_stderr" +} + +# at_fn_check_prepare_trace LINE +# ------------------------------ +# Perform AT_CHECK preparations for the command at LINE for a traceable +# command. +at_fn_check_prepare_trace () +{ + printf "%s\n" "$1" >"$at_check_line_file" + at_check_trace=$at_traceon at_check_filter=$at_check_filter_trace + : >"$at_stdout"; : >"$at_stderr" +} + +# at_fn_check_prepare_dynamic COMMAND LINE +# ---------------------------------------- +# Decide if COMMAND at LINE is traceable at runtime, and call the appropriate +# preparation function. +at_fn_check_prepare_dynamic () +{ + case $1 in + *$as_nl*) + at_fn_check_prepare_notrace 'an embedded newline' "$2" ;; + *) + at_fn_check_prepare_trace "$2" ;; + esac +} + +# at_fn_filter_trace +# ------------------ +# Remove the lines in the file "$at_stderr" generated by "set -x" and print +# them to stderr. +at_fn_filter_trace () +{ + mv "$at_stderr" "$at_stder1" + grep '^ *+' "$at_stder1" >&2 + grep -v '^ *+' "$at_stder1" >"$at_stderr" +} + +# at_fn_log_failure FILE-LIST +# --------------------------- +# Copy the files in the list on stdout with a "> " prefix, and exit the shell +# with a failure exit code. +at_fn_log_failure () +{ + for file + do printf "%s\n" "$file:"; sed 's/^/> /' "$file"; done + echo 1 > "$at_status_file" + exit 1 +} + +# at_fn_check_skip EXIT-CODE LINE +# ------------------------------- +# Check whether EXIT-CODE is a special exit code (77 or 99), and if so exit +# the test group subshell with that same exit code. Use LINE in any report +# about test failure. +at_fn_check_skip () +{ + case $1 in + 99) echo 99 > "$at_status_file"; at_failed=: + printf "%s\n" "$2: hard failure"; exit 99;; + 77) echo 77 > "$at_status_file"; exit 77;; + esac +} + +# at_fn_check_status EXPECTED EXIT-CODE LINE +# ------------------------------------------ +# Check whether EXIT-CODE is the EXPECTED exit code, and if so do nothing. +# Otherwise, if it is 77 or 99, exit the test group subshell with that same +# exit code; if it is anything else print an error message referring to LINE, +# and fail the test. +at_fn_check_status () +{ + case $2 in + $1 ) ;; + 77) echo 77 > "$at_status_file"; exit 77;; + 99) echo 99 > "$at_status_file"; at_failed=: + printf "%s\n" "$3: hard failure"; exit 99;; + *) printf "%s\n" "$3: exit code was $2, expected $1" + at_failed=:;; + esac +} + +# at_fn_diff_devnull FILE +# ----------------------- +# Emit a diff between /dev/null and FILE. Uses "test -s" to avoid useless diff +# invocations. +at_fn_diff_devnull () +{ + test -s "$1" || return 0 + $at_diff "$at_devnull" "$1" +} + +# at_fn_test NUMBER +# ----------------- +# Parse out test NUMBER from the tail of this file. +at_fn_test () +{ + eval at_sed=\$at_sed$1 + sed "$at_sed" "$at_myself" > "$at_test_source" +} + +# at_fn_create_debugging_script +# ----------------------------- +# Create the debugging script $at_group_dir/run which will reproduce the +# current test group. +at_fn_create_debugging_script () +{ + { + echo "#! /bin/sh" && + echo 'test ${ZSH_VERSION+y} && alias -g '\''${1+"$@"}'\''='\''"$@"'\''' && + printf "%s\n" "cd '$at_dir'" && + printf "%s\n" "exec \${CONFIG_SHELL-$SHELL} \"$at_myself\" -v -d $at_debug_args $at_group \${1+\"\$@\"}" && + echo 'exit 1' + } >"$at_group_dir/run" && + chmod +x "$at_group_dir/run" +} + +## -------------------------------- ## +## End of autotest shell functions. ## +## -------------------------------- ## +{ + printf "%s\n" "## ---------------- ## +## Tested programs. ## +## ---------------- ##" + echo +} >&5 + +# Report what programs are being tested. +for at_program in : `eval echo $at_tested` +do + case $at_program in #( + :) : + continue ;; #( + [\\/]* | ?:[\\/]*) : + at_program_=$at_program ;; #( + *) : + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + test -f "$as_dir$at_program" && break + done +IFS=$as_save_IFS + + at_program_=$as_dir$at_program ;; +esac + + if test -f "$at_program_"; then + { + printf "%s\n" "$at_srcdir/testsuite.at:1: $at_program_ --version" + "$at_program_" --version &5 2>&1 + else + as_fn_error $? "cannot find $at_program" "$LINENO" 5 + fi +done + +{ + printf "%s\n" "## ------------------ ## +## Running the tests. ## +## ------------------ ##" +} >&5 + +at_start_date=`date` +at_start_time=`date +%s 2>/dev/null` +printf "%s\n" "$as_me: starting at: $at_start_date" >&5 + +# Create the master directory if it doesn't already exist. +as_dir="$at_suite_dir"; as_fn_mkdir_p || + as_fn_error $? "cannot create \`$at_suite_dir'" "$LINENO" 5 + +# Can we diff with `/dev/null'? DU 5.0 refuses. +if diff /dev/null /dev/null >/dev/null 2>&1; then + at_devnull=/dev/null +else + at_devnull=$at_suite_dir/devnull + >"$at_devnull" +fi + +# Use `diff -u' when possible. +if at_diff=`diff -u "$at_devnull" "$at_devnull" 2>&1` && test -z "$at_diff" +then + at_diff='diff -u' +else + at_diff=diff +fi + +# Get the last needed group. +for at_group in : $at_groups; do :; done + +# Extract the start and end lines of each test group at the tail +# of this file +awk ' +BEGIN { FS="" } +/^#AT_START_/ { + start = NR +} +/^#AT_STOP_/ { + test = substr ($ 0, 10) + print "at_sed" test "=\"1," start "d;" (NR-1) "q\"" + if (test == "'"$at_group"'") exit +}' "$at_myself" > "$at_suite_dir/at-source-lines" && +. "$at_suite_dir/at-source-lines" || + as_fn_error $? "cannot create test line number cache" "$LINENO" 5 +rm -f "$at_suite_dir/at-source-lines" + +# Set number of jobs for `-j'; avoid more jobs than test groups. +set X $at_groups; shift; at_max_jobs=$# +if test $at_max_jobs -eq 0; then + at_jobs=1 +fi +if test $at_jobs -ne 1 && + { test $at_jobs -eq 0 || test $at_jobs -gt $at_max_jobs; }; then + at_jobs=$at_max_jobs +fi + +# If parallel mode, don't output banners, don't split summary lines. +if test $at_jobs -ne 1; then + at_print_banners=false + at_quiet=: +fi + +# Set up helper dirs. +rm -rf "$at_helper_dir" && +mkdir "$at_helper_dir" && +cd "$at_helper_dir" && +{ test -z "$at_groups" || mkdir $at_groups; } || +as_fn_error $? "testsuite directory setup failed" "$LINENO" 5 + +# Functions for running a test group. We leave the actual +# test group execution outside of a shell function in order +# to avoid hitting zsh 4.x exit status bugs. + +# at_fn_group_prepare +# ------------------- +# Prepare for running a test group. +at_fn_group_prepare () +{ + # The directory for additional per-group helper files. + at_job_dir=$at_helper_dir/$at_group + # The file containing the location of the last AT_CHECK. + at_check_line_file=$at_job_dir/check-line + # The file containing the exit status of the last command. + at_status_file=$at_job_dir/status + # The files containing the output of the tested commands. + at_stdout=$at_job_dir/stdout + at_stder1=$at_job_dir/stder1 + at_stderr=$at_job_dir/stderr + # The file containing the code for a test group. + at_test_source=$at_job_dir/test-source + # The file containing dates. + at_times_file=$at_job_dir/times + + # Be sure to come back to the top test directory. + cd "$at_suite_dir" + + # Clearly separate the test groups when verbose. + $at_first || $at_verbose echo + + at_group_normalized=$at_group + + eval 'while :; do + case $at_group_normalized in #( + '"$at_format"'*) break;; + esac + at_group_normalized=0$at_group_normalized + done' + + + # Create a fresh directory for the next test group, and enter. + # If one already exists, the user may have invoked ./run from + # within that directory; we remove the contents, but not the + # directory itself, so that we aren't pulling the rug out from + # under the shell's notion of the current directory. + at_group_dir=$at_suite_dir/$at_group_normalized + at_group_log=$at_group_dir/$as_me.log + if test -d "$at_group_dir" +then + find "$at_group_dir" -type d ! -perm -700 -exec chmod u+rwx {} \; + rm -fr "$at_group_dir"/* "$at_group_dir"/.[!.] "$at_group_dir"/.??* +fi || + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: test directory for $at_group_normalized could not be cleaned" >&5 +printf "%s\n" "$as_me: WARNING: test directory for $at_group_normalized could not be cleaned" >&2;} + # Be tolerant if the above `rm' was not able to remove the directory. + as_dir="$at_group_dir"; as_fn_mkdir_p + + echo 0 > "$at_status_file" + + # In verbose mode, append to the log file *and* show on + # the standard output; in quiet mode only write to the log. + if test -z "$at_verbose"; then + at_tee_pipe='tee -a "$at_group_log"' + else + at_tee_pipe='cat >> "$at_group_log"' + fi +} + +# at_fn_group_banner ORDINAL LINE DESC PAD [BANNER] +# ------------------------------------------------- +# Declare the test group ORDINAL, located at LINE with group description DESC, +# and residing under BANNER. Use PAD to align the status column. +at_fn_group_banner () +{ + at_setup_line="$2" + test -n "$5" && at_fn_banner $5 + at_desc="$3" + case $1 in + [0-9]) at_desc_line=" $1: ";; + [0-9][0-9]) at_desc_line=" $1: " ;; + *) at_desc_line="$1: " ;; + esac + as_fn_append at_desc_line "$3$4" + $at_quiet printf %s "$at_desc_line" + echo "# -*- compilation -*-" >> "$at_group_log" +} + +# at_fn_group_postprocess +# ----------------------- +# Perform cleanup after running a test group. +at_fn_group_postprocess () +{ + # Be sure to come back to the suite directory, in particular + # since below we might `rm' the group directory we are in currently. + cd "$at_suite_dir" + + if test ! -f "$at_check_line_file"; then + sed "s/^ */$as_me: WARNING: /" <<_ATEOF + A failure happened in a test group before any test could be + run. This means that test suite is improperly designed. Please + report this failure to . +_ATEOF + printf "%s\n" "$at_setup_line" >"$at_check_line_file" + at_status=99 + fi + $at_verbose printf %s "$at_group. $at_setup_line: " + printf %s "$at_group. $at_setup_line: " >> "$at_group_log" + case $at_xfail:$at_status in + yes:0) + at_msg="UNEXPECTED PASS" + at_res=xpass + at_errexit=$at_errexit_p + at_color=$at_red + ;; + no:0) + at_msg="ok" + at_res=pass + at_errexit=false + at_color=$at_grn + ;; + *:77) + at_msg='skipped ('`cat "$at_check_line_file"`')' + at_res=skip + at_errexit=false + at_color=$at_blu + ;; + no:* | *:99) + at_msg='FAILED ('`cat "$at_check_line_file"`')' + at_res=fail + at_errexit=$at_errexit_p + at_color=$at_red + ;; + yes:*) + at_msg='expected failure ('`cat "$at_check_line_file"`')' + at_res=xfail + at_errexit=false + at_color=$at_lgn + ;; + esac + echo "$at_res" > "$at_job_dir/$at_res" + # In parallel mode, output the summary line only afterwards. + if test $at_jobs -ne 1 && test -n "$at_verbose"; then + printf "%s\n" "$at_desc_line $at_color$at_msg$at_std" + else + # Make sure there is a separator even with long titles. + printf "%s\n" " $at_color$at_msg$at_std" + fi + at_log_msg="$at_group. $at_desc ($at_setup_line): $at_msg" + case $at_status in + 0|77) + # $at_times_file is only available if the group succeeded. + # We're not including the group log, so the success message + # is written in the global log separately. But we also + # write to the group log in case they're using -d. + if test -f "$at_times_file"; then + at_log_msg="$at_log_msg ("`sed 1d "$at_times_file"`')' + rm -f "$at_times_file" + fi + printf "%s\n" "$at_log_msg" >> "$at_group_log" + printf "%s\n" "$at_log_msg" >&5 + + # Cleanup the group directory, unless the user wants the files + # or the success was unexpected. + if $at_debug_p || test $at_res = xpass; then + at_fn_create_debugging_script + if test $at_res = xpass && $at_errexit; then + echo stop > "$at_stop_file" + fi + else + if test -d "$at_group_dir"; then + find "$at_group_dir" -type d ! -perm -700 -exec chmod u+rwx \{\} \; + rm -fr "$at_group_dir" + fi + rm -f "$at_test_source" + fi + ;; + *) + # Upon failure, include the log into the testsuite's global + # log. The failure message is written in the group log. It + # is later included in the global log. + printf "%s\n" "$at_log_msg" >> "$at_group_log" + + # Upon failure, keep the group directory for autopsy, and create + # the debugging script. With -e, do not start any further tests. + at_fn_create_debugging_script + if $at_errexit; then + echo stop > "$at_stop_file" + fi + ;; + esac +} + + +## ------------ ## +## Driver loop. ## +## ------------ ## + + +if (set -m && set +m && set +b) >/dev/null 2>&1; then + set +b + at_job_control_on='set -m' at_job_control_off='set +m' at_job_group=- +else + at_job_control_on=: at_job_control_off=: at_job_group= +fi + +for at_signal in 1 2 15; do + trap 'set +x; set +e + $at_job_control_off + at_signal='"$at_signal"' + echo stop > "$at_stop_file" + trap "" $at_signal + at_pgids= + for at_pgid in `jobs -p 2>/dev/null`; do + at_pgids="$at_pgids $at_job_group$at_pgid" + done + test -z "$at_pgids" || kill -$at_signal $at_pgids 2>/dev/null + wait + if test "$at_jobs" -eq 1 || test -z "$at_verbose"; then + echo >&2 + fi + at_signame=`kill -l $at_signal 2>&1 || echo $at_signal` + set x $at_signame + test 1 -gt 2 && at_signame=$at_signal + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: caught signal $at_signame, bailing out" >&5 +printf "%s\n" "$as_me: WARNING: caught signal $at_signame, bailing out" >&2;} + as_fn_arith 128 + $at_signal && exit_status=$as_val + as_fn_exit $exit_status' $at_signal +done + +rm -f "$at_stop_file" +at_first=: + +if test $at_jobs -ne 1 && + rm -f "$at_job_fifo" && + test -n "$at_job_group" && + ( mkfifo "$at_job_fifo" && trap 'exit 1' PIPE STOP TSTP ) 2>/dev/null +then + # FIFO job dispatcher. + + trap 'at_pids= + for at_pid in `jobs -p`; do + at_pids="$at_pids $at_job_group$at_pid" + done + if test -n "$at_pids"; then + at_sig=TSTP + test ${TMOUT+y} && at_sig=STOP + kill -$at_sig $at_pids 2>/dev/null + fi + kill -STOP $$ + test -z "$at_pids" || kill -CONT $at_pids 2>/dev/null' TSTP + + echo + # Turn jobs into a list of numbers, starting from 1. + at_joblist=`printf "%s\n" "$at_groups" | sed -n 1,${at_jobs}p` + + set X $at_joblist + shift + for at_group in $at_groups; do + $at_job_control_on 2>/dev/null + ( + # Start one test group. + $at_job_control_off + if $at_first; then + exec 7>"$at_job_fifo" + else + exec 6<&- + fi + trap 'set +x; set +e + trap "" PIPE + echo stop > "$at_stop_file" + echo >&7 + as_fn_exit 141' PIPE + at_fn_group_prepare + if cd "$at_group_dir" && + at_fn_test $at_group && + . "$at_test_source" + then :; else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: unable to parse test group: $at_group" >&5 +printf "%s\n" "$as_me: WARNING: unable to parse test group: $at_group" >&2;} + at_failed=: + fi + at_fn_group_postprocess + echo >&7 + ) & + $at_job_control_off + if $at_first; then + at_first=false + exec 6<"$at_job_fifo" 7>"$at_job_fifo" + fi + shift # Consume one token. + if test $# -gt 0; then :; else + read at_token <&6 || break + set x $* + fi + test -f "$at_stop_file" && break + done + exec 7>&- + # Read back the remaining ($at_jobs - 1) tokens. + set X $at_joblist + shift + if test $# -gt 0; then + shift + for at_job + do + read at_token + done <&6 + fi + exec 6<&- + wait +else + # Run serially, avoid forks and other potential surprises. + for at_group in $at_groups; do + at_fn_group_prepare + if cd "$at_group_dir" && + at_fn_test $at_group && + . "$at_test_source"; then :; else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: unable to parse test group: $at_group" >&5 +printf "%s\n" "$as_me: WARNING: unable to parse test group: $at_group" >&2;} + at_failed=: + fi + at_fn_group_postprocess + test -f "$at_stop_file" && break + at_first=false + done +fi + +# Wrap up the test suite with summary statistics. +cd "$at_helper_dir" + +# Use ?..???? when the list must remain sorted, the faster * otherwise. +at_pass_list=`for f in */pass; do echo $f; done | sed '/\*/d; s,/pass,,'` +at_skip_list=`for f in */skip; do echo $f; done | sed '/\*/d; s,/skip,,'` +at_xfail_list=`for f in */xfail; do echo $f; done | sed '/\*/d; s,/xfail,,'` +at_xpass_list=`for f in ?/xpass ??/xpass ???/xpass ????/xpass; do + echo $f; done | sed '/?/d; s,/xpass,,'` +at_fail_list=`for f in ?/fail ??/fail ???/fail ????/fail; do + echo $f; done | sed '/?/d; s,/fail,,'` + +set X $at_pass_list $at_xpass_list $at_xfail_list $at_fail_list $at_skip_list +shift; at_group_count=$# +set X $at_xpass_list; shift; at_xpass_count=$#; at_xpass_list=$* +set X $at_xfail_list; shift; at_xfail_count=$# +set X $at_fail_list; shift; at_fail_count=$#; at_fail_list=$* +set X $at_skip_list; shift; at_skip_count=$# + +as_fn_arith $at_group_count - $at_skip_count && at_run_count=$as_val +as_fn_arith $at_xpass_count + $at_fail_count && at_unexpected_count=$as_val +as_fn_arith $at_xfail_count + $at_fail_count && at_total_fail_count=$as_val + +# Back to the top directory. +cd "$at_dir" +rm -rf "$at_helper_dir" + +# Compute the duration of the suite. +at_stop_date=`date` +at_stop_time=`date +%s 2>/dev/null` +printf "%s\n" "$as_me: ending at: $at_stop_date" >&5 +case $at_start_time,$at_stop_time in + [0-9]*,[0-9]*) + as_fn_arith $at_stop_time - $at_start_time && at_duration_s=$as_val + as_fn_arith $at_duration_s / 60 && at_duration_m=$as_val + as_fn_arith $at_duration_m / 60 && at_duration_h=$as_val + as_fn_arith $at_duration_s % 60 && at_duration_s=$as_val + as_fn_arith $at_duration_m % 60 && at_duration_m=$as_val + at_duration="${at_duration_h}h ${at_duration_m}m ${at_duration_s}s" + printf "%s\n" "$as_me: test suite duration: $at_duration" >&5 + ;; +esac + +echo +printf "%s\n" "## ------------- ## +## Test results. ## +## ------------- ##" +echo +{ + echo + printf "%s\n" "## ------------- ## +## Test results. ## +## ------------- ##" + echo +} >&5 + +if test $at_run_count = 1; then + at_result="1 test" + at_were=was +else + at_result="$at_run_count tests" + at_were=were +fi +if $at_errexit_p && test $at_unexpected_count != 0; then + if test $at_xpass_count = 1; then + at_result="$at_result $at_were run, one passed" + else + at_result="$at_result $at_were run, one failed" + fi + at_result="$at_result unexpectedly and inhibited subsequent tests." + at_color=$at_red +else + # Don't you just love exponential explosion of the number of cases? + at_color=$at_red + case $at_xpass_count:$at_fail_count:$at_xfail_count in + # So far, so good. + 0:0:0) at_result="$at_result $at_were successful." at_color=$at_grn ;; + 0:0:*) at_result="$at_result behaved as expected." at_color=$at_lgn ;; + + # Some unexpected failures + 0:*:0) at_result="$at_result $at_were run, +$at_fail_count failed unexpectedly." ;; + + # Some failures, both expected and unexpected + 0:*:1) at_result="$at_result $at_were run, +$at_total_fail_count failed ($at_xfail_count expected failure)." ;; + 0:*:*) at_result="$at_result $at_were run, +$at_total_fail_count failed ($at_xfail_count expected failures)." ;; + + # No unexpected failures, but some xpasses + *:0:*) at_result="$at_result $at_were run, +$at_xpass_count passed unexpectedly." ;; + + # No expected failures, but failures and xpasses + *:1:0) at_result="$at_result $at_were run, +$at_unexpected_count did not behave as expected ($at_fail_count unexpected failure)." ;; + *:*:0) at_result="$at_result $at_were run, +$at_unexpected_count did not behave as expected ($at_fail_count unexpected failures)." ;; + + # All of them. + *:*:1) at_result="$at_result $at_were run, +$at_xpass_count passed unexpectedly, +$at_total_fail_count failed ($at_xfail_count expected failure)." ;; + *:*:*) at_result="$at_result $at_were run, +$at_xpass_count passed unexpectedly, +$at_total_fail_count failed ($at_xfail_count expected failures)." ;; + esac + + if test $at_skip_count = 0 && test $at_run_count -gt 1; then + at_result="All $at_result" + fi +fi + +# Now put skips in the mix. +case $at_skip_count in + 0) ;; + 1) at_result="$at_result +1 test was skipped." ;; + *) at_result="$at_result +$at_skip_count tests were skipped." ;; +esac + +if test $at_unexpected_count = 0; then + echo "$at_color$at_result$at_std" + echo "$at_result" >&5 +else + echo "${at_color}ERROR: $at_result$at_std" >&2 + echo "ERROR: $at_result" >&5 + { + echo + printf "%s\n" "## ------------------------ ## +## Summary of the failures. ## +## ------------------------ ##" + + # Summary of failed and skipped tests. + if test $at_fail_count != 0; then + echo "Failed tests:" + $SHELL "$at_myself" $at_fail_list --list + echo + fi + if test $at_skip_count != 0; then + echo "Skipped tests:" + $SHELL "$at_myself" $at_skip_list --list + echo + fi + if test $at_xpass_count != 0; then + echo "Unexpected passes:" + $SHELL "$at_myself" $at_xpass_list --list + echo + fi + if test $at_fail_count != 0; then + printf "%s\n" "## ---------------------- ## +## Detailed failed tests. ## +## ---------------------- ##" + echo + for at_group in $at_fail_list + do + at_group_normalized=$at_group + + eval 'while :; do + case $at_group_normalized in #( + '"$at_format"'*) break;; + esac + at_group_normalized=0$at_group_normalized + done' + + cat "$at_suite_dir/$at_group_normalized/$as_me.log" + echo + done + echo + fi + if test -n "$at_top_srcdir"; then + sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX +## ${at_top_build_prefix}config.log ## +_ASBOX + sed 's/^/| /' ${at_top_build_prefix}config.log + echo + fi + } >&5 + + sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX +## $as_me.log was created. ## +_ASBOX + + echo + if $at_debug_p; then + at_msg='per-test log files' + else + at_msg="\`${at_testdir+${at_testdir}/}$as_me.log'" + fi + at_msg1a=${at_xpass_list:+', '} + at_msg1=$at_fail_list${at_fail_list:+" failed$at_msg1a"} + at_msg2=$at_xpass_list${at_xpass_list:+" passed unexpectedly"} + + printf "%s\n" "Please send $at_msg and all information you think might help: + + To: + Subject: [dpkg 1.21.22] $as_me: $at_msg1$at_msg2 + +You may investigate any problem if you feel able to do so, in which +case the test suite provides a good starting point. Its output may +be found below \`${at_testdir+${at_testdir}/}$as_me.dir'. +" + exit 1 +fi + +exit 0 + +## ------------- ## +## Actual tests. ## +## ------------- ## +#AT_START_1 +at_fn_group_banner 1 'deb-format.at:1' \ + "dpkg-deb options" " " 1 +at_xfail=no +( + printf "%s\n" "1. $at_setup_line: testing $at_desc ..." + $at_traceon + + + +{ set +x +printf "%s\n" "$at_srcdir/deb-format.at:4: dpkg-deb --version" +at_fn_check_prepare_trace "deb-format.at:4" +( $at_check_trace; dpkg-deb --version +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/deb-format.at:4" +$at_failed && at_fn_log_failure +$at_traceon; } + +{ set +x +printf "%s\n" "$at_srcdir/deb-format.at:5: dpkg-deb --help" +at_fn_check_prepare_trace "deb-format.at:5" +( $at_check_trace; dpkg-deb --help +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/deb-format.at:5" +$at_failed && at_fn_log_failure +$at_traceon; } + + + set +x + $at_times_p && times >"$at_times_file" +) 5>&1 2>&1 7>&- | eval $at_tee_pipe +read at_status <"$at_status_file" +#AT_STOP_1 +#AT_START_2 +at_fn_group_banner 2 'deb-format.at:10' \ + "dpkg-deb .deb format 0.93x" " " 1 +at_xfail=no +( + printf "%s\n" "2. $at_setup_line: testing $at_desc ..." + $at_traceon + + + +printf "%s\n" "deb-format.at:13" >"$at_check_line_file" +(! command -v gzip >/dev/null) \ + && at_fn_check_skip 77 "$at_srcdir/deb-format.at:13" + +cat >pkg-deb-old-bogus-only-version.deb <<'_ATEOF' +0.93 +_ATEOF + +{ set +x +printf "%s\n" "$at_srcdir/deb-format.at:17: +# Check truncated old deb w/ only version magic +dpkg-deb --info pkg-deb-old-bogus-only-version.deb +" +at_fn_check_prepare_notrace 'an embedded newline' "deb-format.at:17" +( $at_check_trace; +# Check truncated old deb w/ only version magic +dpkg-deb --info pkg-deb-old-bogus-only-version.deb + +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "dpkg-deb: error: unexpected end of file in archive control member size in pkg-deb-old-bogus-only-version.deb +" | \ + $at_diff - "$at_stderr" || at_failed=: +at_fn_diff_devnull "$at_stdout" || at_failed=: +at_fn_check_status 2 $at_status "$at_srcdir/deb-format.at:17" +$at_failed && at_fn_log_failure +$at_traceon; } + + + + + mkdir -p 'pkg-deb-old-format/DEBIAN' + + cat >'pkg-deb-old-format/DEBIAN/control' < +Architecture: all +Description: test package +CTRL_TEMPL + + + + $SED -e 's/^Description:.*$/& - deb old format support/' <'pkg-deb-old-format/DEBIAN/control' >'pkg-deb-old-format/DEBIAN/control.new' + mv 'pkg-deb-old-format/DEBIAN/control.new' 'pkg-deb-old-format/DEBIAN/control' + +cat >pkg-deb-old-format/file-templ <<'_ATEOF' +test +_ATEOF + +{ set +x +printf "%s\n" "$at_srcdir/deb-format.at:28: +# Initialize the template package +mv pkg-deb-old-format pkg-old-templ +cp \$top_srcdir/ChangeLog.old pkg-old-templ/ +chmod 0644 pkg-old-templ/ChangeLog.old +chmod -R u+w pkg-old-templ +find pkg-old-templ | xargs touch -t 197001010100.00 +dpkg-deb --deb-format=0.939000 --root-owner-group -Zgzip -b pkg-old-templ >/dev/null + +dpkg-deb --fsys-tarfile pkg-old-templ.deb >fsys.tar +gzip -n fsys.tar + +# Create deb-old 0.939 +cp pkg-old-templ.deb pkg-old.deb + +# Create deb-old-old-old 0.931 +mkdir -p pkg-old-0931-templ/.DEBIAN +cp pkg-old-templ/DEBIAN/* pkg-old-0931-templ/.DEBIAN/ +find pkg-old-0931-templ | xargs touch -t 197001010100.00 +tar czf ctrl-0931.tar.gz --format=gnu --mtime @0 --clamp-mtime --owner root:0 --group root:0 -C pkg-old-0931-templ .DEBIAN + +echo '0.931000' >pkg-old-0931.deb + + \$PERL -E 'say -s shift' \"ctrl-0931.tar.gz\" >>pkg-old-0931.deb +cat ctrl-0931.tar.gz >>pkg-old-0931.deb +cat fsys.tar.gz >>pkg-old-0931.deb + +# Create deb-old-old template +mkdir -p pkg-old-0932-templ/DEBIAN +cp pkg-old-templ/DEBIAN/* pkg-old-0932-templ/DEBIAN/ +find pkg-old-0932-templ | xargs touch -t 197001010100.00 +tar czf ctrl-0932.tar.gz --format=gnu --mtime @0 --clamp-mtime --owner root:0 --group root:0 -C pkg-old-0932-templ DEBIAN + +# Create deb-old-old 0.932 +echo '0.932000' >pkg-old-0932.deb + + \$PERL -E 'say -s shift' \"ctrl-0932.tar.gz\" >>pkg-old-0932.deb +cat ctrl-0932.tar.gz >>pkg-old-0932.deb +cat fsys.tar.gz >>pkg-old-0932.deb + +# Create deb-old-old 0.933 +echo '0.933000' >pkg-old-0933.deb + + \$PERL -E 'say -s shift' \"ctrl-0932.tar.gz\" >>pkg-old-0933.deb +cat ctrl-0932.tar.gz >>pkg-old-0933.deb +cat fsys.tar.gz >>pkg-old-0933.deb +" +at_fn_check_prepare_notrace 'an embedded newline' "deb-format.at:28" +( $at_check_trace; +# Initialize the template package +mv pkg-deb-old-format pkg-old-templ +cp $top_srcdir/ChangeLog.old pkg-old-templ/ +chmod 0644 pkg-old-templ/ChangeLog.old +chmod -R u+w pkg-old-templ +find pkg-old-templ | xargs touch -t 197001010100.00 +dpkg-deb --deb-format=0.939000 --root-owner-group -Zgzip -b pkg-old-templ >/dev/null + +dpkg-deb --fsys-tarfile pkg-old-templ.deb >fsys.tar +gzip -n fsys.tar + +# Create deb-old 0.939 +cp pkg-old-templ.deb pkg-old.deb + +# Create deb-old-old-old 0.931 +mkdir -p pkg-old-0931-templ/.DEBIAN +cp pkg-old-templ/DEBIAN/* pkg-old-0931-templ/.DEBIAN/ +find pkg-old-0931-templ | xargs touch -t 197001010100.00 +tar czf ctrl-0931.tar.gz --format=gnu --mtime @0 --clamp-mtime --owner root:0 --group root:0 -C pkg-old-0931-templ .DEBIAN + +echo '0.931000' >pkg-old-0931.deb + + $PERL -E 'say -s shift' "ctrl-0931.tar.gz" >>pkg-old-0931.deb +cat ctrl-0931.tar.gz >>pkg-old-0931.deb +cat fsys.tar.gz >>pkg-old-0931.deb + +# Create deb-old-old template +mkdir -p pkg-old-0932-templ/DEBIAN +cp pkg-old-templ/DEBIAN/* pkg-old-0932-templ/DEBIAN/ +find pkg-old-0932-templ | xargs touch -t 197001010100.00 +tar czf ctrl-0932.tar.gz --format=gnu --mtime @0 --clamp-mtime --owner root:0 --group root:0 -C pkg-old-0932-templ DEBIAN + +# Create deb-old-old 0.932 +echo '0.932000' >pkg-old-0932.deb + + $PERL -E 'say -s shift' "ctrl-0932.tar.gz" >>pkg-old-0932.deb +cat ctrl-0932.tar.gz >>pkg-old-0932.deb +cat fsys.tar.gz >>pkg-old-0932.deb + +# Create deb-old-old 0.933 +echo '0.933000' >pkg-old-0933.deb + + $PERL -E 'say -s shift' "ctrl-0932.tar.gz" >>pkg-old-0933.deb +cat ctrl-0932.tar.gz >>pkg-old-0933.deb +cat fsys.tar.gz >>pkg-old-0933.deb + +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +at_fn_diff_devnull "$at_stdout" || at_failed=: +at_fn_check_status 0 $at_status "$at_srcdir/deb-format.at:28" +$at_failed && at_fn_log_failure +$at_traceon; } + + +{ set +x +printf "%s\n" "$at_srcdir/deb-format.at:73: +# Check old package metadata +dpkg-deb -I pkg-old.deb | \$SED -e 's/ *\$//' +" +at_fn_check_prepare_notrace 'an embedded newline' "deb-format.at:73" +( $at_check_trace; +# Check old package metadata +dpkg-deb -I pkg-old.deb | $SED -e 's/ *$//' + +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +echo >>"$at_stdout"; printf "%s\n" " old Debian package, version 0.939000. + size 174621 bytes: control archive=274, main archive=174334. + 201 bytes, 7 lines control + Package: pkg-deb-old-format + Version: 0.0-1 + Section: test + Priority: extra + Maintainer: Dpkg Developers + Architecture: all + Description: test package - deb old format support +" | \ + $at_diff - "$at_stdout" || at_failed=: +at_fn_check_status 0 $at_status "$at_srcdir/deb-format.at:73" +$at_failed && at_fn_log_failure +$at_traceon; } + + +{ set +x +printf "%s\n" "$at_srcdir/deb-format.at:88: +# Check old package metadata +dpkg-deb -I pkg-old-0931.deb | \$SED -e 's/ *\$//' +" +at_fn_check_prepare_notrace 'an embedded newline' "deb-format.at:88" +( $at_check_trace; +# Check old package metadata +dpkg-deb -I pkg-old-0931.deb | $SED -e 's/ *$//' + +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +echo >>"$at_stdout"; printf "%s\n" " old Debian package, version 0.931000. + size 175522 bytes: control archive=291, main archive=175218. + 201 bytes, 7 lines control + Package: pkg-deb-old-format + Version: 0.0-1 + Section: test + Priority: extra + Maintainer: Dpkg Developers + Architecture: all + Description: test package - deb old format support +" | \ + $at_diff - "$at_stdout" || at_failed=: +at_fn_check_status 0 $at_status "$at_srcdir/deb-format.at:88" +$at_failed && at_fn_log_failure +$at_traceon; } + + +{ set +x +printf "%s\n" "$at_srcdir/deb-format.at:103: +# Check old package metadata +dpkg-deb -I pkg-old-0932.deb | \$SED -e 's/ *\$//' +" +at_fn_check_prepare_notrace 'an embedded newline' "deb-format.at:103" +( $at_check_trace; +# Check old package metadata +dpkg-deb -I pkg-old-0932.deb | $SED -e 's/ *$//' + +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +echo >>"$at_stdout"; printf "%s\n" " old Debian package, version 0.932000. + size 175522 bytes: control archive=291, main archive=175218. + 201 bytes, 7 lines control + Package: pkg-deb-old-format + Version: 0.0-1 + Section: test + Priority: extra + Maintainer: Dpkg Developers + Architecture: all + Description: test package - deb old format support +" | \ + $at_diff - "$at_stdout" || at_failed=: +at_fn_check_status 0 $at_status "$at_srcdir/deb-format.at:103" +$at_failed && at_fn_log_failure +$at_traceon; } + + +{ set +x +printf "%s\n" "$at_srcdir/deb-format.at:118: +# Check old package metadata +dpkg-deb -I pkg-old-0933.deb | \$SED -e 's/ *\$//' +" +at_fn_check_prepare_notrace 'an embedded newline' "deb-format.at:118" +( $at_check_trace; +# Check old package metadata +dpkg-deb -I pkg-old-0933.deb | $SED -e 's/ *$//' + +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +echo >>"$at_stdout"; printf "%s\n" " old Debian package, version 0.933000. + size 175522 bytes: control archive=291, main archive=175218. + 201 bytes, 7 lines control + Package: pkg-deb-old-format + Version: 0.0-1 + Section: test + Priority: extra + Maintainer: Dpkg Developers + Architecture: all + Description: test package - deb old format support +" | \ + $at_diff - "$at_stdout" || at_failed=: +at_fn_check_status 0 $at_status "$at_srcdir/deb-format.at:118" +$at_failed && at_fn_log_failure +$at_traceon; } + + +{ set +x +printf "%s\n" "$at_srcdir/deb-format.at:133: +# Check old package contents +dpkg-deb -c pkg-old.deb +" +at_fn_check_prepare_notrace 'an embedded newline' "deb-format.at:133" +( $at_check_trace; +# Check old package contents +dpkg-deb -c pkg-old.deb + +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +echo >>"$at_stdout"; printf "%s\n" "drwxr-xr-x root/root 0 1970-01-01 00:00 ./ +-rw-r--r-- root/root 641345 1970-01-01 00:00 ./ChangeLog.old +-rw-r--r-- root/root 5 1970-01-01 00:00 ./file-templ +" | \ + $at_diff - "$at_stdout" || at_failed=: +at_fn_check_status 0 $at_status "$at_srcdir/deb-format.at:133" +$at_failed && at_fn_log_failure +$at_traceon; } + + +{ set +x +printf "%s\n" "$at_srcdir/deb-format.at:141: +# Check old package contents +dpkg-deb -c pkg-old-0931.deb +" +at_fn_check_prepare_notrace 'an embedded newline' "deb-format.at:141" +( $at_check_trace; +# Check old package contents +dpkg-deb -c pkg-old-0931.deb + +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +echo >>"$at_stdout"; printf "%s\n" "drwxr-xr-x root/root 0 1970-01-01 00:00 ./ +-rw-r--r-- root/root 641345 1970-01-01 00:00 ./ChangeLog.old +-rw-r--r-- root/root 5 1970-01-01 00:00 ./file-templ +" | \ + $at_diff - "$at_stdout" || at_failed=: +at_fn_check_status 0 $at_status "$at_srcdir/deb-format.at:141" +$at_failed && at_fn_log_failure +$at_traceon; } + + +{ set +x +printf "%s\n" "$at_srcdir/deb-format.at:149: +# Check old package contents +dpkg-deb -c pkg-old-0932.deb +" +at_fn_check_prepare_notrace 'an embedded newline' "deb-format.at:149" +( $at_check_trace; +# Check old package contents +dpkg-deb -c pkg-old-0932.deb + +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +echo >>"$at_stdout"; printf "%s\n" "drwxr-xr-x root/root 0 1970-01-01 00:00 ./ +-rw-r--r-- root/root 641345 1970-01-01 00:00 ./ChangeLog.old +-rw-r--r-- root/root 5 1970-01-01 00:00 ./file-templ +" | \ + $at_diff - "$at_stdout" || at_failed=: +at_fn_check_status 0 $at_status "$at_srcdir/deb-format.at:149" +$at_failed && at_fn_log_failure +$at_traceon; } + + +{ set +x +printf "%s\n" "$at_srcdir/deb-format.at:157: +# Check old package contents +dpkg-deb -c pkg-old-0933.deb +" +at_fn_check_prepare_notrace 'an embedded newline' "deb-format.at:157" +( $at_check_trace; +# Check old package contents +dpkg-deb -c pkg-old-0933.deb + +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +echo >>"$at_stdout"; printf "%s\n" "drwxr-xr-x root/root 0 1970-01-01 00:00 ./ +-rw-r--r-- root/root 641345 1970-01-01 00:00 ./ChangeLog.old +-rw-r--r-- root/root 5 1970-01-01 00:00 ./file-templ +" | \ + $at_diff - "$at_stdout" || at_failed=: +at_fn_check_status 0 $at_status "$at_srcdir/deb-format.at:157" +$at_failed && at_fn_log_failure +$at_traceon; } + + + set +x + $at_times_p && times >"$at_times_file" +) 5>&1 2>&1 7>&- | eval $at_tee_pipe +read at_status <"$at_status_file" +#AT_STOP_2 +#AT_START_3 +at_fn_group_banner 3 'deb-format.at:168' \ + "dpkg-deb .deb format 2.x" " " 1 +at_xfail=no +( + printf "%s\n" "3. $at_setup_line: testing $at_desc ..." + $at_traceon + + + +printf "%s\n" "deb-format.at:171" >"$at_check_line_file" +(! command -v xz >/dev/null) \ + && at_fn_check_skip 77 "$at_srcdir/deb-format.at:171" +printf "%s\n" "deb-format.at:172" >"$at_check_line_file" +(! command -v gzip >/dev/null) \ + && at_fn_check_skip 77 "$at_srcdir/deb-format.at:172" +printf "%s\n" "deb-format.at:173" >"$at_check_line_file" +(! command -v zstd >/dev/null) \ + && at_fn_check_skip 77 "$at_srcdir/deb-format.at:173" +printf "%s\n" "deb-format.at:174" >"$at_check_line_file" +(! command -v bzip2 >/dev/null) \ + && at_fn_check_skip 77 "$at_srcdir/deb-format.at:174" +printf "%s\n" "deb-format.at:175" >"$at_check_line_file" +(! command -v lzma >/dev/null) \ + && at_fn_check_skip 77 "$at_srcdir/deb-format.at:175" + +: >pkg-deb-bogus-empty.deb +{ set +x +printf "%s\n" "$at_srcdir/deb-format.at:178: +# Check truncated deb w/ 0 size +dpkg-deb --info pkg-deb-bogus-empty.deb +" +at_fn_check_prepare_notrace 'an embedded newline' "deb-format.at:178" +( $at_check_trace; +# Check truncated deb w/ 0 size +dpkg-deb --info pkg-deb-bogus-empty.deb + +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "dpkg-deb: error: unexpected end of file in archive magic version number in pkg-deb-bogus-empty.deb +" | \ + $at_diff - "$at_stderr" || at_failed=: +at_fn_diff_devnull "$at_stdout" || at_failed=: +at_fn_check_status 2 $at_status "$at_srcdir/deb-format.at:178" +$at_failed && at_fn_log_failure +$at_traceon; } + + + + + mkdir -p 'pkg-deb-format/DEBIAN' + + cat >'pkg-deb-format/DEBIAN/control' < +Architecture: all +Description: test package +CTRL_TEMPL + + + + $SED -e 's/^Description:.*$/& - deb format support/' <'pkg-deb-format/DEBIAN/control' >'pkg-deb-format/DEBIAN/control.new' + mv 'pkg-deb-format/DEBIAN/control.new' 'pkg-deb-format/DEBIAN/control' + +cat >pkg-deb-format/file-templ <<'_ATEOF' +test +_ATEOF + +{ set +x +printf "%s\n" "$at_srcdir/deb-format.at:189: +# Initialize the template package +mv pkg-deb-format pkg-templ +cp \$top_srcdir/ChangeLog.old pkg-templ/ +chmod 0644 pkg-templ/ChangeLog.old +chmod -R u+w pkg-templ +find pkg-templ | xargs touch -t 197001010100.00 +dpkg-deb --uniform-compression --root-owner-group -Znone -b pkg-templ >/dev/null + +# Extract the base members +ar x pkg-templ.deb +gzip -c control.tar >control.tar.gz +gzip -c data.tar >data.tar.gz +xz -c control.tar >control.tar.xz +xz -c data.tar >data.tar.xz +zstd -c control.tar >control.tar.zst +zstd -c data.tar >data.tar.zst +bzip2 -c data.tar >data.tar.bz2 +lzma -c data.tar >data.tar.lzma +touch _ignore +touch unknown +" +at_fn_check_prepare_notrace 'an embedded newline' "deb-format.at:189" +( $at_check_trace; +# Initialize the template package +mv pkg-deb-format pkg-templ +cp $top_srcdir/ChangeLog.old pkg-templ/ +chmod 0644 pkg-templ/ChangeLog.old +chmod -R u+w pkg-templ +find pkg-templ | xargs touch -t 197001010100.00 +dpkg-deb --uniform-compression --root-owner-group -Znone -b pkg-templ >/dev/null + +# Extract the base members +ar x pkg-templ.deb +gzip -c control.tar >control.tar.gz +gzip -c data.tar >data.tar.gz +xz -c control.tar >control.tar.xz +xz -c data.tar >data.tar.xz +zstd -c control.tar >control.tar.zst +zstd -c data.tar >data.tar.zst +bzip2 -c data.tar >data.tar.bz2 +lzma -c data.tar >data.tar.lzma +touch _ignore +touch unknown + +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +at_fn_diff_devnull "$at_stdout" || at_failed=: +at_fn_check_status 0 $at_status "$at_srcdir/deb-format.at:189" +$at_failed && at_fn_log_failure +$at_traceon; } + + +{ set +x +printf "%s\n" "$at_srcdir/deb-format.at:212: +# Test debian-binary with 2.x versions +cp pkg-templ.deb pkg-version-2x.deb +echo 2.999 >debian-binary +ar rc pkg-version-2x.deb debian-binary +ar t pkg-version-2x.deb +ar x pkg-templ.deb debian-binary +# XXX: Ideally we would have no need to strip trailing spaces. +dpkg-deb -I pkg-version-2x.deb | \$SED -e 's/ *\$//' +" +at_fn_check_prepare_notrace 'an embedded newline' "deb-format.at:212" +( $at_check_trace; +# Test debian-binary with 2.x versions +cp pkg-templ.deb pkg-version-2x.deb +echo 2.999 >debian-binary +ar rc pkg-version-2x.deb debian-binary +ar t pkg-version-2x.deb +ar x pkg-templ.deb debian-binary +# XXX: Ideally we would have no need to strip trailing spaces. +dpkg-deb -I pkg-version-2x.deb | $SED -e 's/ *$//' + +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +echo >>"$at_stdout"; printf "%s\n" "debian-binary +control.tar +data.tar + new Debian package, version 2.999. + size 655554 bytes: control archive=10240 bytes. + 193 bytes, 7 lines control + Package: pkg-deb-format + Version: 0.0-1 + Section: test + Priority: extra + Maintainer: Dpkg Developers + Architecture: all + Description: test package - deb format support +" | \ + $at_diff - "$at_stdout" || at_failed=: +at_fn_check_status 0 $at_status "$at_srcdir/deb-format.at:212" +$at_failed && at_fn_log_failure +$at_traceon; } + + +{ set +x +printf "%s\n" "$at_srcdir/deb-format.at:236: +# Test debian-binary with extra lines +cp pkg-templ.deb pkg-magic-extra.deb +echo \"extra line\" >>debian-binary +ar rc pkg-magic-extra.deb debian-binary +ar t pkg-magic-extra.deb +ar x pkg-templ.deb debian-binary +# XXX: Ideally we would have no need to strip trailing spaces. +dpkg-deb -I pkg-magic-extra.deb | \$SED -e 's/ *\$//' +" +at_fn_check_prepare_notrace 'an embedded newline' "deb-format.at:236" +( $at_check_trace; +# Test debian-binary with extra lines +cp pkg-templ.deb pkg-magic-extra.deb +echo "extra line" >>debian-binary +ar rc pkg-magic-extra.deb debian-binary +ar t pkg-magic-extra.deb +ar x pkg-templ.deb debian-binary +# XXX: Ideally we would have no need to strip trailing spaces. +dpkg-deb -I pkg-magic-extra.deb | $SED -e 's/ *$//' + +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +echo >>"$at_stdout"; printf "%s\n" "debian-binary +control.tar +data.tar + new Debian package, version 2.0. + size 655564 bytes: control archive=10240 bytes. + 193 bytes, 7 lines control + Package: pkg-deb-format + Version: 0.0-1 + Section: test + Priority: extra + Maintainer: Dpkg Developers + Architecture: all + Description: test package - deb format support +" | \ + $at_diff - "$at_stdout" || at_failed=: +at_fn_check_status 0 $at_status "$at_srcdir/deb-format.at:236" +$at_failed && at_fn_log_failure +$at_traceon; } + + +{ set +x +printf "%s\n" "$at_srcdir/deb-format.at:260: +# Test missing debian-binary member +cp pkg-templ.deb pkg-missing-magic.deb +ar d pkg-missing-magic.deb debian-binary +ar t pkg-missing-magic.deb +dpkg-deb -I pkg-missing-magic.deb +" +at_fn_check_prepare_notrace 'an embedded newline' "deb-format.at:260" +( $at_check_trace; +# Test missing debian-binary member +cp pkg-templ.deb pkg-missing-magic.deb +ar d pkg-missing-magic.deb debian-binary +ar t pkg-missing-magic.deb +dpkg-deb -I pkg-missing-magic.deb + +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "dpkg-deb: error: file 'pkg-missing-magic.deb' is not a Debian binary archive (try dpkg-split?) +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo >>"$at_stdout"; printf "%s\n" "control.tar +data.tar +" | \ + $at_diff - "$at_stdout" || at_failed=: +at_fn_check_status 2 $at_status "$at_srcdir/deb-format.at:260" +$at_failed && at_fn_log_failure +$at_traceon; } + + +{ set +x +printf "%s\n" "$at_srcdir/deb-format.at:271: +# Test missing control member +cp pkg-templ.deb pkg-missing-control.deb +ar d pkg-missing-control.deb control.tar +ar t pkg-missing-control.deb +dpkg-deb -I pkg-missing-control.deb +" +at_fn_check_prepare_notrace 'an embedded newline' "deb-format.at:271" +( $at_check_trace; +# Test missing control member +cp pkg-templ.deb pkg-missing-control.deb +ar d pkg-missing-control.deb control.tar +ar t pkg-missing-control.deb +dpkg-deb -I pkg-missing-control.deb + +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "dpkg-deb: error: archive 'pkg-missing-control.deb' has premature member 'data.tar' before 'control.tar', giving up +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo >>"$at_stdout"; printf "%s\n" "debian-binary +data.tar +" | \ + $at_diff - "$at_stdout" || at_failed=: +at_fn_check_status 2 $at_status "$at_srcdir/deb-format.at:271" +$at_failed && at_fn_log_failure +$at_traceon; } + + +{ set +x +printf "%s\n" "$at_srcdir/deb-format.at:282: +# Test missing data member +cp pkg-templ.deb pkg-missing-data.deb +ar d pkg-missing-data.deb data.tar +ar t pkg-missing-data.deb +dpkg-deb -c pkg-missing-data.deb +" +at_fn_check_prepare_notrace 'an embedded newline' "deb-format.at:282" +( $at_check_trace; +# Test missing data member +cp pkg-templ.deb pkg-missing-data.deb +ar d pkg-missing-data.deb data.tar +ar t pkg-missing-data.deb +dpkg-deb -c pkg-missing-data.deb + +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "dpkg-deb: error: unexpected end of file in archive member header in pkg-missing-data.deb +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo >>"$at_stdout"; printf "%s\n" "debian-binary +control.tar +" | \ + $at_diff - "$at_stdout" || at_failed=: +at_fn_check_status 2 $at_status "$at_srcdir/deb-format.at:282" +$at_failed && at_fn_log_failure +$at_traceon; } + + +{ set +x +printf "%s\n" "$at_srcdir/deb-format.at:293: +# Test duplicate debian-binary member +cp pkg-templ.deb pkg-duplicate-magic.deb +ar ra debian-binary pkg-duplicate-magic.deb debian-binary debian-binary +ar t pkg-duplicate-magic.deb +dpkg-deb -I pkg-duplicate-magic.deb +" +at_fn_check_prepare_notrace 'an embedded newline' "deb-format.at:293" +( $at_check_trace; +# Test duplicate debian-binary member +cp pkg-templ.deb pkg-duplicate-magic.deb +ar ra debian-binary pkg-duplicate-magic.deb debian-binary debian-binary +ar t pkg-duplicate-magic.deb +dpkg-deb -I pkg-duplicate-magic.deb + +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "dpkg-deb: error: archive 'pkg-duplicate-magic.deb' has premature member 'debian-binary' before 'control.tar', giving up +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo >>"$at_stdout"; printf "%s\n" "debian-binary +debian-binary +control.tar +data.tar +" | \ + $at_diff - "$at_stdout" || at_failed=: +at_fn_check_status 2 $at_status "$at_srcdir/deb-format.at:293" +$at_failed && at_fn_log_failure +$at_traceon; } + + +{ set +x +printf "%s\n" "$at_srcdir/deb-format.at:306: +# Test duplicate control member +cp pkg-templ.deb pkg-duplicate-control.deb +ar ra control.tar pkg-duplicate-control.deb control.tar control.tar +ar t pkg-duplicate-control.deb +dpkg-deb -c pkg-duplicate-control.deb +" +at_fn_check_prepare_notrace 'an embedded newline' "deb-format.at:306" +( $at_check_trace; +# Test duplicate control member +cp pkg-templ.deb pkg-duplicate-control.deb +ar ra control.tar pkg-duplicate-control.deb control.tar control.tar +ar t pkg-duplicate-control.deb +dpkg-deb -c pkg-duplicate-control.deb + +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "dpkg-deb: error: archive 'pkg-duplicate-control.deb' contains two control members, giving up +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo >>"$at_stdout"; printf "%s\n" "debian-binary +control.tar +control.tar +data.tar +" | \ + $at_diff - "$at_stdout" || at_failed=: +at_fn_check_status 2 $at_status "$at_srcdir/deb-format.at:306" +$at_failed && at_fn_log_failure +$at_traceon; } + + +{ set +x +printf "%s\n" "$at_srcdir/deb-format.at:319: +# Test mixed member (index 1) +cp pkg-templ.deb pkg-mixed-1-member.deb +ar ra debian-binary pkg-mixed-1-member.deb unknown +ar t pkg-mixed-1-member.deb +dpkg-deb -I pkg-mixed-1-member.deb +" +at_fn_check_prepare_notrace 'an embedded newline' "deb-format.at:319" +( $at_check_trace; +# Test mixed member (index 1) +cp pkg-templ.deb pkg-mixed-1-member.deb +ar ra debian-binary pkg-mixed-1-member.deb unknown +ar t pkg-mixed-1-member.deb +dpkg-deb -I pkg-mixed-1-member.deb + +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "dpkg-deb: error: archive 'pkg-mixed-1-member.deb' has premature member 'unknown' before 'control.tar', giving up +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo >>"$at_stdout"; printf "%s\n" "debian-binary +unknown +control.tar +data.tar +" | \ + $at_diff - "$at_stdout" || at_failed=: +at_fn_check_status 2 $at_status "$at_srcdir/deb-format.at:319" +$at_failed && at_fn_log_failure +$at_traceon; } + + +{ set +x +printf "%s\n" "$at_srcdir/deb-format.at:332: +# 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 t pkg-mixed-2-member.deb +dpkg-deb -c pkg-mixed-2-member.deb +" +at_fn_check_prepare_notrace 'an embedded newline' "deb-format.at:332" +( $at_check_trace; +# 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 t pkg-mixed-2-member.deb +dpkg-deb -c pkg-mixed-2-member.deb + +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "dpkg-deb: error: archive 'pkg-mixed-2-member.deb' has premature member 'unknown' before 'data.tar', giving up +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo >>"$at_stdout"; printf "%s\n" "debian-binary +control.tar +unknown +data.tar +" | \ + $at_diff - "$at_stdout" || at_failed=: +at_fn_check_status 2 $at_status "$at_srcdir/deb-format.at:332" +$at_failed && at_fn_log_failure +$at_traceon; } + + +{ set +x +printf "%s\n" "$at_srcdir/deb-format.at:345: +# 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 t pkg-swap-members.deb +dpkg-deb -I pkg-swap-members.deb +" +at_fn_check_prepare_notrace 'an embedded newline' "deb-format.at:345" +( $at_check_trace; +# 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 t pkg-swap-members.deb +dpkg-deb -I pkg-swap-members.deb + +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "dpkg-deb: error: archive 'pkg-swap-members.deb' has premature member 'data.tar' before 'control.tar', giving up +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo >>"$at_stdout"; printf "%s\n" "debian-binary +data.tar +control.tar +" | \ + $at_diff - "$at_stdout" || at_failed=: +at_fn_check_status 2 $at_status "$at_srcdir/deb-format.at:345" +$at_failed && at_fn_log_failure +$at_traceon; } + + +{ set +x +printf "%s\n" "$at_srcdir/deb-format.at:357: +# Test extra member +cp pkg-templ.deb pkg-extra-member.deb +ar q pkg-extra-member.deb unknown +ar t pkg-extra-member.deb +# XXX: Ideally we would have no need to strip trailing spaces. +dpkg-deb -I pkg-extra-member.deb | \$SED -e 's/ *\$//' +" +at_fn_check_prepare_notrace 'an embedded newline' "deb-format.at:357" +( $at_check_trace; +# Test extra member +cp pkg-templ.deb pkg-extra-member.deb +ar q pkg-extra-member.deb unknown +ar t pkg-extra-member.deb +# XXX: Ideally we would have no need to strip trailing spaces. +dpkg-deb -I pkg-extra-member.deb | $SED -e 's/ *$//' + +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +echo >>"$at_stdout"; printf "%s\n" "debian-binary +control.tar +data.tar +unknown + new Debian package, version 2.0. + size 655612 bytes: control archive=10240 bytes. + 193 bytes, 7 lines control + Package: pkg-deb-format + Version: 0.0-1 + Section: test + Priority: extra + Maintainer: Dpkg Developers + Architecture: all + Description: test package - deb format support +" | \ + $at_diff - "$at_stdout" || at_failed=: +at_fn_check_status 0 $at_status "$at_srcdir/deb-format.at:357" +$at_failed && at_fn_log_failure +$at_traceon; } + + +{ set +x +printf "%s\n" "$at_srcdir/deb-format.at:380: +# Test _ member +cp pkg-templ.deb pkg-under-member.deb +ar ra debian-binary pkg-under-member.deb _ignore +ar t pkg-under-member.deb +# XXX: Ideally we would have no need to strip trailing spaces. +dpkg-deb -I pkg-under-member.deb | \$SED -e 's/ *\$//' +" +at_fn_check_prepare_notrace 'an embedded newline' "deb-format.at:380" +( $at_check_trace; +# Test _ member +cp pkg-templ.deb pkg-under-member.deb +ar ra debian-binary pkg-under-member.deb _ignore +ar t pkg-under-member.deb +# XXX: Ideally we would have no need to strip trailing spaces. +dpkg-deb -I pkg-under-member.deb | $SED -e 's/ *$//' + +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +echo >>"$at_stdout"; printf "%s\n" "debian-binary +_ignore +control.tar +data.tar + new Debian package, version 2.0. + size 655612 bytes: control archive=10240 bytes. + 193 bytes, 7 lines control + Package: pkg-deb-format + Version: 0.0-1 + Section: test + Priority: extra + Maintainer: Dpkg Developers + Architecture: all + Description: test package - deb format support +" | \ + $at_diff - "$at_stdout" || at_failed=: +at_fn_check_status 0 $at_status "$at_srcdir/deb-format.at:380" +$at_failed && at_fn_log_failure +$at_traceon; } + + +{ set +x +printf "%s\n" "$at_srcdir/deb-format.at:403: +# Test data.tar.bad member +dd if=/dev/zero of=data.tar.bad bs=1K count=4 status=none +ar rc pkg-data-bad.deb debian-binary control.tar.gz data.tar.bad +ar t pkg-data-bad.deb +dpkg-deb -c pkg-data-bad.deb +" +at_fn_check_prepare_notrace 'an embedded newline' "deb-format.at:403" +( $at_check_trace; +# Test data.tar.bad member +dd if=/dev/zero of=data.tar.bad bs=1K count=4 status=none +ar rc pkg-data-bad.deb debian-binary control.tar.gz data.tar.bad +ar t pkg-data-bad.deb +dpkg-deb -c pkg-data-bad.deb + +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "dpkg-deb: error: archive 'pkg-data-bad.deb' uses unknown compression for member 'data.tar.bad', giving up +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo >>"$at_stdout"; printf "%s\n" "debian-binary +control.tar.gz +data.tar.bad +" | \ + $at_diff - "$at_stdout" || at_failed=: +at_fn_check_status 2 $at_status "$at_srcdir/deb-format.at:403" +$at_failed && at_fn_log_failure +$at_traceon; } + + +{ set +x +printf "%s\n" "$at_srcdir/deb-format.at:415: +# Test control.tar member +ar rc pkg-control-none.deb debian-binary control.tar data.tar +ar t pkg-control-none.deb +# XXX: Ideally we would have no need to strip trailing spaces. +dpkg-deb -I pkg-control-none.deb | \$SED -e 's/ *\$//' +" +at_fn_check_prepare_notrace 'an embedded newline' "deb-format.at:415" +( $at_check_trace; +# Test control.tar member +ar rc pkg-control-none.deb debian-binary control.tar data.tar +ar t pkg-control-none.deb +# XXX: Ideally we would have no need to strip trailing spaces. +dpkg-deb -I pkg-control-none.deb | $SED -e 's/ *$//' + +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +echo >>"$at_stdout"; printf "%s\n" "debian-binary +control.tar +data.tar + new Debian package, version 2.0. + size 655552 bytes: control archive=10240 bytes. + 193 bytes, 7 lines control + Package: pkg-deb-format + Version: 0.0-1 + Section: test + Priority: extra + Maintainer: Dpkg Developers + Architecture: all + Description: test package - deb format support +" | \ + $at_diff - "$at_stdout" || at_failed=: +at_fn_check_status 0 $at_status "$at_srcdir/deb-format.at:415" +$at_failed && at_fn_log_failure +$at_traceon; } + + +{ set +x +printf "%s\n" "$at_srcdir/deb-format.at:436: +# Test control.tar.xz member +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 +" +at_fn_check_prepare_notrace 'an embedded newline' "deb-format.at:436" +( $at_check_trace; +# Test control.tar.xz member +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 + +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +echo >>"$at_stdout"; printf "%s\n" "debian-binary +control.tar.xz +data.tar.xz +drwxr-xr-x root/root 0 1970-01-01 00:00 ./ +-rw-r--r-- root/root 641345 1970-01-01 00:00 ./ChangeLog.old +-rw-r--r-- root/root 5 1970-01-01 00:00 ./file-templ +" | \ + $at_diff - "$at_stdout" || at_failed=: +at_fn_check_status 0 $at_status "$at_srcdir/deb-format.at:436" +$at_failed && at_fn_log_failure +$at_traceon; } + + +{ set +x +printf "%s\n" "$at_srcdir/deb-format.at:449: +# Test control.tar.zst member +ar rc pkg-control-zst.deb debian-binary control.tar.zst data.tar.zst +ar t pkg-control-zst.deb +dpkg-deb -c pkg-control-zst.deb +" +at_fn_check_prepare_notrace 'an embedded newline' "deb-format.at:449" +( $at_check_trace; +# Test control.tar.zst member +ar rc pkg-control-zst.deb debian-binary control.tar.zst data.tar.zst +ar t pkg-control-zst.deb +dpkg-deb -c pkg-control-zst.deb + +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +echo >>"$at_stdout"; printf "%s\n" "debian-binary +control.tar.zst +data.tar.zst +drwxr-xr-x root/root 0 1970-01-01 00:00 ./ +-rw-r--r-- root/root 641345 1970-01-01 00:00 ./ChangeLog.old +-rw-r--r-- root/root 5 1970-01-01 00:00 ./file-templ +" | \ + $at_diff - "$at_stdout" || at_failed=: +at_fn_check_status 0 $at_status "$at_srcdir/deb-format.at:449" +$at_failed && at_fn_log_failure +$at_traceon; } + + +{ set +x +printf "%s\n" "$at_srcdir/deb-format.at:462: +# Test data.tar member +ar rc pkg-data-none.deb debian-binary control.tar.gz data.tar +ar t pkg-data-none.deb +dpkg-deb -c pkg-data-none.deb +" +at_fn_check_prepare_notrace 'an embedded newline' "deb-format.at:462" +( $at_check_trace; +# Test data.tar member +ar rc pkg-data-none.deb debian-binary control.tar.gz data.tar +ar t pkg-data-none.deb +dpkg-deb -c pkg-data-none.deb + +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +echo >>"$at_stdout"; printf "%s\n" "debian-binary +control.tar.gz +data.tar +drwxr-xr-x root/root 0 1970-01-01 00:00 ./ +-rw-r--r-- root/root 641345 1970-01-01 00:00 ./ChangeLog.old +-rw-r--r-- root/root 5 1970-01-01 00:00 ./file-templ +" | \ + $at_diff - "$at_stdout" || at_failed=: +at_fn_check_status 0 $at_status "$at_srcdir/deb-format.at:462" +$at_failed && at_fn_log_failure +$at_traceon; } + + +{ set +x +printf "%s\n" "$at_srcdir/deb-format.at:475: +# Test data.tar.gz member +ar rc pkg-data-gz.deb debian-binary control.tar.gz data.tar.gz +ar t pkg-data-gz.deb +dpkg-deb -c pkg-data-gz.deb +" +at_fn_check_prepare_notrace 'an embedded newline' "deb-format.at:475" +( $at_check_trace; +# Test data.tar.gz member +ar rc pkg-data-gz.deb debian-binary control.tar.gz data.tar.gz +ar t pkg-data-gz.deb +dpkg-deb -c pkg-data-gz.deb + +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +echo >>"$at_stdout"; printf "%s\n" "debian-binary +control.tar.gz +data.tar.gz +drwxr-xr-x root/root 0 1970-01-01 00:00 ./ +-rw-r--r-- root/root 641345 1970-01-01 00:00 ./ChangeLog.old +-rw-r--r-- root/root 5 1970-01-01 00:00 ./file-templ +" | \ + $at_diff - "$at_stdout" || at_failed=: +at_fn_check_status 0 $at_status "$at_srcdir/deb-format.at:475" +$at_failed && at_fn_log_failure +$at_traceon; } + + +{ set +x +printf "%s\n" "$at_srcdir/deb-format.at:488: +# Test data.tar.xz member +ar rc pkg-data-xz.deb debian-binary control.tar.gz data.tar.xz +ar t pkg-data-xz.deb +dpkg-deb -c pkg-data-xz.deb +" +at_fn_check_prepare_notrace 'an embedded newline' "deb-format.at:488" +( $at_check_trace; +# Test data.tar.xz member +ar rc pkg-data-xz.deb debian-binary control.tar.gz data.tar.xz +ar t pkg-data-xz.deb +dpkg-deb -c pkg-data-xz.deb + +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +echo >>"$at_stdout"; printf "%s\n" "debian-binary +control.tar.gz +data.tar.xz +drwxr-xr-x root/root 0 1970-01-01 00:00 ./ +-rw-r--r-- root/root 641345 1970-01-01 00:00 ./ChangeLog.old +-rw-r--r-- root/root 5 1970-01-01 00:00 ./file-templ +" | \ + $at_diff - "$at_stdout" || at_failed=: +at_fn_check_status 0 $at_status "$at_srcdir/deb-format.at:488" +$at_failed && at_fn_log_failure +$at_traceon; } + + +{ set +x +printf "%s\n" "$at_srcdir/deb-format.at:501: +# Test data.tar.zst member +ar rc pkg-data-zst.deb debian-binary control.tar.gz data.tar.zst +ar t pkg-data-zst.deb +dpkg-deb -c pkg-data-zst.deb +" +at_fn_check_prepare_notrace 'an embedded newline' "deb-format.at:501" +( $at_check_trace; +# Test data.tar.zst member +ar rc pkg-data-zst.deb debian-binary control.tar.gz data.tar.zst +ar t pkg-data-zst.deb +dpkg-deb -c pkg-data-zst.deb + +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +echo >>"$at_stdout"; printf "%s\n" "debian-binary +control.tar.gz +data.tar.zst +drwxr-xr-x root/root 0 1970-01-01 00:00 ./ +-rw-r--r-- root/root 641345 1970-01-01 00:00 ./ChangeLog.old +-rw-r--r-- root/root 5 1970-01-01 00:00 ./file-templ +" | \ + $at_diff - "$at_stdout" || at_failed=: +at_fn_check_status 0 $at_status "$at_srcdir/deb-format.at:501" +$at_failed && at_fn_log_failure +$at_traceon; } + + +{ set +x +printf "%s\n" "$at_srcdir/deb-format.at:514: +# Test data.tar.bz2 member +ar rc pkg-data-bz2.deb debian-binary control.tar.gz data.tar.bz2 +ar t pkg-data-bz2.deb +dpkg-deb -c pkg-data-bz2.deb +" +at_fn_check_prepare_notrace 'an embedded newline' "deb-format.at:514" +( $at_check_trace; +# Test data.tar.bz2 member +ar rc pkg-data-bz2.deb debian-binary control.tar.gz data.tar.bz2 +ar t pkg-data-bz2.deb +dpkg-deb -c pkg-data-bz2.deb + +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +echo >>"$at_stdout"; printf "%s\n" "debian-binary +control.tar.gz +data.tar.bz2 +drwxr-xr-x root/root 0 1970-01-01 00:00 ./ +-rw-r--r-- root/root 641345 1970-01-01 00:00 ./ChangeLog.old +-rw-r--r-- root/root 5 1970-01-01 00:00 ./file-templ +" | \ + $at_diff - "$at_stdout" || at_failed=: +at_fn_check_status 0 $at_status "$at_srcdir/deb-format.at:514" +$at_failed && at_fn_log_failure +$at_traceon; } + + +{ set +x +printf "%s\n" "$at_srcdir/deb-format.at:527: +# Test data.tar.lzma member +ar rc pkg-data-lzma.deb debian-binary control.tar.gz data.tar.lzma +ar t pkg-data-lzma.deb +dpkg-deb -c pkg-data-lzma.deb +" +at_fn_check_prepare_notrace 'an embedded newline' "deb-format.at:527" +( $at_check_trace; +# Test data.tar.lzma member +ar rc pkg-data-lzma.deb debian-binary control.tar.gz data.tar.lzma +ar t pkg-data-lzma.deb +dpkg-deb -c pkg-data-lzma.deb + +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +echo >>"$at_stdout"; printf "%s\n" "debian-binary +control.tar.gz +data.tar.lzma +drwxr-xr-x root/root 0 1970-01-01 00:00 ./ +-rw-r--r-- root/root 641345 1970-01-01 00:00 ./ChangeLog.old +-rw-r--r-- root/root 5 1970-01-01 00:00 ./file-templ +" | \ + $at_diff - "$at_stdout" || at_failed=: +at_fn_check_status 0 $at_status "$at_srcdir/deb-format.at:527" +$at_failed && at_fn_log_failure +$at_traceon; } + + +{ set +x +printf "%s\n" "$at_srcdir/deb-format.at:540: +# 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 +# XXX: Ideally we would have no need to strip trailing spaces. +dpkg-deb -I pkg-mixed-comp.deb | \$SED -e 's/ *\$//' +dpkg-deb -c pkg-mixed-comp.deb +" +at_fn_check_prepare_notrace 'an embedded newline' "deb-format.at:540" +( $at_check_trace; +# 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 +# XXX: Ideally we would have no need to strip trailing spaces. +dpkg-deb -I pkg-mixed-comp.deb | $SED -e 's/ *$//' +dpkg-deb -c pkg-mixed-comp.deb + +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +echo >>"$at_stdout"; printf "%s\n" "debian-binary +control.tar.xz +data.tar.gz + new Debian package, version 2.0. + size 175756 bytes: control archive=336 bytes. + 193 bytes, 7 lines control + Package: pkg-deb-format + Version: 0.0-1 + Section: test + Priority: extra + Maintainer: Dpkg Developers + Architecture: all + Description: test package - deb format support +drwxr-xr-x root/root 0 1970-01-01 00:00 ./ +-rw-r--r-- root/root 641345 1970-01-01 00:00 ./ChangeLog.old +-rw-r--r-- root/root 5 1970-01-01 00:00 ./file-templ +" | \ + $at_diff - "$at_stdout" || at_failed=: +at_fn_check_status 0 $at_status "$at_srcdir/deb-format.at:540" +$at_failed && at_fn_log_failure +$at_traceon; } + + +{ set +x +printf "%s\n" "$at_srcdir/deb-format.at:565: +# Test building and extracting none compressed archive +dpkg-deb --uniform-compression --root-owner-group -Znone -b pkg-templ pkg-comp-none.deb >/dev/null +dpkg-deb --ctrl-tarfile pkg-comp-none.deb >ctrl-none.tar +dpkg-deb --fsys-tarfile pkg-comp-none.deb >fsys-none.tar +cmp ctrl-none.tar control.tar +cmp fsys-none.tar data.tar +" +at_fn_check_prepare_notrace 'an embedded newline' "deb-format.at:565" +( $at_check_trace; +# Test building and extracting none compressed archive +dpkg-deb --uniform-compression --root-owner-group -Znone -b pkg-templ pkg-comp-none.deb >/dev/null +dpkg-deb --ctrl-tarfile pkg-comp-none.deb >ctrl-none.tar +dpkg-deb --fsys-tarfile pkg-comp-none.deb >fsys-none.tar +cmp ctrl-none.tar control.tar +cmp fsys-none.tar data.tar + +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +at_fn_diff_devnull "$at_stdout" || at_failed=: +at_fn_check_status 0 $at_status "$at_srcdir/deb-format.at:565" +$at_failed && at_fn_log_failure +$at_traceon; } + + +{ set +x +printf "%s\n" "$at_srcdir/deb-format.at:574: +# Test building and extracting gzip compressed archive +dpkg-deb --uniform-compression --root-owner-group -Zgzip -b pkg-templ pkg-comp-gzip.deb >/dev/null +dpkg-deb --ctrl-tarfile pkg-comp-gzip.deb >ctrl-gzip.tar +dpkg-deb --fsys-tarfile pkg-comp-gzip.deb >fsys-gzip.tar +cmp ctrl-gzip.tar control.tar +cmp fsys-gzip.tar data.tar +" +at_fn_check_prepare_notrace 'an embedded newline' "deb-format.at:574" +( $at_check_trace; +# Test building and extracting gzip compressed archive +dpkg-deb --uniform-compression --root-owner-group -Zgzip -b pkg-templ pkg-comp-gzip.deb >/dev/null +dpkg-deb --ctrl-tarfile pkg-comp-gzip.deb >ctrl-gzip.tar +dpkg-deb --fsys-tarfile pkg-comp-gzip.deb >fsys-gzip.tar +cmp ctrl-gzip.tar control.tar +cmp fsys-gzip.tar data.tar + +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +at_fn_diff_devnull "$at_stdout" || at_failed=: +at_fn_check_status 0 $at_status "$at_srcdir/deb-format.at:574" +$at_failed && at_fn_log_failure +$at_traceon; } + + +{ set +x +printf "%s\n" "$at_srcdir/deb-format.at:583: +# Test building and extracting xz compressed archive +dpkg-deb --uniform-compression --root-owner-group -Zxz -b pkg-templ pkg-comp-xz.deb >/dev/null +dpkg-deb --ctrl-tarfile pkg-comp-xz.deb >ctrl-xz.tar +dpkg-deb --fsys-tarfile pkg-comp-xz.deb >fsys-xz.tar +cmp ctrl-xz.tar control.tar +cmp fsys-xz.tar data.tar +" +at_fn_check_prepare_notrace 'an embedded newline' "deb-format.at:583" +( $at_check_trace; +# Test building and extracting xz compressed archive +dpkg-deb --uniform-compression --root-owner-group -Zxz -b pkg-templ pkg-comp-xz.deb >/dev/null +dpkg-deb --ctrl-tarfile pkg-comp-xz.deb >ctrl-xz.tar +dpkg-deb --fsys-tarfile pkg-comp-xz.deb >fsys-xz.tar +cmp ctrl-xz.tar control.tar +cmp fsys-xz.tar data.tar + +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +at_fn_diff_devnull "$at_stdout" || at_failed=: +at_fn_check_status 0 $at_status "$at_srcdir/deb-format.at:583" +$at_failed && at_fn_log_failure +$at_traceon; } + + +{ set +x +printf "%s\n" "$at_srcdir/deb-format.at:592: +# Test building and extracting zstd compressed archive +dpkg-deb --uniform-compression --root-owner-group -Zzstd -b pkg-templ pkg-comp-zstd.deb >/dev/null +dpkg-deb --ctrl-tarfile pkg-comp-zstd.deb >ctrl-zstd.tar +dpkg-deb --fsys-tarfile pkg-comp-zstd.deb >fsys-zstd.tar +cmp ctrl-zstd.tar control.tar +cmp fsys-zstd.tar data.tar +" +at_fn_check_prepare_notrace 'an embedded newline' "deb-format.at:592" +( $at_check_trace; +# Test building and extracting zstd compressed archive +dpkg-deb --uniform-compression --root-owner-group -Zzstd -b pkg-templ pkg-comp-zstd.deb >/dev/null +dpkg-deb --ctrl-tarfile pkg-comp-zstd.deb >ctrl-zstd.tar +dpkg-deb --fsys-tarfile pkg-comp-zstd.deb >fsys-zstd.tar +cmp ctrl-zstd.tar control.tar +cmp fsys-zstd.tar data.tar + +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +at_fn_diff_devnull "$at_stdout" || at_failed=: +at_fn_check_status 0 $at_status "$at_srcdir/deb-format.at:592" +$at_failed && at_fn_log_failure +$at_traceon; } + + + set +x + $at_times_p && times >"$at_times_file" +) 5>&1 2>&1 7>&- | eval $at_tee_pipe +read at_status <"$at_status_file" +#AT_STOP_3 +#AT_START_4 +at_fn_group_banner 4 'deb-content.at:1' \ + "dpkg-deb .deb conffiles" " " 1 +at_xfail=no +( + printf "%s\n" "4. $at_setup_line: testing $at_desc ..." + $at_traceon + + + + + + mkdir -p 'pkg-conff-duped/DEBIAN' + + cat >'pkg-conff-duped/DEBIAN/control' < +Architecture: all +Description: test package +CTRL_TEMPL + + + + mkdir -p 'pkg-conff-duped/DEBIAN' + + cat >'pkg-conff-duped/DEBIAN/conffiles' <pkg-conff-duped/test-conffile-1 <<'_ATEOF' +test init +_ATEOF + +cat >pkg-conff-duped/test-conffile-2 <<'_ATEOF' +test init +_ATEOF + +{ set +x +printf "%s\n" "$at_srcdir/deb-content.at:12: +# Duplicate conffile entries should produce a warning. +dpkg-deb -b pkg-conff-duped +" +at_fn_check_prepare_notrace 'an embedded newline' "deb-content.at:12" +( $at_check_trace; +# Duplicate conffile entries should produce a warning. +dpkg-deb -b pkg-conff-duped + +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "dpkg-deb: warning: conffile name '/test-conffile-1' is duplicated +dpkg-deb: warning: ignoring 1 warning about the control file(s) +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/deb-content.at:12" +$at_failed && at_fn_log_failure +$at_traceon; } + + + + + mkdir -p 'pkg-conff-noeol/DEBIAN' + + cat >'pkg-conff-noeol/DEBIAN/control' < +Architecture: all +Description: test package +CTRL_TEMPL + + +printf "/test-conffile-1" >"pkg-conff-noeol/DEBIAN/conffiles" +cat >pkg-conff-noeol/test-conffile-1 <<'_ATEOF' +test init +_ATEOF + +{ set +x +printf "%s\n" "$at_srcdir/deb-content.at:23: +# Conffiles need a final newline to guarantee there's been no accidental +# file truncation. +dpkg-deb -b pkg-conff-noeol pkg-conff-noeol.deb +" +at_fn_check_prepare_notrace 'an embedded newline' "deb-content.at:23" +( $at_check_trace; +# Conffiles need a final newline to guarantee there's been no accidental +# file truncation. +dpkg-deb -b pkg-conff-noeol pkg-conff-noeol.deb + +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "dpkg-deb: error: conffile name '/test-conffile-1' is too long, or missing final newline +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 2 $at_status "$at_srcdir/deb-content.at:23" +$at_failed && at_fn_log_failure +$at_traceon; } + + + + + mkdir -p 'pkg-conff-noabs/DEBIAN' + + cat >'pkg-conff-noabs/DEBIAN/control' < +Architecture: all +Description: test package +CTRL_TEMPL + + + + mkdir -p 'pkg-conff-noabs/DEBIAN' + + cat >'pkg-conff-noabs/DEBIAN/conffiles' <pkg-conff-noabs/test-conffile-rel <<'_ATEOF' +test init +_ATEOF + +{ set +x +printf "%s\n" "$at_srcdir/deb-content.at:34: +# Conffiles must use absolute pathnames. +dpkg-deb -b pkg-conff-noabs pkg-conff-noabs.deb +" +at_fn_check_prepare_notrace 'an embedded newline' "deb-content.at:34" +( $at_check_trace; +# Conffiles must use absolute pathnames. +dpkg-deb -b pkg-conff-noabs pkg-conff-noabs.deb + +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "dpkg-deb: error: conffile name 'test-conffile-rel' is not an absolute pathname +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 2 $at_status "$at_srcdir/deb-content.at:34" +$at_failed && at_fn_log_failure +$at_traceon; } + + + + + mkdir -p 'pkg-conff-empty/DEBIAN' + + cat >'pkg-conff-empty/DEBIAN/control' < +Architecture: all +Description: test package +CTRL_TEMPL + + +printf " \n" >"pkg-conff-empty/DEBIAN/conffiles" +{ set +x +printf "%s\n" "$at_srcdir/deb-content.at:42: +# Conffiles must not contain empty lines. +dpkg-deb -b pkg-conff-empty pkg-conff-empty.deb +" +at_fn_check_prepare_notrace 'an embedded newline' "deb-content.at:42" +( $at_check_trace; +# Conffiles must not contain empty lines. +dpkg-deb -b pkg-conff-empty pkg-conff-empty.deb + +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "dpkg-deb: error: empty and whitespace-only lines are not allowed in conffiles +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 2 $at_status "$at_srcdir/deb-content.at:42" +$at_failed && at_fn_log_failure +$at_traceon; } + + + + + mkdir -p 'pkg-conff-space-prefix/DEBIAN' + + cat >'pkg-conff-space-prefix/DEBIAN/control' < +Architecture: all +Description: test package +CTRL_TEMPL + + + + mkdir -p 'pkg-conff-space-prefix/DEBIAN' + + cat >'pkg-conff-space-prefix/DEBIAN/conffiles' <>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "dpkg-deb: error: line with conffile filename '/test-conffile' has leading white spaces +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 2 $at_status "$at_srcdir/deb-content.at:50" +$at_failed && at_fn_log_failure +$at_traceon; } + + + + + mkdir -p 'pkg-conff-unknown-flag/DEBIAN' + + cat >'pkg-conff-unknown-flag/DEBIAN/control' < +Architecture: all +Description: test package +CTRL_TEMPL + + + + mkdir -p 'pkg-conff-unknown-flag/DEBIAN' + + cat >'pkg-conff-unknown-flag/DEBIAN/conffiles' <>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "dpkg-deb: error: unknown flag 'unknown-flag' for conffile '/test-conffile' +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 2 $at_status "$at_srcdir/deb-content.at:58" +$at_failed && at_fn_log_failure +$at_traceon; } + + + + + mkdir -p 'pkg-conff-missing-pathname/DEBIAN' + + cat >'pkg-conff-missing-pathname/DEBIAN/control' < +Architecture: all +Description: test package +CTRL_TEMPL + + +printf "unknown-flag \n" >"pkg-conff-missing-pathname/DEBIAN/conffiles" +{ set +x +printf "%s\n" "$at_srcdir/deb-content.at:66: +# Conffiles need a pathname, in addition to a flag. +dpkg-deb -b pkg-conff-missing-pathname pkg-conff-missing-pathname.deb +" +at_fn_check_prepare_notrace 'an embedded newline' "deb-content.at:66" +( $at_check_trace; +# Conffiles need a pathname, in addition to a flag. +dpkg-deb -b pkg-conff-missing-pathname pkg-conff-missing-pathname.deb + +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "dpkg-deb: error: conffile name missing after flag 'unknown-flag' +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 2 $at_status "$at_srcdir/deb-content.at:66" +$at_failed && at_fn_log_failure +$at_traceon; } + + + + + mkdir -p 'pkg-conff-removed-missing/DEBIAN' + + cat >'pkg-conff-removed-missing/DEBIAN/control' < +Architecture: all +Description: test package +CTRL_TEMPL + + + + mkdir -p 'pkg-conff-removed-missing/DEBIAN' + + cat >'pkg-conff-removed-missing/DEBIAN/conffiles' <>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/deb-content.at:74" +$at_failed && at_fn_log_failure +$at_traceon; } + + + + + mkdir -p 'pkg-conff-removed-duped/DEBIAN' + + cat >'pkg-conff-removed-duped/DEBIAN/control' < +Architecture: all +Description: test package +CTRL_TEMPL + + + + mkdir -p 'pkg-conff-removed-duped/DEBIAN' + + cat >'pkg-conff-removed-duped/DEBIAN/conffiles' <>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "dpkg-deb: warning: conffile name '/test-conffile-1' is duplicated +dpkg-deb: warning: ignoring 1 warning about the control file(s) +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/deb-content.at:83" +$at_failed && at_fn_log_failure +$at_traceon; } + + + + + mkdir -p 'pkg-conff-removed-noeol/DEBIAN' + + cat >'pkg-conff-removed-noeol/DEBIAN/control' < +Architecture: all +Description: test package +CTRL_TEMPL + + +printf "remove-on-upgrade /test-conffile-1" >"pkg-conff-removed-noeol/DEBIAN/conffiles" +{ set +x +printf "%s\n" "$at_srcdir/deb-content.at:92: +# Conffiles need a final newline to guarantee there has been no accidental +# file truncation. +dpkg-deb -b pkg-conff-removed-noeol pkg-conff-removed-noeol.deb +" +at_fn_check_prepare_notrace 'an embedded newline' "deb-content.at:92" +( $at_check_trace; +# Conffiles need a final newline to guarantee there has been no accidental +# file truncation. +dpkg-deb -b pkg-conff-removed-noeol pkg-conff-removed-noeol.deb + +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "dpkg-deb: error: conffile name 'remove-on-upgrade /test-conffile-1' is too long, or missing final newline +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 2 $at_status "$at_srcdir/deb-content.at:92" +$at_failed && at_fn_log_failure +$at_traceon; } + + + + + mkdir -p 'pkg-conff-removed-noabs/DEBIAN' + + cat >'pkg-conff-removed-noabs/DEBIAN/control' < +Architecture: all +Description: test package +CTRL_TEMPL + + + + mkdir -p 'pkg-conff-removed-noabs/DEBIAN' + + cat >'pkg-conff-removed-noabs/DEBIAN/conffiles' <pkg-conff-removed-noabs/test-conffile-rel <<'_ATEOF' +test init +_ATEOF + +{ set +x +printf "%s\n" "$at_srcdir/deb-content.at:103: +# Conffiles must use absolute pathnames. +dpkg-deb -b pkg-conff-removed-noabs pkg-conff-removed-noabs.deb +" +at_fn_check_prepare_notrace 'an embedded newline' "deb-content.at:103" +( $at_check_trace; +# Conffiles must use absolute pathnames. +dpkg-deb -b pkg-conff-removed-noabs pkg-conff-removed-noabs.deb + +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "dpkg-deb: error: conffile name 'test-conffile-rel' is not an absolute pathname +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 2 $at_status "$at_srcdir/deb-content.at:103" +$at_failed && at_fn_log_failure +$at_traceon; } + + + + + mkdir -p 'pkg-conff-removed-present/DEBIAN' + + cat >'pkg-conff-removed-present/DEBIAN/control' < +Architecture: all +Description: test package +CTRL_TEMPL + + + + mkdir -p 'pkg-conff-removed-present/DEBIAN' + + cat >'pkg-conff-removed-present/DEBIAN/conffiles' <pkg-conff-removed-present/test-conffile-present <<'_ATEOF' +test init +_ATEOF + +{ set +x +printf "%s\n" "$at_srcdir/deb-content.at:113: +# Conffiles marked for removal must not be present. +dpkg-deb -b pkg-conff-removed-present pkg-conff-removed-present.deb +" +at_fn_check_prepare_notrace 'an embedded newline' "deb-content.at:113" +( $at_check_trace; +# Conffiles marked for removal must not be present. +dpkg-deb -b pkg-conff-removed-present pkg-conff-removed-present.deb + +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "dpkg-deb: error: conffile '/test-conffile-present' is present but is requested to be removed +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 2 $at_status "$at_srcdir/deb-content.at:113" +$at_failed && at_fn_log_failure +$at_traceon; } + + + + + mkdir -p 'pkg-deb-newline/DEBIAN' + + cat >'pkg-deb-newline/DEBIAN/control' < +Architecture: all +Description: test package +CTRL_TEMPL + + +touch 'pkg-deb-newline/file +newline' +{ set +x +printf "%s\n" "$at_srcdir/deb-content.at:122: +# Cannot create package with newlines in filenames. +dpkg-deb -b pkg-deb-newline +" +at_fn_check_prepare_notrace 'an embedded newline' "deb-content.at:122" +( $at_check_trace; +# Cannot create package with newlines in filenames. +dpkg-deb -b pkg-deb-newline + +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "dpkg-deb: error: newline not allowed in pathname './file +newline' +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 2 $at_status "$at_srcdir/deb-content.at:122" +$at_failed && at_fn_log_failure +$at_traceon; } + + + set +x + $at_times_p && times >"$at_times_file" +) 5>&1 2>&1 7>&- | eval $at_tee_pipe +read at_status <"$at_status_file" +#AT_STOP_4 +#AT_START_5 +at_fn_group_banner 5 'deb-fields.at:1' \ + "dpkg-deb .deb fields" " " 1 +at_xfail=no +( + printf "%s\n" "5. $at_setup_line: testing $at_desc ..." + $at_traceon + + + + + + mkdir -p 'pkg-package-type-void/DEBIAN' + + cat >'pkg-package-type-void/DEBIAN/control' < +Architecture: all +Description: test package +CTRL_TEMPL + + +{ set +x +printf "%s\n" "$at_srcdir/deb-fields.at:5: +dpkg-deb -b pkg-package-type-void +# Test absence of Package-Type field. +test -z \"\$(dpkg-deb -f pkg-package-type-void.deb Package-Type)\" +" +at_fn_check_prepare_notrace 'a $(...) command substitution' "deb-fields.at:5" +( $at_check_trace; +dpkg-deb -b pkg-package-type-void +# Test absence of Package-Type field. +test -z "$(dpkg-deb -f pkg-package-type-void.deb Package-Type)" + +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/deb-fields.at:5" +$at_failed && at_fn_log_failure +$at_traceon; } + + + + + mkdir -p 'pkg-package-type-use/DEBIAN' + + cat >'pkg-package-type-use/DEBIAN/control' < +Architecture: all +Description: test package +CTRL_TEMPL + + + + $SED -e '/^Package:/aPackage-Type: udeb' <'pkg-package-type-use/DEBIAN/control' >'pkg-package-type-use/DEBIAN/control.new' + mv 'pkg-package-type-use/DEBIAN/control.new' 'pkg-package-type-use/DEBIAN/control' + +{ set +x +printf "%s\n" "$at_srcdir/deb-fields.at:13: +dpkg-deb -b pkg-package-type-use +# Test presence of Package-Type field. +test -n \"\$(dpkg-deb -f pkg-package-type-use.deb Package-Type)\" +" +at_fn_check_prepare_notrace 'a $(...) command substitution' "deb-fields.at:13" +( $at_check_trace; +dpkg-deb -b pkg-package-type-use +# Test presence of Package-Type field. +test -n "$(dpkg-deb -f pkg-package-type-use.deb Package-Type)" + +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/deb-fields.at:13" +$at_failed && at_fn_log_failure +$at_traceon; } + + + + + mkdir -p 'pkg-obsolete-fields/DEBIAN' + + cat >'pkg-obsolete-fields/DEBIAN/control' < +Architecture: all +Description: test package +CTRL_TEMPL + + + + $SED -e 's/^Priority:/Class:/' <'pkg-obsolete-fields/DEBIAN/control' >'pkg-obsolete-fields/DEBIAN/control.new' + mv 'pkg-obsolete-fields/DEBIAN/control.new' 'pkg-obsolete-fields/DEBIAN/control' + + + $SED -e 's/^Version: 0.0-1/Version: 0.0/' <'pkg-obsolete-fields/DEBIAN/control' >'pkg-obsolete-fields/DEBIAN/control.new' + mv 'pkg-obsolete-fields/DEBIAN/control.new' 'pkg-obsolete-fields/DEBIAN/control' + + + $SED -e '/^Version:/aRevision: 1' <'pkg-obsolete-fields/DEBIAN/control' >'pkg-obsolete-fields/DEBIAN/control.new' + mv 'pkg-obsolete-fields/DEBIAN/control.new' 'pkg-obsolete-fields/DEBIAN/control' + + + $SED -e '/^Package:/aOptional: suggests' <'pkg-obsolete-fields/DEBIAN/control' >'pkg-obsolete-fields/DEBIAN/control.new' + mv 'pkg-obsolete-fields/DEBIAN/control.new' 'pkg-obsolete-fields/DEBIAN/control' + + + $SED -e '/^Package:/aRecommended: recommends' <'pkg-obsolete-fields/DEBIAN/control' >'pkg-obsolete-fields/DEBIAN/control.new' + mv 'pkg-obsolete-fields/DEBIAN/control.new' 'pkg-obsolete-fields/DEBIAN/control' + +{ set +x +printf "%s\n" "$at_srcdir/deb-fields.at:25: +dpkg-deb -b pkg-obsolete-fields +" +at_fn_check_prepare_notrace 'an embedded newline' "deb-fields.at:25" +( $at_check_trace; +dpkg-deb -b pkg-obsolete-fields + +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "dpkg-deb: warning: parsing file 'pkg-obsolete-fields/DEBIAN/control' near line 2 package 'pkg-obsolete-fields': + obsolete 'Recommended' field used +dpkg-deb: warning: parsing file 'pkg-obsolete-fields/DEBIAN/control' near line 3 package 'pkg-obsolete-fields': + obsolete 'Optional' field used +dpkg-deb: warning: parsing file 'pkg-obsolete-fields/DEBIAN/control' near line 5 package 'pkg-obsolete-fields': + obsolete 'Revision' field used +dpkg-deb: warning: parsing file 'pkg-obsolete-fields/DEBIAN/control' near line 7 package 'pkg-obsolete-fields': + obsolete 'Class' field used +dpkg-deb: warning: ignoring 4 warnings about the control file(s) +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/deb-fields.at:25" +$at_failed && at_fn_log_failure +$at_traceon; } + +{ set +x +printf "%s\n" "$at_srcdir/deb-fields.at:38: +dpkg-deb -f pkg-obsolete-fields.deb \\ + Version Recommends Suggests Priority 2>/dev/null +" +at_fn_check_prepare_notrace 'an embedded newline' "deb-fields.at:38" +( $at_check_trace; +dpkg-deb -f pkg-obsolete-fields.deb \ + Version Recommends Suggests Priority 2>/dev/null + +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +echo >>"$at_stdout"; printf "%s\n" "Version: 0.0-1 +Recommends: recommends +Suggests: suggests +Priority: extra +" | \ + $at_diff - "$at_stdout" || at_failed=: +at_fn_check_status 0 $at_status "$at_srcdir/deb-fields.at:38" +$at_failed && at_fn_log_failure +$at_traceon; } + + + set +x + $at_times_p && times >"$at_times_file" +) 5>&1 2>&1 7>&- | eval $at_tee_pipe +read at_status <"$at_status_file" +#AT_STOP_5 +#AT_START_6 +at_fn_group_banner 6 'deb-split.at:1' \ + "dpkg-split options" " " 2 +at_xfail=no +( + printf "%s\n" "6. $at_setup_line: testing $at_desc ..." + $at_traceon + + + +{ set +x +printf "%s\n" "$at_srcdir/deb-split.at:4: dpkg-split --version" +at_fn_check_prepare_trace "deb-split.at:4" +( $at_check_trace; dpkg-split --version +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/deb-split.at:4" +$at_failed && at_fn_log_failure +$at_traceon; } + +{ set +x +printf "%s\n" "$at_srcdir/deb-split.at:5: dpkg-split --help" +at_fn_check_prepare_trace "deb-split.at:5" +( $at_check_trace; dpkg-split --help +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/deb-split.at:5" +$at_failed && at_fn_log_failure +$at_traceon; } + + + set +x + $at_times_p && times >"$at_times_file" +) 5>&1 2>&1 7>&- | eval $at_tee_pipe +read at_status <"$at_status_file" +#AT_STOP_6 +#AT_START_7 +at_fn_group_banner 7 'deb-split.at:9' \ + "dpkg-split .deb format" " " 2 +at_xfail=no +( + printf "%s\n" "7. $at_setup_line: testing $at_desc ..." + $at_traceon + + + + + + mkdir -p 'pkg-split/DEBIAN' + + cat >'pkg-split/DEBIAN/control' < +Architecture: all +Description: test package +CTRL_TEMPL + + + + $SED -e 's/^Description:.*$/& - normal package to be split/' <'pkg-split/DEBIAN/control' >'pkg-split/DEBIAN/control.new' + mv 'pkg-split/DEBIAN/control.new' 'pkg-split/DEBIAN/control' + +{ set +x +printf "%s\n" "$at_srcdir/deb-split.at:15: +# Initialize the template package +chmod -R u+w pkg-split +\$PERL -E 'print \"fade\" foreach 1 .. 1024 * 512' >pkg-split/data-file +find pkg-split | xargs touch -t 197001010100.00 +dpkg-deb --root-owner-group -Znone -b pkg-split >/dev/null +" +at_fn_check_prepare_notrace 'an embedded newline' "deb-split.at:15" +( $at_check_trace; +# Initialize the template package +chmod -R u+w pkg-split +$PERL -E 'print "fade" foreach 1 .. 1024 * 512' >pkg-split/data-file +find pkg-split | xargs touch -t 197001010100.00 +dpkg-deb --root-owner-group -Znone -b pkg-split >/dev/null + +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +at_fn_diff_devnull "$at_stdout" || at_failed=: +at_fn_check_status 0 $at_status "$at_srcdir/deb-split.at:15" +$at_failed && at_fn_log_failure +$at_traceon; } + + +{ set +x +printf "%s\n" "$at_srcdir/deb-split.at:23: +# Test splitting a package (in 10 parts: 9 * 210 KiB B + 158 KiB) +dpkg-split -S 210 -s pkg-split.deb pkg-split-part +for p in \$(seq 10); do + test -f pkg-split-part.\${p}of10.deb +done +" +at_fn_check_prepare_notrace 'a $(...) command substitution' "deb-split.at:23" +( $at_check_trace; +# Test splitting a package (in 10 parts: 9 * 210 KiB B + 158 KiB) +dpkg-split -S 210 -s pkg-split.deb pkg-split-part +for p in $(seq 10); do + test -f pkg-split-part.${p}of10.deb +done + +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +echo >>"$at_stdout"; printf "%s\n" "Splitting package pkg-split into 10 parts: 1 2 3 4 5 6 7 8 9 10 done +" | \ + $at_diff - "$at_stdout" || at_failed=: +at_fn_check_status 0 $at_status "$at_srcdir/deb-split.at:23" +$at_failed && at_fn_log_failure +$at_traceon; } + + +DEB_SPLIT_MD5SUM=1684b6cdb72bf035ccafd653f307d3da +DEB_SPLIT_LENGTH=2109632 +DEB_SPLIT_PART_LENGTH=214016 +DEB_SPLIT_PART_SIZE=214222 +DEB_SPLIT_LAST_LENGTH=183488 +DEB_SPLIT_LAST_SIZE=183694 + +DEB_SPLIT_PART_SIZE_VERSION=$((DEB_SPLIT_PART_SIZE + 2)) + +{ set +x +printf "%s\n" "$at_srcdir/deb-split.at:41: +# Test debian-split with 2.x version +cp pkg-split-part.1of10.deb pkg-split-part-version-2x.deb +ar x pkg-split-part-version-2x.deb debian-split +sed -e '1c2.999' debian-split >debian-split.new +mv debian-split.new debian-split +ar rc pkg-split-part-version-2x.deb debian-split +ar t pkg-split-part-version-2x.deb +dpkg-split -I pkg-split-part-version-2x.deb +" +at_fn_check_prepare_notrace 'an embedded newline' "deb-split.at:41" +( $at_check_trace; +# Test debian-split with 2.x version +cp pkg-split-part.1of10.deb pkg-split-part-version-2x.deb +ar x pkg-split-part-version-2x.deb debian-split +sed -e '1c2.999' debian-split >debian-split.new +mv debian-split.new debian-split +ar rc pkg-split-part-version-2x.deb debian-split +ar t pkg-split-part-version-2x.deb +dpkg-split -I pkg-split-part-version-2x.deb + +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +echo >>"$at_stdout"; printf "%s\n" "debian-split +data.1 +pkg-split-part-version-2x.deb: + Part format version: 2.999 + Part of package: pkg-split + ... version: 0.0-1 + ... architecture: all + ... MD5 checksum: $DEB_SPLIT_MD5SUM + ... length: $DEB_SPLIT_LENGTH bytes + ... split every: $DEB_SPLIT_PART_LENGTH bytes + Part number: 1/10 + Part length: $DEB_SPLIT_PART_LENGTH bytes + Part offset: 0 bytes + Part file size (used portion): $DEB_SPLIT_PART_SIZE_VERSION bytes + +" | \ + $at_diff - "$at_stdout" || at_failed=: +at_fn_check_status 0 $at_status "$at_srcdir/deb-split.at:41" +$at_failed && at_fn_log_failure +$at_traceon; } + + +DEB_SPLIT_PART_SIZE_MAGIC_EXTRA=$((DEB_SPLIT_PART_SIZE + 10)) + +{ set +x +printf "%s\n" "$at_srcdir/deb-split.at:69: +# Test debian-split with extra lines +cp pkg-split-part.1of10.deb pkg-split-part-magic-extra.deb +ar x pkg-split-part-magic-extra.deb debian-split +echo \"extra line\" >>debian-split +ar rc pkg-split-part-magic-extra.deb debian-split +ar t pkg-split-part-magic-extra.deb +dpkg-split -I pkg-split-part-magic-extra.deb +" +at_fn_check_prepare_notrace 'an embedded newline' "deb-split.at:69" +( $at_check_trace; +# Test debian-split with extra lines +cp pkg-split-part.1of10.deb pkg-split-part-magic-extra.deb +ar x pkg-split-part-magic-extra.deb debian-split +echo "extra line" >>debian-split +ar rc pkg-split-part-magic-extra.deb debian-split +ar t pkg-split-part-magic-extra.deb +dpkg-split -I pkg-split-part-magic-extra.deb + +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +echo >>"$at_stdout"; printf "%s\n" "debian-split +data.1 +pkg-split-part-magic-extra.deb: + Part format version: 2.1 + Part of package: pkg-split + ... version: 0.0-1 + ... architecture: all + ... MD5 checksum: $DEB_SPLIT_MD5SUM + ... length: $DEB_SPLIT_LENGTH bytes + ... split every: $DEB_SPLIT_PART_LENGTH bytes + Part number: 1/10 + Part length: $DEB_SPLIT_PART_LENGTH bytes + Part offset: 0 bytes + Part file size (used portion): $DEB_SPLIT_PART_SIZE_MAGIC_EXTRA bytes + +" | \ + $at_diff - "$at_stdout" || at_failed=: +at_fn_check_status 0 $at_status "$at_srcdir/deb-split.at:69" +$at_failed && at_fn_log_failure +$at_traceon; } + + +{ set +x +printf "%s\n" "$at_srcdir/deb-split.at:94: +# Test missing debian-split +cp pkg-split-part.1of10.deb pkg-split-part-missing-magic.deb +ar d pkg-split-part-missing-magic.deb debian-split +ar t pkg-split-part-missing-magic.deb +dpkg-split -I pkg-split-part-missing-magic.deb +" +at_fn_check_prepare_notrace 'an embedded newline' "deb-split.at:94" +( $at_check_trace; +# Test missing debian-split +cp pkg-split-part.1of10.deb pkg-split-part-missing-magic.deb +ar d pkg-split-part-missing-magic.deb debian-split +ar t pkg-split-part-missing-magic.deb +dpkg-split -I pkg-split-part-missing-magic.deb + +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +echo >>"$at_stdout"; printf "%s\n" "data.1 +file 'pkg-split-part-missing-magic.deb' is not an archive part +" | \ + $at_diff - "$at_stdout" || at_failed=: +at_fn_check_status 0 $at_status "$at_srcdir/deb-split.at:94" +$at_failed && at_fn_log_failure +$at_traceon; } + + +{ set +x +printf "%s\n" "$at_srcdir/deb-split.at:104: +# Test missing data part member +cp pkg-split-part.1of10.deb pkg-split-part-missing-data.deb +ar d pkg-split-part-missing-data.deb data.1 +ar t pkg-split-part-missing-data.deb +dpkg-split -I pkg-split-part-missing-data.deb +" +at_fn_check_prepare_notrace 'an embedded newline' "deb-split.at:104" +( $at_check_trace; +# Test missing data part member +cp pkg-split-part.1of10.deb pkg-split-part-missing-data.deb +ar d pkg-split-part-missing-data.deb data.1 +ar t pkg-split-part-missing-data.deb +dpkg-split -I pkg-split-part-missing-data.deb + +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "dpkg-split: error: unexpected end of file in reading data part member ar header in pkg-split-part-missing-data.deb +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo >>"$at_stdout"; printf "%s\n" "debian-split +" | \ + $at_diff - "$at_stdout" || at_failed=: +at_fn_check_status 2 $at_status "$at_srcdir/deb-split.at:104" +$at_failed && at_fn_log_failure +$at_traceon; } + + +{ set +x +printf "%s\n" "$at_srcdir/deb-split.at:114: +# Test duplicate debian-split member +cp pkg-split-part.1of10.deb pkg-split-part-duplicate-magic.deb +ar x pkg-split-part-duplicate-magic.deb debian-split +ar ra debian-split pkg-split-part-duplicate-magic.deb debian-split debian-split +ar t pkg-split-part-duplicate-magic.deb +dpkg-split -I pkg-split-part-duplicate-magic.deb +" +at_fn_check_prepare_notrace 'an embedded newline' "deb-split.at:114" +( $at_check_trace; +# Test duplicate debian-split member +cp pkg-split-part.1of10.deb pkg-split-part-duplicate-magic.deb +ar x pkg-split-part-duplicate-magic.deb debian-split +ar ra debian-split pkg-split-part-duplicate-magic.deb debian-split debian-split +ar t pkg-split-part-duplicate-magic.deb +dpkg-split -I pkg-split-part-duplicate-magic.deb + +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "dpkg-split: error: file 'pkg-split-part-duplicate-magic.deb' is corrupt - second member is not data member +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo >>"$at_stdout"; printf "%s\n" "debian-split +debian-split +data.1 +" | \ + $at_diff - "$at_stdout" || at_failed=: +at_fn_check_status 2 $at_status "$at_srcdir/deb-split.at:114" +$at_failed && at_fn_log_failure +$at_traceon; } + + +{ set +x +printf "%s\n" "$at_srcdir/deb-split.at:127: +# Test unknown extra member +cp pkg-split-part.1of10.deb pkg-split-part-extra-member.deb +echo \"some content\" >unknown +ar q pkg-split-part-extra-member.deb unknown +ar t pkg-split-part-extra-member.deb +dpkg-split -I pkg-split-part-extra-member.deb +" +at_fn_check_prepare_notrace 'an embedded newline' "deb-split.at:127" +( $at_check_trace; +# Test unknown extra member +cp pkg-split-part.1of10.deb pkg-split-part-extra-member.deb +echo "some content" >unknown +ar q pkg-split-part-extra-member.deb unknown +ar t pkg-split-part-extra-member.deb +dpkg-split -I pkg-split-part-extra-member.deb + +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +echo >>"$at_stdout"; printf "%s\n" "debian-split +data.1 +unknown +pkg-split-part-extra-member.deb: + Part format version: 2.1 + Part of package: pkg-split + ... version: 0.0-1 + ... architecture: all + ... MD5 checksum: $DEB_SPLIT_MD5SUM + ... length: $DEB_SPLIT_LENGTH bytes + ... split every: $DEB_SPLIT_PART_LENGTH bytes + Part number: 1/10 + Part length: $DEB_SPLIT_PART_LENGTH bytes + Part offset: 0 bytes + Part file size (used portion): $DEB_SPLIT_PART_SIZE bytes + +" | \ + $at_diff - "$at_stdout" || at_failed=: +at_fn_check_status 0 $at_status "$at_srcdir/deb-split.at:127" +$at_failed && at_fn_log_failure +$at_traceon; } + + +{ set +x +printf "%s\n" "$at_srcdir/deb-split.at:152: +# Test getting information about the split parts (parsing verification) +dpkg-split -I pkg-split-part.1of10.deb +" +at_fn_check_prepare_notrace 'an embedded newline' "deb-split.at:152" +( $at_check_trace; +# Test getting information about the split parts (parsing verification) +dpkg-split -I pkg-split-part.1of10.deb + +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +echo >>"$at_stdout"; printf "%s\n" "pkg-split-part.1of10.deb: + Part format version: 2.1 + Part of package: pkg-split + ... version: 0.0-1 + ... architecture: all + ... MD5 checksum: $DEB_SPLIT_MD5SUM + ... length: $DEB_SPLIT_LENGTH bytes + ... split every: $DEB_SPLIT_PART_LENGTH bytes + Part number: 1/10 + Part length: $DEB_SPLIT_PART_LENGTH bytes + Part offset: 0 bytes + Part file size (used portion): $DEB_SPLIT_PART_SIZE bytes + +" | \ + $at_diff - "$at_stdout" || at_failed=: +at_fn_check_status 0 $at_status "$at_srcdir/deb-split.at:152" +$at_failed && at_fn_log_failure +$at_traceon; } + +{ set +x +printf "%s\n" "$at_srcdir/deb-split.at:169: +# Test getting information about the split parts (parsing verification) +dpkg-split -I pkg-split-part.2of10.deb +" +at_fn_check_prepare_notrace 'an embedded newline' "deb-split.at:169" +( $at_check_trace; +# Test getting information about the split parts (parsing verification) +dpkg-split -I pkg-split-part.2of10.deb + +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +echo >>"$at_stdout"; printf "%s\n" "pkg-split-part.2of10.deb: + Part format version: 2.1 + Part of package: pkg-split + ... version: 0.0-1 + ... architecture: all + ... MD5 checksum: $DEB_SPLIT_MD5SUM + ... length: $DEB_SPLIT_LENGTH bytes + ... split every: $DEB_SPLIT_PART_LENGTH bytes + Part number: 2/10 + Part length: $DEB_SPLIT_PART_LENGTH bytes + Part offset: 214016 bytes + Part file size (used portion): $DEB_SPLIT_PART_SIZE bytes + +" | \ + $at_diff - "$at_stdout" || at_failed=: +at_fn_check_status 0 $at_status "$at_srcdir/deb-split.at:169" +$at_failed && at_fn_log_failure +$at_traceon; } + +{ set +x +printf "%s\n" "$at_srcdir/deb-split.at:186: +# Test getting information about the split parts (parsing verification) +dpkg-split -I pkg-split-part.9of10.deb +" +at_fn_check_prepare_notrace 'an embedded newline' "deb-split.at:186" +( $at_check_trace; +# Test getting information about the split parts (parsing verification) +dpkg-split -I pkg-split-part.9of10.deb + +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +echo >>"$at_stdout"; printf "%s\n" "pkg-split-part.9of10.deb: + Part format version: 2.1 + Part of package: pkg-split + ... version: 0.0-1 + ... architecture: all + ... MD5 checksum: $DEB_SPLIT_MD5SUM + ... length: $DEB_SPLIT_LENGTH bytes + ... split every: $DEB_SPLIT_PART_LENGTH bytes + Part number: 9/10 + Part length: $DEB_SPLIT_PART_LENGTH bytes + Part offset: 1712128 bytes + Part file size (used portion): $DEB_SPLIT_PART_SIZE bytes + +" | \ + $at_diff - "$at_stdout" || at_failed=: +at_fn_check_status 0 $at_status "$at_srcdir/deb-split.at:186" +$at_failed && at_fn_log_failure +$at_traceon; } + +{ set +x +printf "%s\n" "$at_srcdir/deb-split.at:203: +# Test getting information about the split parts (parsing verification) +dpkg-split -I pkg-split-part.10of10.deb +" +at_fn_check_prepare_notrace 'an embedded newline' "deb-split.at:203" +( $at_check_trace; +# Test getting information about the split parts (parsing verification) +dpkg-split -I pkg-split-part.10of10.deb + +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +echo >>"$at_stdout"; printf "%s\n" "pkg-split-part.10of10.deb: + Part format version: 2.1 + Part of package: pkg-split + ... version: 0.0-1 + ... architecture: all + ... MD5 checksum: $DEB_SPLIT_MD5SUM + ... length: $DEB_SPLIT_LENGTH bytes + ... split every: $DEB_SPLIT_PART_LENGTH bytes + Part number: 10/10 + Part length: $DEB_SPLIT_LAST_LENGTH bytes + Part offset: 1926144 bytes + Part file size (used portion): $DEB_SPLIT_LAST_SIZE bytes + +" | \ + $at_diff - "$at_stdout" || at_failed=: +at_fn_check_status 0 $at_status "$at_srcdir/deb-split.at:203" +$at_failed && at_fn_log_failure +$at_traceon; } + + +{ set +x +printf "%s\n" "$at_srcdir/deb-split.at:221: +# Test joining the split parts back together +dpkg-split -o pkg-joined.deb -j pkg-split-part.*.deb +cmp pkg-split.deb pkg-joined.deb +" +at_fn_check_prepare_notrace 'an embedded newline' "deb-split.at:221" +( $at_check_trace; +# Test joining the split parts back together +dpkg-split -o pkg-joined.deb -j pkg-split-part.*.deb +cmp pkg-split.deb pkg-joined.deb + +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +echo >>"$at_stdout"; printf "%s\n" "Putting package pkg-split together from 10 parts: 1 2 3 4 5 6 7 8 9 10 done +" | \ + $at_diff - "$at_stdout" || at_failed=: +at_fn_check_status 0 $at_status "$at_srcdir/deb-split.at:221" +$at_failed && at_fn_log_failure +$at_traceon; } + + + set +x + $at_times_p && times >"$at_times_file" +) 5>&1 2>&1 7>&- | eval $at_tee_pipe +read at_status <"$at_status_file" +#AT_STOP_7 +#AT_START_8 +at_fn_group_banner 8 'realpath.at:1' \ + "dpkg-realpath options" " " 3 +at_xfail=no +( + printf "%s\n" "8. $at_setup_line: testing $at_desc ..." + $at_traceon + + + +{ set +x +printf "%s\n" "$at_srcdir/realpath.at:4: dpkg-realpath --version" +at_fn_check_prepare_trace "realpath.at:4" +( $at_check_trace; dpkg-realpath --version +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/realpath.at:4" +$at_failed && at_fn_log_failure +$at_traceon; } + +{ set +x +printf "%s\n" "$at_srcdir/realpath.at:5: dpkg-realpath --help" +at_fn_check_prepare_trace "realpath.at:5" +( $at_check_trace; dpkg-realpath --help +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/realpath.at:5" +$at_failed && at_fn_log_failure +$at_traceon; } + + + set +x + $at_times_p && times >"$at_times_file" +) 5>&1 2>&1 7>&- | eval $at_tee_pipe +read at_status <"$at_status_file" +#AT_STOP_8 +#AT_START_9 +at_fn_group_banner 9 'realpath.at:9' \ + "dpkg-realpath path resolving" " " 3 +at_xfail=no +( + printf "%s\n" "9. $at_setup_line: testing $at_desc ..." + $at_traceon + + + +mkdir -p aa/bb/cc +mkdir -p zz/yy/xx +mkdir -p usr/bin +: >aa/bb/cc/file +ln -sfT aa/bb/cc/file zz/yy/xx/symlink-rel +ln -sfT /aa/bb/cc/file zz/yy/xx/symlink-abs +: >usr/bin/a-shell +ln -sfT /usr/bin/a-shell usr/bin/sh + +tmpdir="$(pwd)" +export DPKG_ROOT= + +# Relative paths +{ set +x +printf "%s\n" "$at_srcdir/realpath.at:25: dpkg-realpath aa/bb/cc" +at_fn_check_prepare_trace "realpath.at:25" +( $at_check_trace; dpkg-realpath aa/bb/cc +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +echo >>"$at_stdout"; printf "%s\n" "$tmpdir/aa/bb/cc +" | \ + $at_diff - "$at_stdout" || at_failed=: +at_fn_check_status 0 $at_status "$at_srcdir/realpath.at:25" +$at_failed && at_fn_log_failure +$at_traceon; } + +{ set +x +printf "%s\n" "$at_srcdir/realpath.at:28: dpkg-realpath zz/yy/xx" +at_fn_check_prepare_trace "realpath.at:28" +( $at_check_trace; dpkg-realpath zz/yy/xx +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +echo >>"$at_stdout"; printf "%s\n" "$tmpdir/zz/yy/xx +" | \ + $at_diff - "$at_stdout" || at_failed=: +at_fn_check_status 0 $at_status "$at_srcdir/realpath.at:28" +$at_failed && at_fn_log_failure +$at_traceon; } + +{ set +x +printf "%s\n" "$at_srcdir/realpath.at:30: dpkg-realpath usr/bin" +at_fn_check_prepare_trace "realpath.at:30" +( $at_check_trace; dpkg-realpath usr/bin +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +echo >>"$at_stdout"; printf "%s\n" "$tmpdir/usr/bin +" | \ + $at_diff - "$at_stdout" || at_failed=: +at_fn_check_status 0 $at_status "$at_srcdir/realpath.at:30" +$at_failed && at_fn_log_failure +$at_traceon; } + +{ set +x +printf "%s\n" "$at_srcdir/realpath.at:32: dpkg-realpath aa/bb/cc/file" +at_fn_check_prepare_trace "realpath.at:32" +( $at_check_trace; dpkg-realpath aa/bb/cc/file +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +echo >>"$at_stdout"; printf "%s\n" "$tmpdir/aa/bb/cc/file +" | \ + $at_diff - "$at_stdout" || at_failed=: +at_fn_check_status 0 $at_status "$at_srcdir/realpath.at:32" +$at_failed && at_fn_log_failure +$at_traceon; } + +{ set +x +printf "%s\n" "$at_srcdir/realpath.at:34: dpkg-realpath zz/yy/xx/symlink-rel" +at_fn_check_prepare_trace "realpath.at:34" +( $at_check_trace; dpkg-realpath zz/yy/xx/symlink-rel +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +echo >>"$at_stdout"; printf "%s\n" "$tmpdir/zz/yy/xx/aa/bb/cc/file +" | \ + $at_diff - "$at_stdout" || at_failed=: +at_fn_check_status 0 $at_status "$at_srcdir/realpath.at:34" +$at_failed && at_fn_log_failure +$at_traceon; } + +{ set +x +printf "%s\n" "$at_srcdir/realpath.at:37: dpkg-realpath zz/yy/xx/symlink-abs" +at_fn_check_prepare_trace "realpath.at:37" +( $at_check_trace; dpkg-realpath zz/yy/xx/symlink-abs +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +echo >>"$at_stdout"; printf "%s\n" "/aa/bb/cc/file +" | \ + $at_diff - "$at_stdout" || at_failed=: +at_fn_check_status 0 $at_status "$at_srcdir/realpath.at:37" +$at_failed && at_fn_log_failure +$at_traceon; } + +{ set +x +printf "%s\n" "$at_srcdir/realpath.at:39: dpkg-realpath usr/bin/a-shell" +at_fn_check_prepare_trace "realpath.at:39" +( $at_check_trace; dpkg-realpath usr/bin/a-shell +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +echo >>"$at_stdout"; printf "%s\n" "$tmpdir/usr/bin/a-shell +" | \ + $at_diff - "$at_stdout" || at_failed=: +at_fn_check_status 0 $at_status "$at_srcdir/realpath.at:39" +$at_failed && at_fn_log_failure +$at_traceon; } + +{ set +x +printf "%s\n" "$at_srcdir/realpath.at:42: dpkg-realpath usr/bin/sh" +at_fn_check_prepare_trace "realpath.at:42" +( $at_check_trace; dpkg-realpath usr/bin/sh +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +echo >>"$at_stdout"; printf "%s\n" "/usr/bin/a-shell +" | \ + $at_diff - "$at_stdout" || at_failed=: +at_fn_check_status 0 $at_status "$at_srcdir/realpath.at:42" +$at_failed && at_fn_log_failure +$at_traceon; } + + +# Absolute paths +cd / +{ set +x +printf "%s\n" "$at_srcdir/realpath.at:47: dpkg-realpath \"\$tmpdir/aa/bb/cc\"" +at_fn_check_prepare_dynamic "dpkg-realpath \"$tmpdir/aa/bb/cc\"" "realpath.at:47" +( $at_check_trace; dpkg-realpath "$tmpdir/aa/bb/cc" +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +echo >>"$at_stdout"; printf "%s\n" "$tmpdir/aa/bb/cc +" | \ + $at_diff - "$at_stdout" || at_failed=: +at_fn_check_status 0 $at_status "$at_srcdir/realpath.at:47" +$at_failed && at_fn_log_failure +$at_traceon; } + +{ set +x +printf "%s\n" "$at_srcdir/realpath.at:49: dpkg-realpath \"\$tmpdir/zz/yy/xx\"" +at_fn_check_prepare_dynamic "dpkg-realpath \"$tmpdir/zz/yy/xx\"" "realpath.at:49" +( $at_check_trace; dpkg-realpath "$tmpdir/zz/yy/xx" +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +echo >>"$at_stdout"; printf "%s\n" "$tmpdir/zz/yy/xx +" | \ + $at_diff - "$at_stdout" || at_failed=: +at_fn_check_status 0 $at_status "$at_srcdir/realpath.at:49" +$at_failed && at_fn_log_failure +$at_traceon; } + +{ set +x +printf "%s\n" "$at_srcdir/realpath.at:51: dpkg-realpath \"\$tmpdir/usr/bin\"" +at_fn_check_prepare_dynamic "dpkg-realpath \"$tmpdir/usr/bin\"" "realpath.at:51" +( $at_check_trace; dpkg-realpath "$tmpdir/usr/bin" +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +echo >>"$at_stdout"; printf "%s\n" "$tmpdir/usr/bin +" | \ + $at_diff - "$at_stdout" || at_failed=: +at_fn_check_status 0 $at_status "$at_srcdir/realpath.at:51" +$at_failed && at_fn_log_failure +$at_traceon; } + +{ set +x +printf "%s\n" "$at_srcdir/realpath.at:53: dpkg-realpath \"\$tmpdir/aa/bb/cc/file\"" +at_fn_check_prepare_dynamic "dpkg-realpath \"$tmpdir/aa/bb/cc/file\"" "realpath.at:53" +( $at_check_trace; dpkg-realpath "$tmpdir/aa/bb/cc/file" +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +echo >>"$at_stdout"; printf "%s\n" "$tmpdir/aa/bb/cc/file +" | \ + $at_diff - "$at_stdout" || at_failed=: +at_fn_check_status 0 $at_status "$at_srcdir/realpath.at:53" +$at_failed && at_fn_log_failure +$at_traceon; } + +{ set +x +printf "%s\n" "$at_srcdir/realpath.at:56: dpkg-realpath \"\$tmpdir/zz/yy/xx/symlink-rel\"" +at_fn_check_prepare_dynamic "dpkg-realpath \"$tmpdir/zz/yy/xx/symlink-rel\"" "realpath.at:56" +( $at_check_trace; dpkg-realpath "$tmpdir/zz/yy/xx/symlink-rel" +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +echo >>"$at_stdout"; printf "%s\n" "$tmpdir/zz/yy/xx/aa/bb/cc/file +" | \ + $at_diff - "$at_stdout" || at_failed=: +at_fn_check_status 0 $at_status "$at_srcdir/realpath.at:56" +$at_failed && at_fn_log_failure +$at_traceon; } + +{ set +x +printf "%s\n" "$at_srcdir/realpath.at:59: dpkg-realpath \"\$tmpdir/zz/yy/xx/symlink-abs\"" +at_fn_check_prepare_dynamic "dpkg-realpath \"$tmpdir/zz/yy/xx/symlink-abs\"" "realpath.at:59" +( $at_check_trace; dpkg-realpath "$tmpdir/zz/yy/xx/symlink-abs" +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +echo >>"$at_stdout"; printf "%s\n" "/aa/bb/cc/file +" | \ + $at_diff - "$at_stdout" || at_failed=: +at_fn_check_status 0 $at_status "$at_srcdir/realpath.at:59" +$at_failed && at_fn_log_failure +$at_traceon; } + +{ set +x +printf "%s\n" "$at_srcdir/realpath.at:61: dpkg-realpath \"\$tmpdir/usr/bin/a-shell\"" +at_fn_check_prepare_dynamic "dpkg-realpath \"$tmpdir/usr/bin/a-shell\"" "realpath.at:61" +( $at_check_trace; dpkg-realpath "$tmpdir/usr/bin/a-shell" +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +echo >>"$at_stdout"; printf "%s\n" "$tmpdir/usr/bin/a-shell +" | \ + $at_diff - "$at_stdout" || at_failed=: +at_fn_check_status 0 $at_status "$at_srcdir/realpath.at:61" +$at_failed && at_fn_log_failure +$at_traceon; } + +{ set +x +printf "%s\n" "$at_srcdir/realpath.at:64: dpkg-realpath \"\$tmpdir/usr/bin/sh\"" +at_fn_check_prepare_dynamic "dpkg-realpath \"$tmpdir/usr/bin/sh\"" "realpath.at:64" +( $at_check_trace; dpkg-realpath "$tmpdir/usr/bin/sh" +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +echo >>"$at_stdout"; printf "%s\n" "/usr/bin/a-shell +" | \ + $at_diff - "$at_stdout" || at_failed=: +at_fn_check_status 0 $at_status "$at_srcdir/realpath.at:64" +$at_failed && at_fn_log_failure +$at_traceon; } + + +# Chrooted paths +DPKG_ROOT="$tmpdir" +{ set +x +printf "%s\n" "$at_srcdir/realpath.at:69: dpkg-realpath /aa/bb/cc" +at_fn_check_prepare_trace "realpath.at:69" +( $at_check_trace; dpkg-realpath /aa/bb/cc +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +echo >>"$at_stdout"; printf "%s\n" "/aa/bb/cc +" | \ + $at_diff - "$at_stdout" || at_failed=: +at_fn_check_status 0 $at_status "$at_srcdir/realpath.at:69" +$at_failed && at_fn_log_failure +$at_traceon; } + +{ set +x +printf "%s\n" "$at_srcdir/realpath.at:71: dpkg-realpath /zz/yy/xx" +at_fn_check_prepare_trace "realpath.at:71" +( $at_check_trace; dpkg-realpath /zz/yy/xx +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +echo >>"$at_stdout"; printf "%s\n" "/zz/yy/xx +" | \ + $at_diff - "$at_stdout" || at_failed=: +at_fn_check_status 0 $at_status "$at_srcdir/realpath.at:71" +$at_failed && at_fn_log_failure +$at_traceon; } + +{ set +x +printf "%s\n" "$at_srcdir/realpath.at:73: dpkg-realpath /usr/bin" +at_fn_check_prepare_trace "realpath.at:73" +( $at_check_trace; dpkg-realpath /usr/bin +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +echo >>"$at_stdout"; printf "%s\n" "/usr/bin +" | \ + $at_diff - "$at_stdout" || at_failed=: +at_fn_check_status 0 $at_status "$at_srcdir/realpath.at:73" +$at_failed && at_fn_log_failure +$at_traceon; } + +{ set +x +printf "%s\n" "$at_srcdir/realpath.at:75: dpkg-realpath /aa/bb/cc/file" +at_fn_check_prepare_trace "realpath.at:75" +( $at_check_trace; dpkg-realpath /aa/bb/cc/file +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +echo >>"$at_stdout"; printf "%s\n" "/aa/bb/cc/file +" | \ + $at_diff - "$at_stdout" || at_failed=: +at_fn_check_status 0 $at_status "$at_srcdir/realpath.at:75" +$at_failed && at_fn_log_failure +$at_traceon; } + +{ set +x +printf "%s\n" "$at_srcdir/realpath.at:77: dpkg-realpath /zz/yy/xx/symlink-rel" +at_fn_check_prepare_trace "realpath.at:77" +( $at_check_trace; dpkg-realpath /zz/yy/xx/symlink-rel +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +echo >>"$at_stdout"; printf "%s\n" "/zz/yy/xx/aa/bb/cc/file +" | \ + $at_diff - "$at_stdout" || at_failed=: +at_fn_check_status 0 $at_status "$at_srcdir/realpath.at:77" +$at_failed && at_fn_log_failure +$at_traceon; } + +{ set +x +printf "%s\n" "$at_srcdir/realpath.at:79: dpkg-realpath /zz/yy/xx/symlink-abs" +at_fn_check_prepare_trace "realpath.at:79" +( $at_check_trace; dpkg-realpath /zz/yy/xx/symlink-abs +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +echo >>"$at_stdout"; printf "%s\n" "/aa/bb/cc/file +" | \ + $at_diff - "$at_stdout" || at_failed=: +at_fn_check_status 0 $at_status "$at_srcdir/realpath.at:79" +$at_failed && at_fn_log_failure +$at_traceon; } + +{ set +x +printf "%s\n" "$at_srcdir/realpath.at:81: dpkg-realpath /usr/bin/a-shell" +at_fn_check_prepare_trace "realpath.at:81" +( $at_check_trace; dpkg-realpath /usr/bin/a-shell +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +echo >>"$at_stdout"; printf "%s\n" "/usr/bin/a-shell +" | \ + $at_diff - "$at_stdout" || at_failed=: +at_fn_check_status 0 $at_status "$at_srcdir/realpath.at:81" +$at_failed && at_fn_log_failure +$at_traceon; } + +{ set +x +printf "%s\n" "$at_srcdir/realpath.at:83: dpkg-realpath /usr/bin/sh" +at_fn_check_prepare_trace "realpath.at:83" +( $at_check_trace; dpkg-realpath /usr/bin/sh +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +echo >>"$at_stdout"; printf "%s\n" "/usr/bin/a-shell +" | \ + $at_diff - "$at_stdout" || at_failed=: +at_fn_check_status 0 $at_status "$at_srcdir/realpath.at:83" +$at_failed && at_fn_log_failure +$at_traceon; } + + + set +x + $at_times_p && times >"$at_times_file" +) 5>&1 2>&1 7>&- | eval $at_tee_pipe +read at_status <"$at_status_file" +#AT_STOP_9 +#AT_START_10 +at_fn_group_banner 10 'divert.at:1' \ + "dpkg-divert options" " " 4 +at_xfail=no +( + printf "%s\n" "10. $at_setup_line: testing $at_desc ..." + $at_traceon + + + + + mkdir -p "dpkginst//testdir" + + +{ set +x +printf "%s\n" "$at_srcdir/divert.at:6: dpkg-divert --version" +at_fn_check_prepare_trace "divert.at:6" +( $at_check_trace; dpkg-divert --version +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/divert.at:6" +$at_failed && at_fn_log_failure +$at_traceon; } + +{ set +x +printf "%s\n" "$at_srcdir/divert.at:7: dpkg-divert --help" +at_fn_check_prepare_trace "divert.at:7" +( $at_check_trace; dpkg-divert --help +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/divert.at:7" +$at_failed && at_fn_log_failure +$at_traceon; } + + +{ set +x +printf "%s\n" "$at_srcdir/divert.at:9: dpkg-divert --admindir" +at_fn_check_prepare_trace "divert.at:9" +( $at_check_trace; dpkg-divert --admindir +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo stderr:; tee stderr <"$at_stderr" +at_fn_diff_devnull "$at_stdout" || at_failed=: +at_fn_check_status 2 $at_status "$at_srcdir/divert.at:9" +$at_failed && at_fn_log_failure +$at_traceon; } + +{ set +x +printf "%s\n" "$at_srcdir/divert.at:10: grep -qE '(takes a value|needs.*argument)' stderr" +at_fn_check_prepare_notrace 'a shell pipeline' "divert.at:10" +( $at_check_trace; grep -qE '(takes a value|needs.*argument)' stderr +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +at_fn_diff_devnull "$at_stdout" || at_failed=: +at_fn_check_status 0 $at_status "$at_srcdir/divert.at:10" +$at_failed && at_fn_log_failure +$at_traceon; } + + +{ set +x +printf "%s\n" "$at_srcdir/divert.at:12: dpkg-divert --admindir=dpkgdb --instdir=dpkginst --jachsmitbju" +at_fn_check_prepare_trace "divert.at:12" +( $at_check_trace; dpkg-divert --admindir=dpkgdb --instdir=dpkginst --jachsmitbju +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo stderr:; tee stderr <"$at_stderr" +at_fn_diff_devnull "$at_stdout" || at_failed=: +at_fn_check_status 2 $at_status "$at_srcdir/divert.at:12" +$at_failed && at_fn_log_failure +$at_traceon; } + +{ set +x +printf "%s\n" "$at_srcdir/divert.at:13: grep -q 'unknown option' stderr" +at_fn_check_prepare_trace "divert.at:13" +( $at_check_trace; grep -q 'unknown option' stderr +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +at_fn_diff_devnull "$at_stdout" || at_failed=: +at_fn_check_status 0 $at_status "$at_srcdir/divert.at:13" +$at_failed && at_fn_log_failure +$at_traceon; } + + +{ set +x +printf "%s\n" "$at_srcdir/divert.at:15: dpkg-divert --admindir=dpkgdb --instdir=dpkginst --add --remove" +at_fn_check_prepare_trace "divert.at:15" +( $at_check_trace; dpkg-divert --admindir=dpkgdb --instdir=dpkginst --add --remove +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo stderr:; tee stderr <"$at_stderr" +at_fn_diff_devnull "$at_stdout" || at_failed=: +at_fn_check_status 2 $at_status "$at_srcdir/divert.at:15" +$at_failed && at_fn_log_failure +$at_traceon; } + +{ set +x +printf "%s\n" "$at_srcdir/divert.at:16: grep -qE '(conflicting|two).*remove.*add.*' stderr" +at_fn_check_prepare_notrace 'a shell pipeline' "divert.at:16" +( $at_check_trace; grep -qE '(conflicting|two).*remove.*add.*' stderr +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +at_fn_diff_devnull "$at_stdout" || at_failed=: +at_fn_check_status 0 $at_status "$at_srcdir/divert.at:16" +$at_failed && at_fn_log_failure +$at_traceon; } + + +{ set +x +printf "%s\n" "$at_srcdir/divert.at:18: dpkg-divert --admindir=dpkgdb --instdir=dpkginst --divert" +at_fn_check_prepare_trace "divert.at:18" +( $at_check_trace; dpkg-divert --admindir=dpkgdb --instdir=dpkginst --divert +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo stderr:; tee stderr <"$at_stderr" +at_fn_diff_devnull "$at_stdout" || at_failed=: +at_fn_check_status 2 $at_status "$at_srcdir/divert.at:18" +$at_failed && at_fn_log_failure +$at_traceon; } + +{ set +x +printf "%s\n" "$at_srcdir/divert.at:19: grep -qE '(takes a value|needs.*argument)' stderr" +at_fn_check_prepare_notrace 'a shell pipeline' "divert.at:19" +( $at_check_trace; grep -qE '(takes a value|needs.*argument)' stderr +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +at_fn_diff_devnull "$at_stdout" || at_failed=: +at_fn_check_status 0 $at_status "$at_srcdir/divert.at:19" +$at_failed && at_fn_log_failure +$at_traceon; } + + +{ set +x +printf "%s\n" "$at_srcdir/divert.at:21: dpkg-divert --admindir=dpkgdb --instdir=dpkginst --divert foo" +at_fn_check_prepare_trace "divert.at:21" +( $at_check_trace; dpkg-divert --admindir=dpkgdb --instdir=dpkginst --divert foo +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo stderr:; tee stderr <"$at_stderr" +at_fn_diff_devnull "$at_stdout" || at_failed=: +at_fn_check_status 2 $at_status "$at_srcdir/divert.at:21" +$at_failed && at_fn_log_failure +$at_traceon; } + +{ set +x +printf "%s\n" "$at_srcdir/divert.at:22: grep -q 'absolute' stderr" +at_fn_check_prepare_trace "divert.at:22" +( $at_check_trace; grep -q 'absolute' stderr +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +at_fn_diff_devnull "$at_stdout" || at_failed=: +at_fn_check_status 0 $at_status "$at_srcdir/divert.at:22" +$at_failed && at_fn_log_failure +$at_traceon; } + + +{ set +x +printf "%s\n" "$at_srcdir/divert.at:24: dpkg-divert --admindir=dpkgdb --instdir=dpkginst --divert \"/foo +bar\"" +at_fn_check_prepare_notrace 'an embedded newline' "divert.at:24" +( $at_check_trace; dpkg-divert --admindir=dpkgdb --instdir=dpkginst --divert "/foo +bar" +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo stderr:; tee stderr <"$at_stderr" +at_fn_diff_devnull "$at_stdout" || at_failed=: +at_fn_check_status 2 $at_status "$at_srcdir/divert.at:24" +$at_failed && at_fn_log_failure +$at_traceon; } + +{ set +x +printf "%s\n" "$at_srcdir/divert.at:26: grep -q 'newline' stderr" +at_fn_check_prepare_trace "divert.at:26" +( $at_check_trace; grep -q 'newline' stderr +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +at_fn_diff_devnull "$at_stdout" || at_failed=: +at_fn_check_status 0 $at_status "$at_srcdir/divert.at:26" +$at_failed && at_fn_log_failure +$at_traceon; } + + +{ set +x +printf "%s\n" "$at_srcdir/divert.at:28: dpkg-divert --admindir=dpkgdb --instdir=dpkginst --package" +at_fn_check_prepare_trace "divert.at:28" +( $at_check_trace; dpkg-divert --admindir=dpkgdb --instdir=dpkginst --package +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo stderr:; tee stderr <"$at_stderr" +at_fn_diff_devnull "$at_stdout" || at_failed=: +at_fn_check_status 2 $at_status "$at_srcdir/divert.at:28" +$at_failed && at_fn_log_failure +$at_traceon; } + +{ set +x +printf "%s\n" "$at_srcdir/divert.at:29: grep -qE '(takes a value|needs.*argument)' stderr" +at_fn_check_prepare_notrace 'a shell pipeline' "divert.at:29" +( $at_check_trace; grep -qE '(takes a value|needs.*argument)' stderr +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +at_fn_diff_devnull "$at_stdout" || at_failed=: +at_fn_check_status 0 $at_status "$at_srcdir/divert.at:29" +$at_failed && at_fn_log_failure +$at_traceon; } + + +{ set +x +printf "%s\n" "$at_srcdir/divert.at:31: dpkg-divert --admindir=dpkgdb --instdir=dpkginst --package \"foo +bar\"" +at_fn_check_prepare_notrace 'an embedded newline' "divert.at:31" +( $at_check_trace; dpkg-divert --admindir=dpkgdb --instdir=dpkginst --package "foo +bar" +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo stderr:; tee stderr <"$at_stderr" +at_fn_diff_devnull "$at_stdout" || at_failed=: +at_fn_check_status 2 $at_status "$at_srcdir/divert.at:31" +$at_failed && at_fn_log_failure +$at_traceon; } + +{ set +x +printf "%s\n" "$at_srcdir/divert.at:33: grep -q 'newline' stderr" +at_fn_check_prepare_trace "divert.at:33" +( $at_check_trace; grep -q 'newline' stderr +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +at_fn_diff_devnull "$at_stdout" || at_failed=: +at_fn_check_status 0 $at_status "$at_srcdir/divert.at:33" +$at_failed && at_fn_log_failure +$at_traceon; } + + +{ set +x +printf "%s\n" "$at_srcdir/divert.at:35: dpkg-divert --admindir=dpkgdb --instdir=dpkginst --add" +at_fn_check_prepare_trace "divert.at:35" +( $at_check_trace; dpkg-divert --admindir=dpkgdb --instdir=dpkginst --add +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo stderr:; tee stderr <"$at_stderr" +at_fn_diff_devnull "$at_stdout" || at_failed=: +at_fn_check_status 2 $at_status "$at_srcdir/divert.at:35" +$at_failed && at_fn_log_failure +$at_traceon; } + +{ set +x +printf "%s\n" "$at_srcdir/divert.at:36: grep -q 'needs a single argument' stderr" +at_fn_check_prepare_trace "divert.at:36" +( $at_check_trace; grep -q 'needs a single argument' stderr +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +at_fn_diff_devnull "$at_stdout" || at_failed=: +at_fn_check_status 0 $at_status "$at_srcdir/divert.at:36" +$at_failed && at_fn_log_failure +$at_traceon; } + + +{ set +x +printf "%s\n" "$at_srcdir/divert.at:38: dpkg-divert --admindir=dpkgdb --instdir=dpkginst --add foo" +at_fn_check_prepare_trace "divert.at:38" +( $at_check_trace; dpkg-divert --admindir=dpkgdb --instdir=dpkginst --add foo +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo stderr:; tee stderr <"$at_stderr" +at_fn_diff_devnull "$at_stdout" || at_failed=: +at_fn_check_status 2 $at_status "$at_srcdir/divert.at:38" +$at_failed && at_fn_log_failure +$at_traceon; } + +{ set +x +printf "%s\n" "$at_srcdir/divert.at:39: grep -q 'absolute' stderr" +at_fn_check_prepare_trace "divert.at:39" +( $at_check_trace; grep -q 'absolute' stderr +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +at_fn_diff_devnull "$at_stdout" || at_failed=: +at_fn_check_status 0 $at_status "$at_srcdir/divert.at:39" +$at_failed && at_fn_log_failure +$at_traceon; } + + +{ set +x +printf "%s\n" "$at_srcdir/divert.at:41: dpkg-divert --admindir=dpkgdb --instdir=dpkginst --add \"/foo +bar\"" +at_fn_check_prepare_notrace 'an embedded newline' "divert.at:41" +( $at_check_trace; dpkg-divert --admindir=dpkgdb --instdir=dpkginst --add "/foo +bar" +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo stderr:; tee stderr <"$at_stderr" +at_fn_diff_devnull "$at_stdout" || at_failed=: +at_fn_check_status 2 $at_status "$at_srcdir/divert.at:41" +$at_failed && at_fn_log_failure +$at_traceon; } + +{ set +x +printf "%s\n" "$at_srcdir/divert.at:43: grep -q 'newline' stderr" +at_fn_check_prepare_trace "divert.at:43" +( $at_check_trace; grep -q 'newline' stderr +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +at_fn_diff_devnull "$at_stdout" || at_failed=: +at_fn_check_status 0 $at_status "$at_srcdir/divert.at:43" +$at_failed && at_fn_log_failure +$at_traceon; } + + +{ set +x +printf "%s\n" "$at_srcdir/divert.at:45: dpkg-divert --admindir=dpkgdb --instdir=dpkginst --add \"/testdir\"" +at_fn_check_prepare_trace "divert.at:45" +( $at_check_trace; dpkg-divert --admindir=dpkgdb --instdir=dpkginst --add "/testdir" +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo stderr:; tee stderr <"$at_stderr" +at_fn_diff_devnull "$at_stdout" || at_failed=: +at_fn_check_status 2 $at_status "$at_srcdir/divert.at:45" +$at_failed && at_fn_log_failure +$at_traceon; } + +{ set +x +printf "%s\n" "$at_srcdir/divert.at:46: grep -qE 'director(y|ies)' stderr" +at_fn_check_prepare_notrace 'a shell pipeline' "divert.at:46" +( $at_check_trace; grep -qE 'director(y|ies)' stderr +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +at_fn_diff_devnull "$at_stdout" || at_failed=: +at_fn_check_status 0 $at_status "$at_srcdir/divert.at:46" +$at_failed && at_fn_log_failure +$at_traceon; } + + +{ set +x +printf "%s\n" "$at_srcdir/divert.at:48: dpkg-divert --admindir=dpkgdb --instdir=dpkginst --add --divert bar /foo/bar" +at_fn_check_prepare_trace "divert.at:48" +( $at_check_trace; dpkg-divert --admindir=dpkgdb --instdir=dpkginst --add --divert bar /foo/bar +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo stderr:; tee stderr <"$at_stderr" +at_fn_diff_devnull "$at_stdout" || at_failed=: +at_fn_check_status 2 $at_status "$at_srcdir/divert.at:48" +$at_failed && at_fn_log_failure +$at_traceon; } + +{ set +x +printf "%s\n" "$at_srcdir/divert.at:49: grep -q 'absolute' stderr" +at_fn_check_prepare_trace "divert.at:49" +( $at_check_trace; grep -q 'absolute' stderr +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +at_fn_diff_devnull "$at_stdout" || at_failed=: +at_fn_check_status 0 $at_status "$at_srcdir/divert.at:49" +$at_failed && at_fn_log_failure +$at_traceon; } + + +{ set +x +printf "%s\n" "$at_srcdir/divert.at:51: dpkg-divert --admindir=dpkgdb --instdir=dpkginst --remove" +at_fn_check_prepare_trace "divert.at:51" +( $at_check_trace; dpkg-divert --admindir=dpkgdb --instdir=dpkginst --remove +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo stderr:; tee stderr <"$at_stderr" +at_fn_diff_devnull "$at_stdout" || at_failed=: +at_fn_check_status 2 $at_status "$at_srcdir/divert.at:51" +$at_failed && at_fn_log_failure +$at_traceon; } + +{ set +x +printf "%s\n" "$at_srcdir/divert.at:52: grep -q 'needs a single argument' stderr" +at_fn_check_prepare_trace "divert.at:52" +( $at_check_trace; grep -q 'needs a single argument' stderr +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +at_fn_diff_devnull "$at_stdout" || at_failed=: +at_fn_check_status 0 $at_status "$at_srcdir/divert.at:52" +$at_failed && at_fn_log_failure +$at_traceon; } + + +{ set +x +printf "%s\n" "$at_srcdir/divert.at:54: dpkg-divert --admindir=dpkgdb --instdir=dpkginst --remove foo" +at_fn_check_prepare_trace "divert.at:54" +( $at_check_trace; dpkg-divert --admindir=dpkgdb --instdir=dpkginst --remove foo +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo stderr:; tee stderr <"$at_stderr" +at_fn_diff_devnull "$at_stdout" || at_failed=: +at_fn_check_status 2 $at_status "$at_srcdir/divert.at:54" +$at_failed && at_fn_log_failure +$at_traceon; } + +{ set +x +printf "%s\n" "$at_srcdir/divert.at:55: grep -q 'absolute' stderr" +at_fn_check_prepare_trace "divert.at:55" +( $at_check_trace; grep -q 'absolute' stderr +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +at_fn_diff_devnull "$at_stdout" || at_failed=: +at_fn_check_status 0 $at_status "$at_srcdir/divert.at:55" +$at_failed && at_fn_log_failure +$at_traceon; } + + +{ set +x +printf "%s\n" "$at_srcdir/divert.at:57: dpkg-divert --admindir=dpkgdb --instdir=dpkginst --remove \"/foo +bar\"" +at_fn_check_prepare_notrace 'an embedded newline' "divert.at:57" +( $at_check_trace; dpkg-divert --admindir=dpkgdb --instdir=dpkginst --remove "/foo +bar" +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo stderr:; tee stderr <"$at_stderr" +at_fn_diff_devnull "$at_stdout" || at_failed=: +at_fn_check_status 2 $at_status "$at_srcdir/divert.at:57" +$at_failed && at_fn_log_failure +$at_traceon; } + +{ set +x +printf "%s\n" "$at_srcdir/divert.at:59: grep -q 'newline' stderr" +at_fn_check_prepare_trace "divert.at:59" +( $at_check_trace; grep -q 'newline' stderr +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +at_fn_diff_devnull "$at_stdout" || at_failed=: +at_fn_check_status 0 $at_status "$at_srcdir/divert.at:59" +$at_failed && at_fn_log_failure +$at_traceon; } + + +{ set +x +printf "%s\n" "$at_srcdir/divert.at:61: dpkg-divert --admindir=dpkgdb --instdir=dpkginst --listpackage" +at_fn_check_prepare_trace "divert.at:61" +( $at_check_trace; dpkg-divert --admindir=dpkgdb --instdir=dpkginst --listpackage +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo stderr:; tee stderr <"$at_stderr" +at_fn_diff_devnull "$at_stdout" || at_failed=: +at_fn_check_status 2 $at_status "$at_srcdir/divert.at:61" +$at_failed && at_fn_log_failure +$at_traceon; } + +{ set +x +printf "%s\n" "$at_srcdir/divert.at:62: grep -q 'needs a single argument' stderr" +at_fn_check_prepare_trace "divert.at:62" +( $at_check_trace; grep -q 'needs a single argument' stderr +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +at_fn_diff_devnull "$at_stdout" || at_failed=: +at_fn_check_status 0 $at_status "$at_srcdir/divert.at:62" +$at_failed && at_fn_log_failure +$at_traceon; } + + +{ set +x +printf "%s\n" "$at_srcdir/divert.at:64: dpkg-divert --admindir=dpkgdb --instdir=dpkginst --listpackage foo" +at_fn_check_prepare_trace "divert.at:64" +( $at_check_trace; dpkg-divert --admindir=dpkgdb --instdir=dpkginst --listpackage foo +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo stderr:; tee stderr <"$at_stderr" +at_fn_diff_devnull "$at_stdout" || at_failed=: +at_fn_check_status 2 $at_status "$at_srcdir/divert.at:64" +$at_failed && at_fn_log_failure +$at_traceon; } + +{ set +x +printf "%s\n" "$at_srcdir/divert.at:65: grep -q 'absolute' stderr" +at_fn_check_prepare_trace "divert.at:65" +( $at_check_trace; grep -q 'absolute' stderr +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +at_fn_diff_devnull "$at_stdout" || at_failed=: +at_fn_check_status 0 $at_status "$at_srcdir/divert.at:65" +$at_failed && at_fn_log_failure +$at_traceon; } + + +{ set +x +printf "%s\n" "$at_srcdir/divert.at:67: dpkg-divert --admindir=dpkgdb --instdir=dpkginst --listpackage \"/foo +bar\"" +at_fn_check_prepare_notrace 'an embedded newline' "divert.at:67" +( $at_check_trace; dpkg-divert --admindir=dpkgdb --instdir=dpkginst --listpackage "/foo +bar" +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo stderr:; tee stderr <"$at_stderr" +at_fn_diff_devnull "$at_stdout" || at_failed=: +at_fn_check_status 2 $at_status "$at_srcdir/divert.at:67" +$at_failed && at_fn_log_failure +$at_traceon; } + +{ set +x +printf "%s\n" "$at_srcdir/divert.at:69: grep -q 'newline' stderr" +at_fn_check_prepare_trace "divert.at:69" +( $at_check_trace; grep -q 'newline' stderr +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +at_fn_diff_devnull "$at_stdout" || at_failed=: +at_fn_check_status 0 $at_status "$at_srcdir/divert.at:69" +$at_failed && at_fn_log_failure +$at_traceon; } + + +{ set +x +printf "%s\n" "$at_srcdir/divert.at:71: dpkg-divert --admindir=dpkgdb --instdir=dpkginst --truename" +at_fn_check_prepare_trace "divert.at:71" +( $at_check_trace; dpkg-divert --admindir=dpkgdb --instdir=dpkginst --truename +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo stderr:; tee stderr <"$at_stderr" +at_fn_diff_devnull "$at_stdout" || at_failed=: +at_fn_check_status 2 $at_status "$at_srcdir/divert.at:71" +$at_failed && at_fn_log_failure +$at_traceon; } + +{ set +x +printf "%s\n" "$at_srcdir/divert.at:72: grep -q 'needs a single argument' stderr" +at_fn_check_prepare_trace "divert.at:72" +( $at_check_trace; grep -q 'needs a single argument' stderr +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +at_fn_diff_devnull "$at_stdout" || at_failed=: +at_fn_check_status 0 $at_status "$at_srcdir/divert.at:72" +$at_failed && at_fn_log_failure +$at_traceon; } + + +{ set +x +printf "%s\n" "$at_srcdir/divert.at:74: dpkg-divert --admindir=dpkgdb --instdir=dpkginst --truename foo" +at_fn_check_prepare_trace "divert.at:74" +( $at_check_trace; dpkg-divert --admindir=dpkgdb --instdir=dpkginst --truename foo +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo stderr:; tee stderr <"$at_stderr" +at_fn_diff_devnull "$at_stdout" || at_failed=: +at_fn_check_status 2 $at_status "$at_srcdir/divert.at:74" +$at_failed && at_fn_log_failure +$at_traceon; } + +{ set +x +printf "%s\n" "$at_srcdir/divert.at:75: grep -q 'absolute' stderr" +at_fn_check_prepare_trace "divert.at:75" +( $at_check_trace; grep -q 'absolute' stderr +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +at_fn_diff_devnull "$at_stdout" || at_failed=: +at_fn_check_status 0 $at_status "$at_srcdir/divert.at:75" +$at_failed && at_fn_log_failure +$at_traceon; } + + +{ set +x +printf "%s\n" "$at_srcdir/divert.at:77: dpkg-divert --admindir=dpkgdb --instdir=dpkginst --truename \"/foo +bar\"" +at_fn_check_prepare_notrace 'an embedded newline' "divert.at:77" +( $at_check_trace; dpkg-divert --admindir=dpkgdb --instdir=dpkginst --truename "/foo +bar" +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo stderr:; tee stderr <"$at_stderr" +at_fn_diff_devnull "$at_stdout" || at_failed=: +at_fn_check_status 2 $at_status "$at_srcdir/divert.at:77" +$at_failed && at_fn_log_failure +$at_traceon; } + +{ set +x +printf "%s\n" "$at_srcdir/divert.at:79: grep -q 'newline' stderr" +at_fn_check_prepare_trace "divert.at:79" +( $at_check_trace; grep -q 'newline' stderr +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +at_fn_diff_devnull "$at_stdout" || at_failed=: +at_fn_check_status 0 $at_status "$at_srcdir/divert.at:79" +$at_failed && at_fn_log_failure +$at_traceon; } + + + set +x + $at_times_p && times >"$at_times_file" +) 5>&1 2>&1 7>&- | eval $at_tee_pipe +read at_status <"$at_status_file" +#AT_STOP_10 +#AT_START_11 +at_fn_group_banner 11 'divert.at:83' \ + "dpkg-divert query (empty db)" " " 4 +at_xfail=no +( + printf "%s\n" "11. $at_setup_line: testing $at_desc ..." + $at_traceon + + + + + mkdir -p "dpkgdb" + : >dpkgdb/diversions + + +{ set +x +printf "%s\n" "$at_srcdir/divert.at:88: dpkg-divert --admindir=dpkgdb --instdir=dpkginst --list" +at_fn_check_prepare_trace "divert.at:88" +( $at_check_trace; dpkg-divert --admindir=dpkgdb --instdir=dpkginst --list +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +at_fn_diff_devnull "$at_stdout" || at_failed=: +at_fn_check_status 0 $at_status "$at_srcdir/divert.at:88" +$at_failed && at_fn_log_failure +$at_traceon; } + +{ set +x +printf "%s\n" "$at_srcdir/divert.at:89: dpkg-divert --admindir=dpkgdb --instdir=dpkginst --list '*'" +at_fn_check_prepare_trace "divert.at:89" +( $at_check_trace; dpkg-divert --admindir=dpkgdb --instdir=dpkginst --list '*' +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +at_fn_diff_devnull "$at_stdout" || at_failed=: +at_fn_check_status 0 $at_status "$at_srcdir/divert.at:89" +$at_failed && at_fn_log_failure +$at_traceon; } + +{ set +x +printf "%s\n" "$at_srcdir/divert.at:90: dpkg-divert --admindir=dpkgdb --instdir=dpkginst --list 'baz'" +at_fn_check_prepare_trace "divert.at:90" +( $at_check_trace; dpkg-divert --admindir=dpkgdb --instdir=dpkginst --list 'baz' +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +at_fn_diff_devnull "$at_stdout" || at_failed=: +at_fn_check_status 0 $at_status "$at_srcdir/divert.at:90" +$at_failed && at_fn_log_failure +$at_traceon; } + + + set +x + $at_times_p && times >"$at_times_file" +) 5>&1 2>&1 7>&- | eval $at_tee_pipe +read at_status <"$at_status_file" +#AT_STOP_11 +#AT_START_12 +at_fn_group_banner 12 'divert.at:94' \ + "dpkg-divert query (list)" " " 4 +at_xfail=no +( + printf "%s\n" "12. $at_setup_line: testing $at_desc ..." + $at_traceon + + + + + mkdir -p "dpkgdb" + cat >dpkgdb/diversions <<'_ATEOF' +/bin/sh +/bin/sh.distrib +dash +/usr/share/man/man1/sh.1.gz +/usr/share/man/man1/sh.distrib.1.gz +dash +/usr/bin/nm +/usr/bin/nm.single +binutils-multiarch +_ATEOF + + + + + + + + +{ set +x +printf "%s\n" "$at_srcdir/divert.at:118: dpkg-divert --admindir=dpkgdb --instdir=dpkginst --list" +at_fn_check_prepare_trace "divert.at:118" +( $at_check_trace; dpkg-divert --admindir=dpkgdb --instdir=dpkginst --list +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +echo >>"$at_stdout"; printf "%s\n" "diversion of /usr/bin/nm to /usr/bin/nm.single by binutils-multiarch +diversion of /usr/share/man/man1/sh.1.gz to /usr/share/man/man1/sh.distrib.1.gz by dash +diversion of /bin/sh to /bin/sh.distrib by dash +" | \ + $at_diff - "$at_stdout" || at_failed=: +at_fn_check_status 0 $at_status "$at_srcdir/divert.at:118" +$at_failed && at_fn_log_failure +$at_traceon; } + +{ set +x +printf "%s\n" "$at_srcdir/divert.at:119: dpkg-divert --admindir=dpkgdb --instdir=dpkginst --list '*'" +at_fn_check_prepare_trace "divert.at:119" +( $at_check_trace; dpkg-divert --admindir=dpkgdb --instdir=dpkginst --list '*' +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +echo >>"$at_stdout"; printf "%s\n" "diversion of /usr/bin/nm to /usr/bin/nm.single by binutils-multiarch +diversion of /usr/share/man/man1/sh.1.gz to /usr/share/man/man1/sh.distrib.1.gz by dash +diversion of /bin/sh to /bin/sh.distrib by dash +" | \ + $at_diff - "$at_stdout" || at_failed=: +at_fn_check_status 0 $at_status "$at_srcdir/divert.at:119" +$at_failed && at_fn_log_failure +$at_traceon; } + +{ set +x +printf "%s\n" "$at_srcdir/divert.at:120: dpkg-divert --admindir=dpkgdb --instdir=dpkginst --list ''" +at_fn_check_prepare_trace "divert.at:120" +( $at_check_trace; dpkg-divert --admindir=dpkgdb --instdir=dpkginst --list '' +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +at_fn_diff_devnull "$at_stdout" || at_failed=: +at_fn_check_status 0 $at_status "$at_srcdir/divert.at:120" +$at_failed && at_fn_log_failure +$at_traceon; } + + +{ set +x +printf "%s\n" "$at_srcdir/divert.at:122: dpkg-divert --admindir=dpkgdb --instdir=dpkginst --list '???????'" +at_fn_check_prepare_trace "divert.at:122" +( $at_check_trace; dpkg-divert --admindir=dpkgdb --instdir=dpkginst --list '???????' +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +echo >>"$at_stdout"; printf "%s\n" "diversion of /bin/sh to /bin/sh.distrib by dash +" | \ + $at_diff - "$at_stdout" || at_failed=: +at_fn_check_status 0 $at_status "$at_srcdir/divert.at:122" +$at_failed && at_fn_log_failure +$at_traceon; } + +{ set +x +printf "%s\n" "$at_srcdir/divert.at:123: dpkg-divert --admindir=dpkgdb --instdir=dpkginst --list '*/sh'" +at_fn_check_prepare_trace "divert.at:123" +( $at_check_trace; dpkg-divert --admindir=dpkgdb --instdir=dpkginst --list '*/sh' +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +echo >>"$at_stdout"; printf "%s\n" "diversion of /bin/sh to /bin/sh.distrib by dash +" | \ + $at_diff - "$at_stdout" || at_failed=: +at_fn_check_status 0 $at_status "$at_srcdir/divert.at:123" +$at_failed && at_fn_log_failure +$at_traceon; } + +{ set +x +printf "%s\n" "$at_srcdir/divert.at:124: dpkg-divert --admindir=dpkgdb --instdir=dpkginst --list '/bin/*'" +at_fn_check_prepare_trace "divert.at:124" +( $at_check_trace; dpkg-divert --admindir=dpkgdb --instdir=dpkginst --list '/bin/*' +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +echo >>"$at_stdout"; printf "%s\n" "diversion of /bin/sh to /bin/sh.distrib by dash +" | \ + $at_diff - "$at_stdout" || at_failed=: +at_fn_check_status 0 $at_status "$at_srcdir/divert.at:124" +$at_failed && at_fn_log_failure +$at_traceon; } + +{ set +x +printf "%s\n" "$at_srcdir/divert.at:125: dpkg-divert --admindir=dpkgdb --instdir=dpkginst --list binutils-multiarch" +at_fn_check_prepare_trace "divert.at:125" +( $at_check_trace; dpkg-divert --admindir=dpkgdb --instdir=dpkginst --list binutils-multiarch +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +echo >>"$at_stdout"; printf "%s\n" "diversion of /usr/bin/nm to /usr/bin/nm.single by binutils-multiarch +" | \ + $at_diff - "$at_stdout" || at_failed=: +at_fn_check_status 0 $at_status "$at_srcdir/divert.at:125" +$at_failed && at_fn_log_failure +$at_traceon; } + +{ set +x +printf "%s\n" "$at_srcdir/divert.at:126: dpkg-divert --admindir=dpkgdb --instdir=dpkginst --list /bin/sh" +at_fn_check_prepare_trace "divert.at:126" +( $at_check_trace; dpkg-divert --admindir=dpkgdb --instdir=dpkginst --list /bin/sh +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +echo >>"$at_stdout"; printf "%s\n" "diversion of /bin/sh to /bin/sh.distrib by dash +" | \ + $at_diff - "$at_stdout" || at_failed=: +at_fn_check_status 0 $at_status "$at_srcdir/divert.at:126" +$at_failed && at_fn_log_failure +$at_traceon; } + +{ set +x +printf "%s\n" "$at_srcdir/divert.at:127: dpkg-divert --admindir=dpkgdb --instdir=dpkginst --list -- /bin/sh" +at_fn_check_prepare_trace "divert.at:127" +( $at_check_trace; dpkg-divert --admindir=dpkgdb --instdir=dpkginst --list -- /bin/sh +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +echo >>"$at_stdout"; printf "%s\n" "diversion of /bin/sh to /bin/sh.distrib by dash +" | \ + $at_diff - "$at_stdout" || at_failed=: +at_fn_check_status 0 $at_status "$at_srcdir/divert.at:127" +$at_failed && at_fn_log_failure +$at_traceon; } + +{ set +x +printf "%s\n" "$at_srcdir/divert.at:128: dpkg-divert --admindir=dpkgdb --instdir=dpkginst --list /usr/bin/nm.single" +at_fn_check_prepare_trace "divert.at:128" +( $at_check_trace; dpkg-divert --admindir=dpkgdb --instdir=dpkginst --list /usr/bin/nm.single +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +echo >>"$at_stdout"; printf "%s\n" "diversion of /usr/bin/nm to /usr/bin/nm.single by binutils-multiarch +" | \ + $at_diff - "$at_stdout" || at_failed=: +at_fn_check_status 0 $at_status "$at_srcdir/divert.at:128" +$at_failed && at_fn_log_failure +$at_traceon; } + +{ set +x +printf "%s\n" "$at_srcdir/divert.at:129: dpkg-divert --admindir=dpkgdb --instdir=dpkginst --list /bin/sh /usr/share/man/man1/sh.1.gz" +at_fn_check_prepare_trace "divert.at:129" +( $at_check_trace; dpkg-divert --admindir=dpkgdb --instdir=dpkginst --list /bin/sh /usr/share/man/man1/sh.1.gz +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +echo >>"$at_stdout"; printf "%s\n" "diversion of /usr/share/man/man1/sh.1.gz to /usr/share/man/man1/sh.distrib.1.gz by dash +diversion of /bin/sh to /bin/sh.distrib by dash +" | \ + $at_diff - "$at_stdout" || at_failed=: +at_fn_check_status 0 $at_status "$at_srcdir/divert.at:129" +$at_failed && at_fn_log_failure +$at_traceon; } + + + set +x + $at_times_p && times >"$at_times_file" +) 5>&1 2>&1 7>&- | eval $at_tee_pipe +read at_status <"$at_status_file" +#AT_STOP_12 +#AT_START_13 +at_fn_group_banner 13 'divert.at:134' \ + "dpkg-divert query (listpackage + truename)" " " 4 +at_xfail=no +( + printf "%s\n" "13. $at_setup_line: testing $at_desc ..." + $at_traceon + + + + + mkdir -p "dpkgdb" + cat >dpkgdb/diversions <<'_ATEOF' +/bin/sh +/bin/sh.distrib +dash +/bin/true +/bin/true.coreutils +: +_ATEOF + + + +{ set +x +printf "%s\n" "$at_srcdir/divert.at:145: dpkg-divert --admindir=dpkgdb --instdir=dpkginst --listpackage /bin/sh" +at_fn_check_prepare_trace "divert.at:145" +( $at_check_trace; dpkg-divert --admindir=dpkgdb --instdir=dpkginst --listpackage /bin/sh +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +echo >>"$at_stdout"; printf "%s\n" "dash +" | \ + $at_diff - "$at_stdout" || at_failed=: +at_fn_check_status 0 $at_status "$at_srcdir/divert.at:145" +$at_failed && at_fn_log_failure +$at_traceon; } + +{ set +x +printf "%s\n" "$at_srcdir/divert.at:147: dpkg-divert --admindir=dpkgdb --instdir=dpkginst --listpackage /bin/true" +at_fn_check_prepare_trace "divert.at:147" +( $at_check_trace; dpkg-divert --admindir=dpkgdb --instdir=dpkginst --listpackage /bin/true +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +echo >>"$at_stdout"; printf "%s\n" "LOCAL +" | \ + $at_diff - "$at_stdout" || at_failed=: +at_fn_check_status 0 $at_status "$at_srcdir/divert.at:147" +$at_failed && at_fn_log_failure +$at_traceon; } + +{ set +x +printf "%s\n" "$at_srcdir/divert.at:149: dpkg-divert --admindir=dpkgdb --instdir=dpkginst --listpackage /bin/false" +at_fn_check_prepare_trace "divert.at:149" +( $at_check_trace; dpkg-divert --admindir=dpkgdb --instdir=dpkginst --listpackage /bin/false +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +at_fn_diff_devnull "$at_stdout" || at_failed=: +at_fn_check_status 0 $at_status "$at_srcdir/divert.at:149" +$at_failed && at_fn_log_failure +$at_traceon; } + + +{ set +x +printf "%s\n" "$at_srcdir/divert.at:151: dpkg-divert --admindir=dpkgdb --instdir=dpkginst --truename /bin/sh" +at_fn_check_prepare_trace "divert.at:151" +( $at_check_trace; dpkg-divert --admindir=dpkgdb --instdir=dpkginst --truename /bin/sh +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +echo >>"$at_stdout"; printf "%s\n" "/bin/sh.distrib +" | \ + $at_diff - "$at_stdout" || at_failed=: +at_fn_check_status 0 $at_status "$at_srcdir/divert.at:151" +$at_failed && at_fn_log_failure +$at_traceon; } + +{ set +x +printf "%s\n" "$at_srcdir/divert.at:153: dpkg-divert --admindir=dpkgdb --instdir=dpkginst --truename /bin/sh.distrib" +at_fn_check_prepare_trace "divert.at:153" +( $at_check_trace; dpkg-divert --admindir=dpkgdb --instdir=dpkginst --truename /bin/sh.distrib +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +echo >>"$at_stdout"; printf "%s\n" "/bin/sh.distrib +" | \ + $at_diff - "$at_stdout" || at_failed=: +at_fn_check_status 0 $at_status "$at_srcdir/divert.at:153" +$at_failed && at_fn_log_failure +$at_traceon; } + +{ set +x +printf "%s\n" "$at_srcdir/divert.at:155: dpkg-divert --admindir=dpkgdb --instdir=dpkginst --truename /bin/something" +at_fn_check_prepare_trace "divert.at:155" +( $at_check_trace; dpkg-divert --admindir=dpkgdb --instdir=dpkginst --truename /bin/something +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +echo >>"$at_stdout"; printf "%s\n" "/bin/something +" | \ + $at_diff - "$at_stdout" || at_failed=: +at_fn_check_status 0 $at_status "$at_srcdir/divert.at:155" +$at_failed && at_fn_log_failure +$at_traceon; } + + + set +x + $at_times_p && times >"$at_times_file" +) 5>&1 2>&1 7>&- | eval $at_tee_pipe +read at_status <"$at_status_file" +#AT_STOP_13 +#AT_START_14 +at_fn_group_banner 14 'divert.at:160' \ + "dpkg-divert add (local rename)" " " 4 +at_xfail=no +( + printf "%s\n" "14. $at_setup_line: testing $at_desc ..." + $at_traceon + + + + + mkdir -p "dpkginst/$(dirname '/testdir/foo')" + : >dpkginst//testdir/foo + + + mkdir -p "dpkgdb" + : >dpkgdb/diversions + +cat >ref-diversions <<'_ATEOF' +/testdir/foo +/testdir/foo.distrib +: +_ATEOF + + +{ set +x +printf "%s\n" "$at_srcdir/divert.at:170: dpkg-divert --admindir=dpkgdb --instdir=dpkginst --rename --add /testdir/foo" +at_fn_check_prepare_trace "divert.at:170" +( $at_check_trace; dpkg-divert --admindir=dpkgdb --instdir=dpkginst --rename --add /testdir/foo +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +echo stdout:; tee stdout <"$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/divert.at:170" +$at_failed && at_fn_log_failure +$at_traceon; } + +{ set +x +printf "%s\n" "$at_srcdir/divert.at:171: grep -q \"Adding.*local.*diversion.* /testdir/foo.* /testdir/foo.distrib\" stdout" +at_fn_check_prepare_trace "divert.at:171" +( $at_check_trace; grep -q "Adding.*local.*diversion.* /testdir/foo.* /testdir/foo.distrib" stdout +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +at_fn_diff_devnull "$at_stdout" || at_failed=: +at_fn_check_status 0 $at_status "$at_srcdir/divert.at:171" +$at_failed && at_fn_log_failure +$at_traceon; } + + + { set +x +printf "%s\n" "$at_srcdir/divert.at:172: test -e \"dpkginst//testdir/foo\"" +at_fn_check_prepare_trace "divert.at:172" +( $at_check_trace; test -e "dpkginst//testdir/foo" +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +at_fn_diff_devnull "$at_stdout" || at_failed=: +at_fn_check_status 1 $at_status "$at_srcdir/divert.at:172" +$at_failed && at_fn_log_failure +$at_traceon; } + + + + { set +x +printf "%s\n" "$at_srcdir/divert.at:173: test -e \"dpkginst//testdir/foo.distrib\"" +at_fn_check_prepare_trace "divert.at:173" +( $at_check_trace; test -e "dpkginst//testdir/foo.distrib" +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +at_fn_diff_devnull "$at_stdout" || at_failed=: +at_fn_check_status 0 $at_status "$at_srcdir/divert.at:173" +$at_failed && at_fn_log_failure +$at_traceon; } + + +{ set +x +printf "%s\n" "$at_srcdir/divert.at:174: diff -u ref-diversions dpkgdb/diversions" +at_fn_check_prepare_trace "divert.at:174" +( $at_check_trace; diff -u ref-diversions dpkgdb/diversions +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +at_fn_diff_devnull "$at_stdout" || at_failed=: +at_fn_check_status 0 $at_status "$at_srcdir/divert.at:174" +$at_failed && at_fn_log_failure +$at_traceon; } + + + set +x + $at_times_p && times >"$at_times_file" +) 5>&1 2>&1 7>&- | eval $at_tee_pipe +read at_status <"$at_status_file" +#AT_STOP_14 +#AT_START_15 +at_fn_group_banner 15 'divert.at:178' \ + "dpkg-divert add (local no-rename)" " " 4 +at_xfail=no +( + printf "%s\n" "15. $at_setup_line: testing $at_desc ..." + $at_traceon + + + + + mkdir -p "dpkginst/$(dirname '/testdir/foo')" + : >dpkginst//testdir/foo + + + mkdir -p "dpkgdb" + : >dpkgdb/diversions + +cat >ref-diversions <<'_ATEOF' +/testdir/foo +/testdir/foo.distrib +: +_ATEOF + + +{ set +x +printf "%s\n" "$at_srcdir/divert.at:188: dpkg-divert --admindir=dpkgdb --instdir=dpkginst --no-rename --add /testdir/foo" +at_fn_check_prepare_trace "divert.at:188" +( $at_check_trace; dpkg-divert --admindir=dpkgdb --instdir=dpkginst --no-rename --add /testdir/foo +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +echo stdout:; tee stdout <"$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/divert.at:188" +$at_failed && at_fn_log_failure +$at_traceon; } + +{ set +x +printf "%s\n" "$at_srcdir/divert.at:189: grep -q \"Adding.*local.*diversion.* /testdir/foo.* /testdir/foo.distrib\" stdout" +at_fn_check_prepare_trace "divert.at:189" +( $at_check_trace; grep -q "Adding.*local.*diversion.* /testdir/foo.* /testdir/foo.distrib" stdout +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +at_fn_diff_devnull "$at_stdout" || at_failed=: +at_fn_check_status 0 $at_status "$at_srcdir/divert.at:189" +$at_failed && at_fn_log_failure +$at_traceon; } + + + { set +x +printf "%s\n" "$at_srcdir/divert.at:190: test -e \"dpkginst//testdir/foo\"" +at_fn_check_prepare_trace "divert.at:190" +( $at_check_trace; test -e "dpkginst//testdir/foo" +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +at_fn_diff_devnull "$at_stdout" || at_failed=: +at_fn_check_status 0 $at_status "$at_srcdir/divert.at:190" +$at_failed && at_fn_log_failure +$at_traceon; } + + + + { set +x +printf "%s\n" "$at_srcdir/divert.at:191: test -e \"dpkginst//testdir/foo.distrib\"" +at_fn_check_prepare_trace "divert.at:191" +( $at_check_trace; test -e "dpkginst//testdir/foo.distrib" +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +at_fn_diff_devnull "$at_stdout" || at_failed=: +at_fn_check_status 1 $at_status "$at_srcdir/divert.at:191" +$at_failed && at_fn_log_failure +$at_traceon; } + + +{ set +x +printf "%s\n" "$at_srcdir/divert.at:192: diff -u ref-diversions dpkgdb/diversions" +at_fn_check_prepare_trace "divert.at:192" +( $at_check_trace; diff -u ref-diversions dpkgdb/diversions +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +at_fn_diff_devnull "$at_stdout" || at_failed=: +at_fn_check_status 0 $at_status "$at_srcdir/divert.at:192" +$at_failed && at_fn_log_failure +$at_traceon; } + + + set +x + $at_times_p && times >"$at_times_file" +) 5>&1 2>&1 7>&- | eval $at_tee_pipe +read at_status <"$at_status_file" +#AT_STOP_15 +#AT_START_16 +at_fn_group_banner 16 'divert.at:196' \ + "dpkg-divert add (rename quiet)" " " 4 +at_xfail=no +( + printf "%s\n" "16. $at_setup_line: testing $at_desc ..." + $at_traceon + + + + + mkdir -p "dpkginst/$(dirname '/testdir/foo')" + : >dpkginst//testdir/foo + + + mkdir -p "dpkgdb" + : >dpkgdb/diversions + +cat >ref-diversions <<'_ATEOF' +/testdir/foo +/testdir/foo.distrib +: +_ATEOF + + +{ set +x +printf "%s\n" "$at_srcdir/divert.at:206: dpkg-divert --admindir=dpkgdb --instdir=dpkginst --quiet --rename --add /testdir/foo" +at_fn_check_prepare_trace "divert.at:206" +( $at_check_trace; dpkg-divert --admindir=dpkgdb --instdir=dpkginst --quiet --rename --add /testdir/foo +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +at_fn_diff_devnull "$at_stdout" || at_failed=: +at_fn_check_status 0 $at_status "$at_srcdir/divert.at:206" +$at_failed && at_fn_log_failure +$at_traceon; } + + + { set +x +printf "%s\n" "$at_srcdir/divert.at:207: test -e \"dpkginst//testdir/foo\"" +at_fn_check_prepare_trace "divert.at:207" +( $at_check_trace; test -e "dpkginst//testdir/foo" +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +at_fn_diff_devnull "$at_stdout" || at_failed=: +at_fn_check_status 1 $at_status "$at_srcdir/divert.at:207" +$at_failed && at_fn_log_failure +$at_traceon; } + + + + { set +x +printf "%s\n" "$at_srcdir/divert.at:208: test -e \"dpkginst//testdir/foo.distrib\"" +at_fn_check_prepare_trace "divert.at:208" +( $at_check_trace; test -e "dpkginst//testdir/foo.distrib" +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +at_fn_diff_devnull "$at_stdout" || at_failed=: +at_fn_check_status 0 $at_status "$at_srcdir/divert.at:208" +$at_failed && at_fn_log_failure +$at_traceon; } + + +{ set +x +printf "%s\n" "$at_srcdir/divert.at:209: diff -u ref-diversions dpkgdb/diversions" +at_fn_check_prepare_trace "divert.at:209" +( $at_check_trace; diff -u ref-diversions dpkgdb/diversions +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +at_fn_diff_devnull "$at_stdout" || at_failed=: +at_fn_check_status 0 $at_status "$at_srcdir/divert.at:209" +$at_failed && at_fn_log_failure +$at_traceon; } + + + set +x + $at_times_p && times >"$at_times_file" +) 5>&1 2>&1 7>&- | eval $at_tee_pipe +read at_status <"$at_status_file" +#AT_STOP_16 +#AT_START_17 +at_fn_group_banner 17 'divert.at:213' \ + "dpkg-divert add (test rename quiet)" " " 4 +at_xfail=no +( + printf "%s\n" "17. $at_setup_line: testing $at_desc ..." + $at_traceon + + + + + mkdir -p "dpkginst/$(dirname '/testdir/foo')" + : >dpkginst//testdir/foo + + + mkdir -p "dpkgdb" + : >dpkgdb/diversions + + +{ set +x +printf "%s\n" "$at_srcdir/divert.at:219: dpkg-divert --admindir=dpkgdb --instdir=dpkginst --quiet --rename --test /testdir/foo" +at_fn_check_prepare_trace "divert.at:219" +( $at_check_trace; dpkg-divert --admindir=dpkgdb --instdir=dpkginst --quiet --rename --test /testdir/foo +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +at_fn_diff_devnull "$at_stdout" || at_failed=: +at_fn_check_status 0 $at_status "$at_srcdir/divert.at:219" +$at_failed && at_fn_log_failure +$at_traceon; } + + + { set +x +printf "%s\n" "$at_srcdir/divert.at:220: test -e \"dpkginst//testdir/foo\"" +at_fn_check_prepare_trace "divert.at:220" +( $at_check_trace; test -e "dpkginst//testdir/foo" +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +at_fn_diff_devnull "$at_stdout" || at_failed=: +at_fn_check_status 0 $at_status "$at_srcdir/divert.at:220" +$at_failed && at_fn_log_failure +$at_traceon; } + + + + { set +x +printf "%s\n" "$at_srcdir/divert.at:221: test -e \"dpkginst//testdir/foo.distrib\"" +at_fn_check_prepare_trace "divert.at:221" +( $at_check_trace; test -e "dpkginst//testdir/foo.distrib" +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +at_fn_diff_devnull "$at_stdout" || at_failed=: +at_fn_check_status 1 $at_status "$at_srcdir/divert.at:221" +$at_failed && at_fn_log_failure +$at_traceon; } + + +{ set +x +printf "%s\n" "$at_srcdir/divert.at:222: cat dpkgdb/diversions" +at_fn_check_prepare_trace "divert.at:222" +( $at_check_trace; cat dpkgdb/diversions +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +at_fn_diff_devnull "$at_stdout" || at_failed=: +at_fn_check_status 0 $at_status "$at_srcdir/divert.at:222" +$at_failed && at_fn_log_failure +$at_traceon; } + + + set +x + $at_times_p && times >"$at_times_file" +) 5>&1 2>&1 7>&- | eval $at_tee_pipe +read at_status <"$at_status_file" +#AT_STOP_17 +#AT_START_18 +at_fn_group_banner 18 'divert.at:226' \ + "dpkg-divert add (rename missing quiet)" " " 4 +at_xfail=no +( + printf "%s\n" "18. $at_setup_line: testing $at_desc ..." + $at_traceon + + + + + mkdir -p "dpkginst//testdir" + + + mkdir -p "dpkgdb" + : >dpkgdb/diversions + +cat >ref-diversions <<'_ATEOF' +/testdir/foo +/testdir/foo.distrib +: +_ATEOF + + +{ set +x +printf "%s\n" "$at_srcdir/divert.at:236: dpkg-divert --admindir=dpkgdb --instdir=dpkginst --quiet --rename /testdir/foo" +at_fn_check_prepare_trace "divert.at:236" +( $at_check_trace; dpkg-divert --admindir=dpkgdb --instdir=dpkginst --quiet --rename /testdir/foo +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +at_fn_diff_devnull "$at_stdout" || at_failed=: +at_fn_check_status 0 $at_status "$at_srcdir/divert.at:236" +$at_failed && at_fn_log_failure +$at_traceon; } + + + { set +x +printf "%s\n" "$at_srcdir/divert.at:237: test -e \"dpkginst//testdir/foo\"" +at_fn_check_prepare_trace "divert.at:237" +( $at_check_trace; test -e "dpkginst//testdir/foo" +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +at_fn_diff_devnull "$at_stdout" || at_failed=: +at_fn_check_status 1 $at_status "$at_srcdir/divert.at:237" +$at_failed && at_fn_log_failure +$at_traceon; } + + + + { set +x +printf "%s\n" "$at_srcdir/divert.at:238: test -e \"dpkginst//testdir/foo.distrib\"" +at_fn_check_prepare_trace "divert.at:238" +( $at_check_trace; test -e "dpkginst//testdir/foo.distrib" +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +at_fn_diff_devnull "$at_stdout" || at_failed=: +at_fn_check_status 1 $at_status "$at_srcdir/divert.at:238" +$at_failed && at_fn_log_failure +$at_traceon; } + + +{ set +x +printf "%s\n" "$at_srcdir/divert.at:239: diff -u ref-diversions dpkgdb/diversions" +at_fn_check_prepare_trace "divert.at:239" +( $at_check_trace; diff -u ref-diversions dpkgdb/diversions +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +at_fn_diff_devnull "$at_stdout" || at_failed=: +at_fn_check_status 0 $at_status "$at_srcdir/divert.at:239" +$at_failed && at_fn_log_failure +$at_traceon; } + + + set +x + $at_times_p && times >"$at_times_file" +) 5>&1 2>&1 7>&- | eval $at_tee_pipe +read at_status <"$at_status_file" +#AT_STOP_18 +#AT_START_19 +at_fn_group_banner 19 'divert.at:243' \ + "dpkg-divert add (local rename quiet)" " " 4 +at_xfail=no +( + printf "%s\n" "19. $at_setup_line: testing $at_desc ..." + $at_traceon + + + + + mkdir -p "dpkginst/$(dirname '/testdir/foo')" + : >dpkginst//testdir/foo + + + mkdir -p "dpkgdb" + : >dpkgdb/diversions + +cat >ref-diversions <<'_ATEOF' +/testdir/foo +/testdir/foo.distrib +: +_ATEOF + + +{ set +x +printf "%s\n" "$at_srcdir/divert.at:253: dpkg-divert --admindir=dpkgdb --instdir=dpkginst --quiet --local --rename /testdir/foo" +at_fn_check_prepare_trace "divert.at:253" +( $at_check_trace; dpkg-divert --admindir=dpkgdb --instdir=dpkginst --quiet --local --rename /testdir/foo +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +at_fn_diff_devnull "$at_stdout" || at_failed=: +at_fn_check_status 0 $at_status "$at_srcdir/divert.at:253" +$at_failed && at_fn_log_failure +$at_traceon; } + + + { set +x +printf "%s\n" "$at_srcdir/divert.at:254: test -e \"dpkginst//testdir/foo\"" +at_fn_check_prepare_trace "divert.at:254" +( $at_check_trace; test -e "dpkginst//testdir/foo" +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +at_fn_diff_devnull "$at_stdout" || at_failed=: +at_fn_check_status 1 $at_status "$at_srcdir/divert.at:254" +$at_failed && at_fn_log_failure +$at_traceon; } + + + + { set +x +printf "%s\n" "$at_srcdir/divert.at:255: test -e \"dpkginst//testdir/foo.distrib\"" +at_fn_check_prepare_trace "divert.at:255" +( $at_check_trace; test -e "dpkginst//testdir/foo.distrib" +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +at_fn_diff_devnull "$at_stdout" || at_failed=: +at_fn_check_status 0 $at_status "$at_srcdir/divert.at:255" +$at_failed && at_fn_log_failure +$at_traceon; } + + +{ set +x +printf "%s\n" "$at_srcdir/divert.at:256: diff -u ref-diversions dpkgdb/diversions" +at_fn_check_prepare_trace "divert.at:256" +( $at_check_trace; diff -u ref-diversions dpkgdb/diversions +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +at_fn_diff_devnull "$at_stdout" || at_failed=: +at_fn_check_status 0 $at_status "$at_srcdir/divert.at:256" +$at_failed && at_fn_log_failure +$at_traceon; } + + + set +x + $at_times_p && times >"$at_times_file" +) 5>&1 2>&1 7>&- | eval $at_tee_pipe +read at_status <"$at_status_file" +#AT_STOP_19 +#AT_START_20 +at_fn_group_banner 20 'divert.at:260' \ + "dpkg-divert add (package rename quiet)" " " 4 +at_xfail=no +( + printf "%s\n" "20. $at_setup_line: testing $at_desc ..." + $at_traceon + + + + + mkdir -p "dpkgdb" + : >dpkgdb/diversions + +cat >ref-diversions <<'_ATEOF' +/testdir/foo +/testdir/foo.distrib +bash +_ATEOF + + +{ set +x +printf "%s\n" "$at_srcdir/divert.at:269: dpkg-divert --admindir=dpkgdb --instdir=dpkginst --quiet --rename --package bash /testdir/foo" +at_fn_check_prepare_trace "divert.at:269" +( $at_check_trace; dpkg-divert --admindir=dpkgdb --instdir=dpkginst --quiet --rename --package bash /testdir/foo +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +at_fn_diff_devnull "$at_stdout" || at_failed=: +at_fn_check_status 0 $at_status "$at_srcdir/divert.at:269" +$at_failed && at_fn_log_failure +$at_traceon; } + +{ set +x +printf "%s\n" "$at_srcdir/divert.at:270: diff -u ref-diversions dpkgdb/diversions" +at_fn_check_prepare_trace "divert.at:270" +( $at_check_trace; diff -u ref-diversions dpkgdb/diversions +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +at_fn_diff_devnull "$at_stdout" || at_failed=: +at_fn_check_status 0 $at_status "$at_srcdir/divert.at:270" +$at_failed && at_fn_log_failure +$at_traceon; } + + + set +x + $at_times_p && times >"$at_times_file" +) 5>&1 2>&1 7>&- | eval $at_tee_pipe +read at_status <"$at_status_file" +#AT_STOP_20 +#AT_START_21 +at_fn_group_banner 21 'divert.at:274' \ + "dpkg-divert add (rename self-link)" " " 4 +at_xfail=no +( + printf "%s\n" "21. $at_setup_line: testing $at_desc ..." + $at_traceon + + + + + mkdir -p "dpkginst/$(dirname '/testdir/foo')" + : >dpkginst//testdir/foo + + + ln "dpkginst//testdir/foo" "dpkginst//testdir/foo.distrib" + + + mkdir -p "dpkgdb" + : >dpkgdb/diversions + +cat >ref-diversions <<'_ATEOF' +/testdir/foo +/testdir/foo.distrib +: +_ATEOF + + +{ set +x +printf "%s\n" "$at_srcdir/divert.at:285: dpkg-divert --admindir=dpkgdb --instdir=dpkginst --quiet --rename /testdir/foo" +at_fn_check_prepare_trace "divert.at:285" +( $at_check_trace; dpkg-divert --admindir=dpkgdb --instdir=dpkginst --quiet --rename /testdir/foo +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +at_fn_diff_devnull "$at_stdout" || at_failed=: +at_fn_check_status 0 $at_status "$at_srcdir/divert.at:285" +$at_failed && at_fn_log_failure +$at_traceon; } + + + { set +x +printf "%s\n" "$at_srcdir/divert.at:286: test -e \"dpkginst//testdir/foo\"" +at_fn_check_prepare_trace "divert.at:286" +( $at_check_trace; test -e "dpkginst//testdir/foo" +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +at_fn_diff_devnull "$at_stdout" || at_failed=: +at_fn_check_status 1 $at_status "$at_srcdir/divert.at:286" +$at_failed && at_fn_log_failure +$at_traceon; } + + + + { set +x +printf "%s\n" "$at_srcdir/divert.at:287: test -e \"dpkginst//testdir/foo.distrib\"" +at_fn_check_prepare_trace "divert.at:287" +( $at_check_trace; test -e "dpkginst//testdir/foo.distrib" +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +at_fn_diff_devnull "$at_stdout" || at_failed=: +at_fn_check_status 0 $at_status "$at_srcdir/divert.at:287" +$at_failed && at_fn_log_failure +$at_traceon; } + + +{ set +x +printf "%s\n" "$at_srcdir/divert.at:288: diff -u ref-diversions dpkgdb/diversions" +at_fn_check_prepare_trace "divert.at:288" +( $at_check_trace; diff -u ref-diversions dpkgdb/diversions +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +at_fn_diff_devnull "$at_stdout" || at_failed=: +at_fn_check_status 0 $at_status "$at_srcdir/divert.at:288" +$at_failed && at_fn_log_failure +$at_traceon; } + + + set +x + $at_times_p && times >"$at_times_file" +) 5>&1 2>&1 7>&- | eval $at_tee_pipe +read at_status <"$at_status_file" +#AT_STOP_21 +#AT_START_22 +at_fn_group_banner 22 'divert.at:292' \ + "dpkg-divert add (rename other-file)" " " 4 +at_xfail=no +( + printf "%s\n" "22. $at_setup_line: testing $at_desc ..." + $at_traceon + + + + + mkdir -p "dpkginst/$(dirname '/testdir/foo')" + : >dpkginst//testdir/foo + + + mkdir -p "dpkginst/$(dirname '/testdir/foo.distrib')" + : >dpkginst//testdir/foo.distrib + + + mkdir -p "dpkgdb" + : >dpkgdb/diversions + + +{ set +x +printf "%s\n" "$at_srcdir/divert.at:299: dpkg-divert --admindir=dpkgdb --instdir=dpkginst --quiet --rename /testdir/foo" +at_fn_check_prepare_trace "divert.at:299" +( $at_check_trace; dpkg-divert --admindir=dpkgdb --instdir=dpkginst --quiet --rename /testdir/foo +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo stderr:; tee stderr <"$at_stderr" +at_fn_diff_devnull "$at_stdout" || at_failed=: +at_fn_check_status 2 $at_status "$at_srcdir/divert.at:299" +$at_failed && at_fn_log_failure +$at_traceon; } + +{ set +x +printf "%s\n" "$at_srcdir/divert.at:300: grep -q 'error: rename involves overwriting' stderr" +at_fn_check_prepare_trace "divert.at:300" +( $at_check_trace; grep -q 'error: rename involves overwriting' stderr +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +at_fn_diff_devnull "$at_stdout" || at_failed=: +at_fn_check_status 0 $at_status "$at_srcdir/divert.at:300" +$at_failed && at_fn_log_failure +$at_traceon; } + +{ set +x +printf "%s\n" "$at_srcdir/divert.at:301: cat dpkgdb/diversions" +at_fn_check_prepare_trace "divert.at:301" +( $at_check_trace; cat dpkgdb/diversions +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +at_fn_diff_devnull "$at_stdout" || at_failed=: +at_fn_check_status 0 $at_status "$at_srcdir/divert.at:301" +$at_failed && at_fn_log_failure +$at_traceon; } + + + set +x + $at_times_p && times >"$at_times_file" +) 5>&1 2>&1 7>&- | eval $at_tee_pipe +read at_status <"$at_status_file" +#AT_STOP_22 +#AT_START_23 +at_fn_group_banner 23 'divert.at:305' \ + "dpkg-divert add (rename missing dir)" " " 4 +at_xfail=no +( + printf "%s\n" "23. $at_setup_line: testing $at_desc ..." + $at_traceon + + + + + mkdir -p "dpkgdb" + : >dpkgdb/diversions + +cat >ref-diversions <<'_ATEOF' +/testdir/zoo/foo +/testdir/zoo/foo.distrib +: +_ATEOF + + +{ set +x +printf "%s\n" "$at_srcdir/divert.at:314: dpkg-divert --admindir=dpkgdb --instdir=dpkginst --quiet --rename --add /testdir/zoo/foo" +at_fn_check_prepare_trace "divert.at:314" +( $at_check_trace; dpkg-divert --admindir=dpkgdb --instdir=dpkginst --quiet --rename --add /testdir/zoo/foo +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +at_fn_diff_devnull "$at_stdout" || at_failed=: +at_fn_check_status 0 $at_status "$at_srcdir/divert.at:314" +$at_failed && at_fn_log_failure +$at_traceon; } + +{ set +x +printf "%s\n" "$at_srcdir/divert.at:315: diff -u ref-diversions dpkgdb/diversions" +at_fn_check_prepare_trace "divert.at:315" +( $at_check_trace; diff -u ref-diversions dpkgdb/diversions +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +at_fn_diff_devnull "$at_stdout" || at_failed=: +at_fn_check_status 0 $at_status "$at_srcdir/divert.at:315" +$at_failed && at_fn_log_failure +$at_traceon; } + + + set +x + $at_times_p && times >"$at_times_file" +) 5>&1 2>&1 7>&- | eval $at_tee_pipe +read at_status <"$at_status_file" +#AT_STOP_23 +#AT_START_24 +at_fn_group_banner 24 'divert.at:319' \ + "dpkg-divert add (rename read-only dir)" " " 4 +at_xfail=no +( + printf "%s\n" "24. $at_setup_line: testing $at_desc ..." + $at_traceon + + + +printf "%s\n" "divert.at:322" >"$at_check_line_file" +(test -n "$FAKEROOTKEY" || test "$(id -u)" = 0) \ + && at_fn_check_skip 77 "$at_srcdir/divert.at:322" + + + mkdir -p "dpkginst//testdir/rodir" + + + mkdir -p "dpkginst/$(dirname '/testdir/rodir/foo')" + : >dpkginst//testdir/rodir/foo + + + mkdir -p "dpkginst/$(dirname '/testdir/bar')" + : >dpkginst//testdir/bar + + + chmod 500 "dpkginst//testdir/rodir" + + + mkdir -p "dpkgdb" + : >dpkgdb/diversions + + +{ set +x +printf "%s\n" "$at_srcdir/divert.at:330: dpkg-divert --admindir=dpkgdb --instdir=dpkginst --quiet --rename --add /testdir/rodir/foo" +at_fn_check_prepare_trace "divert.at:330" +( $at_check_trace; dpkg-divert --admindir=dpkgdb --instdir=dpkginst --quiet --rename --add /testdir/rodir/foo +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo stderr:; tee stderr <"$at_stderr" +at_fn_diff_devnull "$at_stdout" || at_failed=: +at_fn_check_status 2 $at_status "$at_srcdir/divert.at:330" +$at_failed && at_fn_log_failure +$at_traceon; } + +{ set +x +printf "%s\n" "$at_srcdir/divert.at:332: grep -q 'error: .* Permission denied' stderr" +at_fn_check_prepare_trace "divert.at:332" +( $at_check_trace; grep -q 'error: .* Permission denied' stderr +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +at_fn_diff_devnull "$at_stdout" || at_failed=: +at_fn_check_status 0 $at_status "$at_srcdir/divert.at:332" +$at_failed && at_fn_log_failure +$at_traceon; } + + +{ set +x +printf "%s\n" "$at_srcdir/divert.at:334: dpkg-divert --admindir=dpkgdb --instdir=dpkginst --quiet --rename --divert /testdir/rodir/bar --add /testdir/bar" +at_fn_check_prepare_trace "divert.at:334" +( $at_check_trace; dpkg-divert --admindir=dpkgdb --instdir=dpkginst --quiet --rename --divert /testdir/rodir/bar --add /testdir/bar +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo stderr:; tee stderr <"$at_stderr" +at_fn_diff_devnull "$at_stdout" || at_failed=: +at_fn_check_status 2 $at_status "$at_srcdir/divert.at:334" +$at_failed && at_fn_log_failure +$at_traceon; } + +{ set +x +printf "%s\n" "$at_srcdir/divert.at:336: grep -q 'error: .* Permission denied' stderr" +at_fn_check_prepare_trace "divert.at:336" +( $at_check_trace; grep -q 'error: .* Permission denied' stderr +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +at_fn_diff_devnull "$at_stdout" || at_failed=: +at_fn_check_status 0 $at_status "$at_srcdir/divert.at:336" +$at_failed && at_fn_log_failure +$at_traceon; } + + +{ set +x +printf "%s\n" "$at_srcdir/divert.at:338: cat dpkgdb/diversions" +at_fn_check_prepare_trace "divert.at:338" +( $at_check_trace; cat dpkgdb/diversions +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +at_fn_diff_devnull "$at_stdout" || at_failed=: +at_fn_check_status 0 $at_status "$at_srcdir/divert.at:338" +$at_failed && at_fn_log_failure +$at_traceon; } + + + + chmod 755 "dpkginst//testdir/rodir" + + set +x + $at_times_p && times >"$at_times_file" +) 5>&1 2>&1 7>&- | eval $at_tee_pipe +read at_status <"$at_status_file" +#AT_STOP_24 +#AT_START_25 +at_fn_group_banner 25 'divert.at:343' \ + "dpkg-divert add (rename no-access dir)" " " 4 +at_xfail=no +( + printf "%s\n" "25. $at_setup_line: testing $at_desc ..." + $at_traceon + + + +printf "%s\n" "divert.at:346" >"$at_check_line_file" +(test -n "$FAKEROOTKEY" || test "$(id -u)" = 0) \ + && at_fn_check_skip 77 "$at_srcdir/divert.at:346" + + + mkdir -p "dpkginst/$(dirname '/testdir/foo')" + : >dpkginst//testdir/foo + + + mkdir -p "dpkginst//testdir/nadir" + + + chmod 000 "dpkginst//testdir/nadir" + + + mkdir -p "dpkgdb" + : >dpkgdb/diversions + + +{ set +x +printf "%s\n" "$at_srcdir/divert.at:353: dpkg-divert --admindir=dpkgdb --instdir=dpkginst --rename --add /testdir/nadir/foo" +at_fn_check_prepare_trace "divert.at:353" +( $at_check_trace; dpkg-divert --admindir=dpkgdb --instdir=dpkginst --rename --add /testdir/nadir/foo +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo stderr:; tee stderr <"$at_stderr" +at_fn_diff_devnull "$at_stdout" || at_failed=: +at_fn_check_status 2 $at_status "$at_srcdir/divert.at:353" +$at_failed && at_fn_log_failure +$at_traceon; } + +{ set +x +printf "%s\n" "$at_srcdir/divert.at:354: grep -q 'error: .* Permission denied' stderr" +at_fn_check_prepare_trace "divert.at:354" +( $at_check_trace; grep -q 'error: .* Permission denied' stderr +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +at_fn_diff_devnull "$at_stdout" || at_failed=: +at_fn_check_status 0 $at_status "$at_srcdir/divert.at:354" +$at_failed && at_fn_log_failure +$at_traceon; } + + +{ set +x +printf "%s\n" "$at_srcdir/divert.at:356: dpkg-divert --admindir=dpkgdb --instdir=dpkginst --quiet --rename --divert /testdir/nadir/foo --add /testdir/foo" +at_fn_check_prepare_trace "divert.at:356" +( $at_check_trace; dpkg-divert --admindir=dpkgdb --instdir=dpkginst --quiet --rename --divert /testdir/nadir/foo --add /testdir/foo +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo stderr:; tee stderr <"$at_stderr" +at_fn_diff_devnull "$at_stdout" || at_failed=: +at_fn_check_status 2 $at_status "$at_srcdir/divert.at:356" +$at_failed && at_fn_log_failure +$at_traceon; } + +{ set +x +printf "%s\n" "$at_srcdir/divert.at:358: grep -q 'error: .* Permission denied' stderr" +at_fn_check_prepare_trace "divert.at:358" +( $at_check_trace; grep -q 'error: .* Permission denied' stderr +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +at_fn_diff_devnull "$at_stdout" || at_failed=: +at_fn_check_status 0 $at_status "$at_srcdir/divert.at:358" +$at_failed && at_fn_log_failure +$at_traceon; } + + +{ set +x +printf "%s\n" "$at_srcdir/divert.at:360: cat dpkgdb/diversions" +at_fn_check_prepare_trace "divert.at:360" +( $at_check_trace; cat dpkgdb/diversions +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +at_fn_diff_devnull "$at_stdout" || at_failed=: +at_fn_check_status 0 $at_status "$at_srcdir/divert.at:360" +$at_failed && at_fn_log_failure +$at_traceon; } + + +# On FreeBSD «rm -rf» cannot traverse a directory with mode 000. +rmdir dpkginst/testdir/nadir + + set +x + $at_times_p && times >"$at_times_file" +) 5>&1 2>&1 7>&- | eval $at_tee_pipe +read at_status <"$at_status_file" +#AT_STOP_25 +#AT_START_26 +at_fn_group_banner 26 'divert.at:367' \ + "dpkg-divert add second diversion" " " 4 +at_xfail=no +( + printf "%s\n" "26. $at_setup_line: testing $at_desc ..." + $at_traceon + + + + + mkdir -p "dpkginst//testdir" + + + mkdir -p "dpkgdb" + : >dpkgdb/diversions + + +{ set +x +printf "%s\n" "$at_srcdir/divert.at:373: dpkg-divert --admindir=dpkgdb --instdir=dpkginst --rename --add /testdir/foo" +at_fn_check_prepare_trace "divert.at:373" +( $at_check_trace; dpkg-divert --admindir=dpkgdb --instdir=dpkginst --rename --add /testdir/foo +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +echo stdout:; tee stdout <"$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/divert.at:373" +$at_failed && at_fn_log_failure +$at_traceon; } + +{ set +x +printf "%s\n" "$at_srcdir/divert.at:374: grep -q 'Adding' stdout" +at_fn_check_prepare_trace "divert.at:374" +( $at_check_trace; grep -q 'Adding' stdout +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +at_fn_diff_devnull "$at_stdout" || at_failed=: +at_fn_check_status 0 $at_status "$at_srcdir/divert.at:374" +$at_failed && at_fn_log_failure +$at_traceon; } + + +{ set +x +printf "%s\n" "$at_srcdir/divert.at:376: dpkg-divert --admindir=dpkgdb --instdir=dpkginst --rename --add /testdir/foo" +at_fn_check_prepare_trace "divert.at:376" +( $at_check_trace; dpkg-divert --admindir=dpkgdb --instdir=dpkginst --rename --add /testdir/foo +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +echo stdout:; tee stdout <"$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/divert.at:376" +$at_failed && at_fn_log_failure +$at_traceon; } + +{ set +x +printf "%s\n" "$at_srcdir/divert.at:377: grep -q 'Leaving' stdout" +at_fn_check_prepare_trace "divert.at:377" +( $at_check_trace; grep -q 'Leaving' stdout +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +at_fn_diff_devnull "$at_stdout" || at_failed=: +at_fn_check_status 0 $at_status "$at_srcdir/divert.at:377" +$at_failed && at_fn_log_failure +$at_traceon; } + + +{ set +x +printf "%s\n" "$at_srcdir/divert.at:379: dpkg-divert --admindir=dpkgdb --instdir=dpkginst --rename --add /testdir/foo" +at_fn_check_prepare_trace "divert.at:379" +( $at_check_trace; dpkg-divert --admindir=dpkgdb --instdir=dpkginst --rename --add /testdir/foo +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +echo stdout:; tee stdout <"$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/divert.at:379" +$at_failed && at_fn_log_failure +$at_traceon; } + +{ set +x +printf "%s\n" "$at_srcdir/divert.at:380: grep -q 'Leaving' stdout" +at_fn_check_prepare_trace "divert.at:380" +( $at_check_trace; grep -q 'Leaving' stdout +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +at_fn_diff_devnull "$at_stdout" || at_failed=: +at_fn_check_status 0 $at_status "$at_srcdir/divert.at:380" +$at_failed && at_fn_log_failure +$at_traceon; } + + +{ set +x +printf "%s\n" "$at_srcdir/divert.at:382: dpkg-divert --admindir=dpkgdb --instdir=dpkginst --divert /testdir/foo.bar /testdir/foo" +at_fn_check_prepare_trace "divert.at:382" +( $at_check_trace; dpkg-divert --admindir=dpkgdb --instdir=dpkginst --divert /testdir/foo.bar /testdir/foo +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo stderr:; tee stderr <"$at_stderr" +at_fn_diff_devnull "$at_stdout" || at_failed=: +at_fn_check_status 2 $at_status "$at_srcdir/divert.at:382" +$at_failed && at_fn_log_failure +$at_traceon; } + +{ set +x +printf "%s\n" "$at_srcdir/divert.at:384: grep -q 'clashes' stderr" +at_fn_check_prepare_trace "divert.at:384" +( $at_check_trace; grep -q 'clashes' stderr +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +at_fn_diff_devnull "$at_stdout" || at_failed=: +at_fn_check_status 0 $at_status "$at_srcdir/divert.at:384" +$at_failed && at_fn_log_failure +$at_traceon; } + + +{ set +x +printf "%s\n" "$at_srcdir/divert.at:386: dpkg-divert --admindir=dpkgdb --instdir=dpkginst --package foobar /testdir/foo" +at_fn_check_prepare_trace "divert.at:386" +( $at_check_trace; dpkg-divert --admindir=dpkgdb --instdir=dpkginst --package foobar /testdir/foo +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo stderr:; tee stderr <"$at_stderr" +at_fn_diff_devnull "$at_stdout" || at_failed=: +at_fn_check_status 2 $at_status "$at_srcdir/divert.at:386" +$at_failed && at_fn_log_failure +$at_traceon; } + +{ set +x +printf "%s\n" "$at_srcdir/divert.at:387: grep -q 'clashes' stderr" +at_fn_check_prepare_trace "divert.at:387" +( $at_check_trace; grep -q 'clashes' stderr +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +at_fn_diff_devnull "$at_stdout" || at_failed=: +at_fn_check_status 0 $at_status "$at_srcdir/divert.at:387" +$at_failed && at_fn_log_failure +$at_traceon; } + + +{ set +x +printf "%s\n" "$at_srcdir/divert.at:389: dpkg-divert --admindir=dpkgdb --instdir=dpkginst --divert /testdir/foo.distrib /testdir/bar" +at_fn_check_prepare_trace "divert.at:389" +( $at_check_trace; dpkg-divert --admindir=dpkgdb --instdir=dpkginst --divert /testdir/foo.distrib /testdir/bar +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo stderr:; tee stderr <"$at_stderr" +at_fn_diff_devnull "$at_stdout" || at_failed=: +at_fn_check_status 2 $at_status "$at_srcdir/divert.at:389" +$at_failed && at_fn_log_failure +$at_traceon; } + +{ set +x +printf "%s\n" "$at_srcdir/divert.at:391: grep -q 'clashes' stderr" +at_fn_check_prepare_trace "divert.at:391" +( $at_check_trace; grep -q 'clashes' stderr +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +at_fn_diff_devnull "$at_stdout" || at_failed=: +at_fn_check_status 0 $at_status "$at_srcdir/divert.at:391" +$at_failed && at_fn_log_failure +$at_traceon; } + + +{ set +x +printf "%s\n" "$at_srcdir/divert.at:393: dpkg-divert --admindir=dpkgdb --instdir=dpkginst /testdir/foo.distrib" +at_fn_check_prepare_trace "divert.at:393" +( $at_check_trace; dpkg-divert --admindir=dpkgdb --instdir=dpkginst /testdir/foo.distrib +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo stderr:; tee stderr <"$at_stderr" +at_fn_diff_devnull "$at_stdout" || at_failed=: +at_fn_check_status 2 $at_status "$at_srcdir/divert.at:393" +$at_failed && at_fn_log_failure +$at_traceon; } + +{ set +x +printf "%s\n" "$at_srcdir/divert.at:394: grep -q 'clashes' stderr" +at_fn_check_prepare_trace "divert.at:394" +( $at_check_trace; grep -q 'clashes' stderr +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +at_fn_diff_devnull "$at_stdout" || at_failed=: +at_fn_check_status 0 $at_status "$at_srcdir/divert.at:394" +$at_failed && at_fn_log_failure +$at_traceon; } + + +{ set +x +printf "%s\n" "$at_srcdir/divert.at:396: dpkg-divert --admindir=dpkgdb --instdir=dpkginst --divert /testdir/foo /testdir/bar" +at_fn_check_prepare_trace "divert.at:396" +( $at_check_trace; dpkg-divert --admindir=dpkgdb --instdir=dpkginst --divert /testdir/foo /testdir/bar +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo stderr:; tee stderr <"$at_stderr" +at_fn_diff_devnull "$at_stdout" || at_failed=: +at_fn_check_status 2 $at_status "$at_srcdir/divert.at:396" +$at_failed && at_fn_log_failure +$at_traceon; } + +{ set +x +printf "%s\n" "$at_srcdir/divert.at:397: grep -q 'clashes' stderr" +at_fn_check_prepare_trace "divert.at:397" +( $at_check_trace; grep -q 'clashes' stderr +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +at_fn_diff_devnull "$at_stdout" || at_failed=: +at_fn_check_status 0 $at_status "$at_srcdir/divert.at:397" +$at_failed && at_fn_log_failure +$at_traceon; } + + + set +x + $at_times_p && times >"$at_times_file" +) 5>&1 2>&1 7>&- | eval $at_tee_pipe +read at_status <"$at_status_file" +#AT_STOP_26 +#AT_START_27 +at_fn_group_banner 27 'divert.at:401' \ + "dpkg-divert add third diversion" " " 4 +at_xfail=no +( + printf "%s\n" "27. $at_setup_line: testing $at_desc ..." + $at_traceon + + + + + mkdir -p "dpkginst//testdir" + + + mkdir -p "dpkgdb" + : >dpkgdb/diversions + + +{ set +x +printf "%s\n" "$at_srcdir/divert.at:407: dpkg-divert --admindir=dpkgdb --instdir=dpkginst --rename --add /testdir/foo" +at_fn_check_prepare_trace "divert.at:407" +( $at_check_trace; dpkg-divert --admindir=dpkgdb --instdir=dpkginst --rename --add /testdir/foo +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +echo stdout:; tee stdout <"$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/divert.at:407" +$at_failed && at_fn_log_failure +$at_traceon; } + +{ set +x +printf "%s\n" "$at_srcdir/divert.at:408: grep -q 'Adding' stdout" +at_fn_check_prepare_trace "divert.at:408" +( $at_check_trace; grep -q 'Adding' stdout +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +at_fn_diff_devnull "$at_stdout" || at_failed=: +at_fn_check_status 0 $at_status "$at_srcdir/divert.at:408" +$at_failed && at_fn_log_failure +$at_traceon; } + +{ set +x +printf "%s\n" "$at_srcdir/divert.at:409: dpkg-divert --admindir=dpkgdb --instdir=dpkginst --rename --add /testdir/bar" +at_fn_check_prepare_trace "divert.at:409" +( $at_check_trace; dpkg-divert --admindir=dpkgdb --instdir=dpkginst --rename --add /testdir/bar +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +echo stdout:; tee stdout <"$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/divert.at:409" +$at_failed && at_fn_log_failure +$at_traceon; } + +{ set +x +printf "%s\n" "$at_srcdir/divert.at:410: grep -q 'Adding' stdout" +at_fn_check_prepare_trace "divert.at:410" +( $at_check_trace; grep -q 'Adding' stdout +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +at_fn_diff_devnull "$at_stdout" || at_failed=: +at_fn_check_status 0 $at_status "$at_srcdir/divert.at:410" +$at_failed && at_fn_log_failure +$at_traceon; } + + +{ set +x +printf "%s\n" "$at_srcdir/divert.at:412: dpkg-divert --admindir=dpkgdb --instdir=dpkginst --rename --add /testdir/foo" +at_fn_check_prepare_trace "divert.at:412" +( $at_check_trace; dpkg-divert --admindir=dpkgdb --instdir=dpkginst --rename --add /testdir/foo +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +echo stdout:; tee stdout <"$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/divert.at:412" +$at_failed && at_fn_log_failure +$at_traceon; } + +{ set +x +printf "%s\n" "$at_srcdir/divert.at:413: grep -q 'Leaving' stdout" +at_fn_check_prepare_trace "divert.at:413" +( $at_check_trace; grep -q 'Leaving' stdout +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +at_fn_diff_devnull "$at_stdout" || at_failed=: +at_fn_check_status 0 $at_status "$at_srcdir/divert.at:413" +$at_failed && at_fn_log_failure +$at_traceon; } + +{ set +x +printf "%s\n" "$at_srcdir/divert.at:414: dpkg-divert --admindir=dpkgdb --instdir=dpkginst --rename --package foobar --add /testdir/bar" +at_fn_check_prepare_trace "divert.at:414" +( $at_check_trace; dpkg-divert --admindir=dpkgdb --instdir=dpkginst --rename --package foobar --add /testdir/bar +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo stderr:; tee stderr <"$at_stderr" +at_fn_diff_devnull "$at_stdout" || at_failed=: +at_fn_check_status 2 $at_status "$at_srcdir/divert.at:414" +$at_failed && at_fn_log_failure +$at_traceon; } + +{ set +x +printf "%s\n" "$at_srcdir/divert.at:416: grep -q 'clashes' stderr" +at_fn_check_prepare_trace "divert.at:416" +( $at_check_trace; grep -q 'clashes' stderr +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +at_fn_diff_devnull "$at_stdout" || at_failed=: +at_fn_check_status 0 $at_status "$at_srcdir/divert.at:416" +$at_failed && at_fn_log_failure +$at_traceon; } + + + set +x + $at_times_p && times >"$at_times_file" +) 5>&1 2>&1 7>&- | eval $at_tee_pipe +read at_status <"$at_status_file" +#AT_STOP_27 +#AT_START_28 +at_fn_group_banner 28 'divert.at:420' \ + "dpkg-divert add (file owned by --package)" " " 4 +at_xfail=no +( + printf "%s\n" "28. $at_setup_line: testing $at_desc ..." + $at_traceon + + + + + mkdir -p "dpkginst/$(dirname '/testdir/foo')" + : >dpkginst//testdir/foo + +# Only installed packages have their files list considered. + + mkdir -p "dpkgdb" + cat >dpkgdb/status <<'_ATEOF' +Package: coreutils +Status: install ok installed +Version: 0 +Architecture: i386 +Maintainer: dummy +Description: dummy +_ATEOF + + + + mkdir -p "dpkgdb/info" + cat >dpkgdb/info/coreutils.list <<'_ATEOF' +/testdir/foo +_ATEOF + + + + mkdir -p "dpkgdb" + : >dpkgdb/diversions + +cat >ref-diversions <<'_ATEOF' +/testdir/foo +/testdir/foo.distrib +coreutils +_ATEOF + + +{ set +x +printf "%s\n" "$at_srcdir/divert.at:440: dpkg-divert --admindir=dpkgdb --instdir=dpkginst --quiet --rename --package coreutils --add /testdir/foo" +at_fn_check_prepare_trace "divert.at:440" +( $at_check_trace; dpkg-divert --admindir=dpkgdb --instdir=dpkginst --quiet --rename --package coreutils --add /testdir/foo +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +at_fn_diff_devnull "$at_stdout" || at_failed=: +at_fn_check_status 0 $at_status "$at_srcdir/divert.at:440" +$at_failed && at_fn_log_failure +$at_traceon; } + + + { set +x +printf "%s\n" "$at_srcdir/divert.at:441: test -e \"dpkginst//testdir/foo\"" +at_fn_check_prepare_trace "divert.at:441" +( $at_check_trace; test -e "dpkginst//testdir/foo" +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +at_fn_diff_devnull "$at_stdout" || at_failed=: +at_fn_check_status 0 $at_status "$at_srcdir/divert.at:441" +$at_failed && at_fn_log_failure +$at_traceon; } + + + + { set +x +printf "%s\n" "$at_srcdir/divert.at:442: test -e \"dpkginst//testdir/foo.distrib\"" +at_fn_check_prepare_trace "divert.at:442" +( $at_check_trace; test -e "dpkginst//testdir/foo.distrib" +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +at_fn_diff_devnull "$at_stdout" || at_failed=: +at_fn_check_status 1 $at_status "$at_srcdir/divert.at:442" +$at_failed && at_fn_log_failure +$at_traceon; } + + +{ set +x +printf "%s\n" "$at_srcdir/divert.at:443: diff -u ref-diversions dpkgdb/diversions" +at_fn_check_prepare_trace "divert.at:443" +( $at_check_trace; diff -u ref-diversions dpkgdb/diversions +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +at_fn_diff_devnull "$at_stdout" || at_failed=: +at_fn_check_status 0 $at_status "$at_srcdir/divert.at:443" +$at_failed && at_fn_log_failure +$at_traceon; } + + + set +x + $at_times_p && times >"$at_times_file" +) 5>&1 2>&1 7>&- | eval $at_tee_pipe +read at_status <"$at_status_file" +#AT_STOP_28 +#AT_START_29 +at_fn_group_banner 29 'divert.at:447' \ + "dpkg-divert remove (missing)" " " 4 +at_xfail=no +( + printf "%s\n" "29. $at_setup_line: testing $at_desc ..." + $at_traceon + + + + + mkdir -p "dpkgdb" + : >dpkgdb/diversions + + +{ set +x +printf "%s\n" "$at_srcdir/divert.at:452: dpkg-divert --admindir=dpkgdb --instdir=dpkginst --no-rename --remove /bin/sh" +at_fn_check_prepare_trace "divert.at:452" +( $at_check_trace; dpkg-divert --admindir=dpkgdb --instdir=dpkginst --no-rename --remove /bin/sh +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +echo stdout:; tee stdout <"$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/divert.at:452" +$at_failed && at_fn_log_failure +$at_traceon; } + +{ set +x +printf "%s\n" "$at_srcdir/divert.at:453: grep -q 'No diversion' stdout" +at_fn_check_prepare_trace "divert.at:453" +( $at_check_trace; grep -q 'No diversion' stdout +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +at_fn_diff_devnull "$at_stdout" || at_failed=: +at_fn_check_status 0 $at_status "$at_srcdir/divert.at:453" +$at_failed && at_fn_log_failure +$at_traceon; } + + +{ set +x +printf "%s\n" "$at_srcdir/divert.at:455: dpkg-divert --admindir=dpkgdb --instdir=dpkginst --quiet --no-rename --remove /bin/sh" +at_fn_check_prepare_trace "divert.at:455" +( $at_check_trace; dpkg-divert --admindir=dpkgdb --instdir=dpkginst --quiet --no-rename --remove /bin/sh +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +at_fn_diff_devnull "$at_stdout" || at_failed=: +at_fn_check_status 0 $at_status "$at_srcdir/divert.at:455" +$at_failed && at_fn_log_failure +$at_traceon; } + + + set +x + $at_times_p && times >"$at_times_file" +) 5>&1 2>&1 7>&- | eval $at_tee_pipe +read at_status <"$at_status_file" +#AT_STOP_29 +#AT_START_30 +at_fn_group_banner 30 'divert.at:459' \ + "dpkg-divert remove (divert-to)" " " 4 +at_xfail=no +( + printf "%s\n" "30. $at_setup_line: testing $at_desc ..." + $at_traceon + + + + + mkdir -p "dpkgdb" + : >dpkgdb/diversions + +cat >ref-diversions <<'_ATEOF' +/testdir/bar +/testdir/bar.distrib +: +/testdir/baz +/testdir/baz.distrib +: +_ATEOF + + +{ set +x +printf "%s\n" "$at_srcdir/divert.at:471: dpkg-divert --admindir=dpkgdb --instdir=dpkginst --quiet --no-rename --add /testdir/foo" +at_fn_check_prepare_trace "divert.at:471" +( $at_check_trace; dpkg-divert --admindir=dpkgdb --instdir=dpkginst --quiet --no-rename --add /testdir/foo +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +at_fn_diff_devnull "$at_stdout" || at_failed=: +at_fn_check_status 0 $at_status "$at_srcdir/divert.at:471" +$at_failed && at_fn_log_failure +$at_traceon; } + +{ set +x +printf "%s\n" "$at_srcdir/divert.at:472: dpkg-divert --admindir=dpkgdb --instdir=dpkginst --quiet --no-rename --add /testdir/bar" +at_fn_check_prepare_trace "divert.at:472" +( $at_check_trace; dpkg-divert --admindir=dpkgdb --instdir=dpkginst --quiet --no-rename --add /testdir/bar +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +at_fn_diff_devnull "$at_stdout" || at_failed=: +at_fn_check_status 0 $at_status "$at_srcdir/divert.at:472" +$at_failed && at_fn_log_failure +$at_traceon; } + +{ set +x +printf "%s\n" "$at_srcdir/divert.at:473: dpkg-divert --admindir=dpkgdb --instdir=dpkginst --quiet --no-rename --add /testdir/baz" +at_fn_check_prepare_trace "divert.at:473" +( $at_check_trace; dpkg-divert --admindir=dpkgdb --instdir=dpkginst --quiet --no-rename --add /testdir/baz +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +at_fn_diff_devnull "$at_stdout" || at_failed=: +at_fn_check_status 0 $at_status "$at_srcdir/divert.at:473" +$at_failed && at_fn_log_failure +$at_traceon; } + + +{ set +x +printf "%s\n" "$at_srcdir/divert.at:475: dpkg-divert --admindir=dpkgdb --instdir=dpkginst --divert /testdir/foo.my --remove /testdir/foo" +at_fn_check_prepare_trace "divert.at:475" +( $at_check_trace; dpkg-divert --admindir=dpkgdb --instdir=dpkginst --divert /testdir/foo.my --remove /testdir/foo +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo stderr:; tee stderr <"$at_stderr" +at_fn_diff_devnull "$at_stdout" || at_failed=: +at_fn_check_status 2 $at_status "$at_srcdir/divert.at:475" +$at_failed && at_fn_log_failure +$at_traceon; } + +{ set +x +printf "%s\n" "$at_srcdir/divert.at:477: grep -q 'mismatch on divert-to' stderr" +at_fn_check_prepare_trace "divert.at:477" +( $at_check_trace; grep -q 'mismatch on divert-to' stderr +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +at_fn_diff_devnull "$at_stdout" || at_failed=: +at_fn_check_status 0 $at_status "$at_srcdir/divert.at:477" +$at_failed && at_fn_log_failure +$at_traceon; } + + +{ set +x +printf "%s\n" "$at_srcdir/divert.at:479: dpkg-divert --admindir=dpkgdb --instdir=dpkginst --package baz --remove /testdir/foo" +at_fn_check_prepare_trace "divert.at:479" +( $at_check_trace; dpkg-divert --admindir=dpkgdb --instdir=dpkginst --package baz --remove /testdir/foo +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo stderr:; tee stderr <"$at_stderr" +at_fn_diff_devnull "$at_stdout" || at_failed=: +at_fn_check_status 2 $at_status "$at_srcdir/divert.at:479" +$at_failed && at_fn_log_failure +$at_traceon; } + +{ set +x +printf "%s\n" "$at_srcdir/divert.at:480: grep -q 'mismatch on package' stderr" +at_fn_check_prepare_trace "divert.at:480" +( $at_check_trace; grep -q 'mismatch on package' stderr +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +at_fn_diff_devnull "$at_stdout" || at_failed=: +at_fn_check_status 0 $at_status "$at_srcdir/divert.at:480" +$at_failed && at_fn_log_failure +$at_traceon; } + + +{ set +x +printf "%s\n" "$at_srcdir/divert.at:482: dpkg-divert --admindir=dpkgdb --instdir=dpkginst --package baz --divert /testdir/foo.my --remove /testdir/foo" +at_fn_check_prepare_trace "divert.at:482" +( $at_check_trace; dpkg-divert --admindir=dpkgdb --instdir=dpkginst --package baz --divert /testdir/foo.my --remove /testdir/foo +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo stderr:; tee stderr <"$at_stderr" +at_fn_diff_devnull "$at_stdout" || at_failed=: +at_fn_check_status 2 $at_status "$at_srcdir/divert.at:482" +$at_failed && at_fn_log_failure +$at_traceon; } + +{ set +x +printf "%s\n" "$at_srcdir/divert.at:484: grep -qE 'mismatch on (package|divert-to)' stderr" +at_fn_check_prepare_notrace 'a shell pipeline' "divert.at:484" +( $at_check_trace; grep -qE 'mismatch on (package|divert-to)' stderr +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +at_fn_diff_devnull "$at_stdout" || at_failed=: +at_fn_check_status 0 $at_status "$at_srcdir/divert.at:484" +$at_failed && at_fn_log_failure +$at_traceon; } + + +{ set +x +printf "%s\n" "$at_srcdir/divert.at:486: dpkg-divert --admindir=dpkgdb --instdir=dpkginst --rename --divert /testdir/foo.distrib --remove /testdir/foo" +at_fn_check_prepare_trace "divert.at:486" +( $at_check_trace; dpkg-divert --admindir=dpkgdb --instdir=dpkginst --rename --divert /testdir/foo.distrib --remove /testdir/foo +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +echo stdout:; tee stdout <"$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/divert.at:486" +$at_failed && at_fn_log_failure +$at_traceon; } + +{ set +x +printf "%s\n" "$at_srcdir/divert.at:488: grep -qE 'Removing .*/testdir/foo' stdout" +at_fn_check_prepare_trace "divert.at:488" +( $at_check_trace; grep -qE 'Removing .*/testdir/foo' stdout +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +at_fn_diff_devnull "$at_stdout" || at_failed=: +at_fn_check_status 0 $at_status "$at_srcdir/divert.at:488" +$at_failed && at_fn_log_failure +$at_traceon; } + + +{ set +x +printf "%s\n" "$at_srcdir/divert.at:490: diff -u ref-diversions dpkgdb/diversions" +at_fn_check_prepare_trace "divert.at:490" +( $at_check_trace; diff -u ref-diversions dpkgdb/diversions +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +at_fn_diff_devnull "$at_stdout" || at_failed=: +at_fn_check_status 0 $at_status "$at_srcdir/divert.at:490" +$at_failed && at_fn_log_failure +$at_traceon; } + + + set +x + $at_times_p && times >"$at_times_file" +) 5>&1 2>&1 7>&- | eval $at_tee_pipe +read at_status <"$at_status_file" +#AT_STOP_30 +#AT_START_31 +at_fn_group_banner 31 'divert.at:494' \ + "dpkg-divert remove (plain)" " " 4 +at_xfail=no +( + printf "%s\n" "31. $at_setup_line: testing $at_desc ..." + $at_traceon + + + + + mkdir -p "dpkgdb" + : >dpkgdb/diversions + +cat >ref-diversions <<'_ATEOF' +/testdir/foo +/testdir/foo.distrib +: +/testdir/baz +/testdir/baz.distrib +: +_ATEOF + + +{ set +x +printf "%s\n" "$at_srcdir/divert.at:506: dpkg-divert --admindir=dpkgdb --instdir=dpkginst --quiet --no-rename --add /testdir/foo" +at_fn_check_prepare_trace "divert.at:506" +( $at_check_trace; dpkg-divert --admindir=dpkgdb --instdir=dpkginst --quiet --no-rename --add /testdir/foo +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +at_fn_diff_devnull "$at_stdout" || at_failed=: +at_fn_check_status 0 $at_status "$at_srcdir/divert.at:506" +$at_failed && at_fn_log_failure +$at_traceon; } + +{ set +x +printf "%s\n" "$at_srcdir/divert.at:507: dpkg-divert --admindir=dpkgdb --instdir=dpkginst --quiet --no-rename --add /testdir/bar" +at_fn_check_prepare_trace "divert.at:507" +( $at_check_trace; dpkg-divert --admindir=dpkgdb --instdir=dpkginst --quiet --no-rename --add /testdir/bar +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +at_fn_diff_devnull "$at_stdout" || at_failed=: +at_fn_check_status 0 $at_status "$at_srcdir/divert.at:507" +$at_failed && at_fn_log_failure +$at_traceon; } + +{ set +x +printf "%s\n" "$at_srcdir/divert.at:508: dpkg-divert --admindir=dpkgdb --instdir=dpkginst --quiet --no-rename --add /testdir/baz" +at_fn_check_prepare_trace "divert.at:508" +( $at_check_trace; dpkg-divert --admindir=dpkgdb --instdir=dpkginst --quiet --no-rename --add /testdir/baz +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +at_fn_diff_devnull "$at_stdout" || at_failed=: +at_fn_check_status 0 $at_status "$at_srcdir/divert.at:508" +$at_failed && at_fn_log_failure +$at_traceon; } + + +{ set +x +printf "%s\n" "$at_srcdir/divert.at:510: dpkg-divert --admindir=dpkgdb --instdir=dpkginst --no-rename --remove /testdir/bar" +at_fn_check_prepare_trace "divert.at:510" +( $at_check_trace; dpkg-divert --admindir=dpkgdb --instdir=dpkginst --no-rename --remove /testdir/bar +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +echo stdout:; tee stdout <"$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/divert.at:510" +$at_failed && at_fn_log_failure +$at_traceon; } + +{ set +x +printf "%s\n" "$at_srcdir/divert.at:511: grep -qE 'Removing .* /testdir/bar' stdout" +at_fn_check_prepare_trace "divert.at:511" +( $at_check_trace; grep -qE 'Removing .* /testdir/bar' stdout +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +at_fn_diff_devnull "$at_stdout" || at_failed=: +at_fn_check_status 0 $at_status "$at_srcdir/divert.at:511" +$at_failed && at_fn_log_failure +$at_traceon; } + + +{ set +x +printf "%s\n" "$at_srcdir/divert.at:513: diff -u ref-diversions dpkgdb/diversions" +at_fn_check_prepare_trace "divert.at:513" +( $at_check_trace; diff -u ref-diversions dpkgdb/diversions +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +at_fn_diff_devnull "$at_stdout" || at_failed=: +at_fn_check_status 0 $at_status "$at_srcdir/divert.at:513" +$at_failed && at_fn_log_failure +$at_traceon; } + + + set +x + $at_times_p && times >"$at_times_file" +) 5>&1 2>&1 7>&- | eval $at_tee_pipe +read at_status <"$at_status_file" +#AT_STOP_31 +#AT_START_32 +at_fn_group_banner 32 'divert.at:517' \ + "dpkg-divert remove (by-package)" " " 4 +at_xfail=no +( + printf "%s\n" "32. $at_setup_line: testing $at_desc ..." + $at_traceon + + + + + mkdir -p "dpkgdb" + : >dpkgdb/diversions + +cat >ref-diversions <<'_ATEOF' +/testdir/bar +/testdir/bar.distrib +: +/testdir/foo +/testdir/foo.distrib +: +_ATEOF + + +{ set +x +printf "%s\n" "$at_srcdir/divert.at:529: dpkg-divert --admindir=dpkgdb --instdir=dpkginst --quiet --no-rename /testdir/foo" +at_fn_check_prepare_trace "divert.at:529" +( $at_check_trace; dpkg-divert --admindir=dpkgdb --instdir=dpkginst --quiet --no-rename /testdir/foo +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +at_fn_diff_devnull "$at_stdout" || at_failed=: +at_fn_check_status 0 $at_status "$at_srcdir/divert.at:529" +$at_failed && at_fn_log_failure +$at_traceon; } + +{ set +x +printf "%s\n" "$at_srcdir/divert.at:530: dpkg-divert --admindir=dpkgdb --instdir=dpkginst --quiet --no-rename /testdir/bar" +at_fn_check_prepare_trace "divert.at:530" +( $at_check_trace; dpkg-divert --admindir=dpkgdb --instdir=dpkginst --quiet --no-rename /testdir/bar +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +at_fn_diff_devnull "$at_stdout" || at_failed=: +at_fn_check_status 0 $at_status "$at_srcdir/divert.at:530" +$at_failed && at_fn_log_failure +$at_traceon; } + +{ set +x +printf "%s\n" "$at_srcdir/divert.at:531: dpkg-divert --admindir=dpkgdb --instdir=dpkginst --quiet --no-rename --package bash /testdir/baz" +at_fn_check_prepare_trace "divert.at:531" +( $at_check_trace; dpkg-divert --admindir=dpkgdb --instdir=dpkginst --quiet --no-rename --package bash /testdir/baz +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +at_fn_diff_devnull "$at_stdout" || at_failed=: +at_fn_check_status 0 $at_status "$at_srcdir/divert.at:531" +$at_failed && at_fn_log_failure +$at_traceon; } + + +{ set +x +printf "%s\n" "$at_srcdir/divert.at:533: dpkg-divert --admindir=dpkgdb --instdir=dpkginst --no-rename --quiet --package bash --remove /testdir/baz" +at_fn_check_prepare_trace "divert.at:533" +( $at_check_trace; dpkg-divert --admindir=dpkgdb --instdir=dpkginst --no-rename --quiet --package bash --remove /testdir/baz +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +at_fn_diff_devnull "$at_stdout" || at_failed=: +at_fn_check_status 0 $at_status "$at_srcdir/divert.at:533" +$at_failed && at_fn_log_failure +$at_traceon; } + + +{ set +x +printf "%s\n" "$at_srcdir/divert.at:535: diff -u ref-diversions dpkgdb/diversions" +at_fn_check_prepare_trace "divert.at:535" +( $at_check_trace; diff -u ref-diversions dpkgdb/diversions +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +at_fn_diff_devnull "$at_stdout" || at_failed=: +at_fn_check_status 0 $at_status "$at_srcdir/divert.at:535" +$at_failed && at_fn_log_failure +$at_traceon; } + + + set +x + $at_times_p && times >"$at_times_file" +) 5>&1 2>&1 7>&- | eval $at_tee_pipe +read at_status <"$at_status_file" +#AT_STOP_32 +#AT_START_33 +at_fn_group_banner 33 'divert.at:539' \ + "dpkg-divert remove (test)" " " 4 +at_xfail=no +( + printf "%s\n" "33. $at_setup_line: testing $at_desc ..." + $at_traceon + + + + + mkdir -p "dpkginst/$(dirname '/testdir/foo')" + : >dpkginst//testdir/foo + + + mkdir -p "dpkgdb" + : >dpkgdb/diversions + +cat >ref-diversions <<'_ATEOF' +/testdir/foo +/testdir/foo.distrib +: +_ATEOF + + +{ set +x +printf "%s\n" "$at_srcdir/divert.at:549: dpkg-divert --admindir=dpkgdb --instdir=dpkginst --quiet --rename /testdir/foo" +at_fn_check_prepare_trace "divert.at:549" +( $at_check_trace; dpkg-divert --admindir=dpkgdb --instdir=dpkginst --quiet --rename /testdir/foo +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +at_fn_diff_devnull "$at_stdout" || at_failed=: +at_fn_check_status 0 $at_status "$at_srcdir/divert.at:549" +$at_failed && at_fn_log_failure +$at_traceon; } + + +{ set +x +printf "%s\n" "$at_srcdir/divert.at:551: dpkg-divert --admindir=dpkgdb --instdir=dpkginst --test --rename --remove /testdir/foo" +at_fn_check_prepare_trace "divert.at:551" +( $at_check_trace; dpkg-divert --admindir=dpkgdb --instdir=dpkginst --test --rename --remove /testdir/foo +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +echo stdout:; tee stdout <"$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/divert.at:551" +$at_failed && at_fn_log_failure +$at_traceon; } + +{ set +x +printf "%s\n" "$at_srcdir/divert.at:552: grep -q 'Removing .*/testdir/foo' stdout" +at_fn_check_prepare_trace "divert.at:552" +( $at_check_trace; grep -q 'Removing .*/testdir/foo' stdout +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +at_fn_diff_devnull "$at_stdout" || at_failed=: +at_fn_check_status 0 $at_status "$at_srcdir/divert.at:552" +$at_failed && at_fn_log_failure +$at_traceon; } + + + { set +x +printf "%s\n" "$at_srcdir/divert.at:553: test -e \"dpkginst//testdir/foo\"" +at_fn_check_prepare_trace "divert.at:553" +( $at_check_trace; test -e "dpkginst//testdir/foo" +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +at_fn_diff_devnull "$at_stdout" || at_failed=: +at_fn_check_status 1 $at_status "$at_srcdir/divert.at:553" +$at_failed && at_fn_log_failure +$at_traceon; } + + + + { set +x +printf "%s\n" "$at_srcdir/divert.at:554: test -e \"dpkginst//testdir/foo.distrib\"" +at_fn_check_prepare_trace "divert.at:554" +( $at_check_trace; test -e "dpkginst//testdir/foo.distrib" +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +at_fn_diff_devnull "$at_stdout" || at_failed=: +at_fn_check_status 0 $at_status "$at_srcdir/divert.at:554" +$at_failed && at_fn_log_failure +$at_traceon; } + + +{ set +x +printf "%s\n" "$at_srcdir/divert.at:555: diff -u ref-diversions dpkgdb/diversions" +at_fn_check_prepare_trace "divert.at:555" +( $at_check_trace; diff -u ref-diversions dpkgdb/diversions +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +at_fn_diff_devnull "$at_stdout" || at_failed=: +at_fn_check_status 0 $at_status "$at_srcdir/divert.at:555" +$at_failed && at_fn_log_failure +$at_traceon; } + + +{ set +x +printf "%s\n" "$at_srcdir/divert.at:557: dpkg-divert --admindir=dpkgdb --instdir=dpkginst --quiet --rename --remove /testdir/foo" +at_fn_check_prepare_trace "divert.at:557" +( $at_check_trace; dpkg-divert --admindir=dpkgdb --instdir=dpkginst --quiet --rename --remove /testdir/foo +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +at_fn_diff_devnull "$at_stdout" || at_failed=: +at_fn_check_status 0 $at_status "$at_srcdir/divert.at:557" +$at_failed && at_fn_log_failure +$at_traceon; } + + + { set +x +printf "%s\n" "$at_srcdir/divert.at:558: test -e \"dpkginst//testdir/foo\"" +at_fn_check_prepare_trace "divert.at:558" +( $at_check_trace; test -e "dpkginst//testdir/foo" +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +at_fn_diff_devnull "$at_stdout" || at_failed=: +at_fn_check_status 0 $at_status "$at_srcdir/divert.at:558" +$at_failed && at_fn_log_failure +$at_traceon; } + + + + { set +x +printf "%s\n" "$at_srcdir/divert.at:559: test -e \"dpkginst//testdir/foo.distrib\"" +at_fn_check_prepare_trace "divert.at:559" +( $at_check_trace; test -e "dpkginst//testdir/foo.distrib" +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +at_fn_diff_devnull "$at_stdout" || at_failed=: +at_fn_check_status 1 $at_status "$at_srcdir/divert.at:559" +$at_failed && at_fn_log_failure +$at_traceon; } + + +{ set +x +printf "%s\n" "$at_srcdir/divert.at:560: cat dpkgdb/diversions" +at_fn_check_prepare_trace "divert.at:560" +( $at_check_trace; cat dpkgdb/diversions +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +at_fn_diff_devnull "$at_stdout" || at_failed=: +at_fn_check_status 0 $at_status "$at_srcdir/divert.at:560" +$at_failed && at_fn_log_failure +$at_traceon; } + + + set +x + $at_times_p && times >"$at_times_file" +) 5>&1 2>&1 7>&- | eval $at_tee_pipe +read at_status <"$at_status_file" +#AT_STOP_33 +#AT_START_34 +at_fn_group_banner 34 'divert.at:564' \ + "dpkg-divert db (no-access)" " " 4 +at_xfail=no +( + printf "%s\n" "34. $at_setup_line: testing $at_desc ..." + $at_traceon + + + +printf "%s\n" "divert.at:567" >"$at_check_line_file" +(test -n "$FAKEROOTKEY" || test "$(id -u)" = 0) \ + && at_fn_check_skip 77 "$at_srcdir/divert.at:567" + +# An inexistent diversions db file should not be considered a failure, +# but a failure to open it should be. + + mkdir -p "dpkgdb" + : >dpkgdb/diversions + + + chmod 000 "dpkgdb/diversions" + + +{ set +x +printf "%s\n" "$at_srcdir/divert.at:574: dpkg-divert --admindir=dpkgdb --instdir=dpkginst --list" +at_fn_check_prepare_trace "divert.at:574" +( $at_check_trace; dpkg-divert --admindir=dpkgdb --instdir=dpkginst --list +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo stderr:; tee stderr <"$at_stderr" +at_fn_diff_devnull "$at_stdout" || at_failed=: +at_fn_check_status 2 $at_status "$at_srcdir/divert.at:574" +$at_failed && at_fn_log_failure +$at_traceon; } + +{ set +x +printf "%s\n" "$at_srcdir/divert.at:575: grep -qE '(cannot|failed).*open' stderr" +at_fn_check_prepare_notrace 'a shell pipeline' "divert.at:575" +( $at_check_trace; grep -qE '(cannot|failed).*open' stderr +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +at_fn_diff_devnull "$at_stdout" || at_failed=: +at_fn_check_status 0 $at_status "$at_srcdir/divert.at:575" +$at_failed && at_fn_log_failure +$at_traceon; } + + + + chmod 644 "dpkgdb/diversions" + + set +x + $at_times_p && times >"$at_times_file" +) 5>&1 2>&1 7>&- | eval $at_tee_pipe +read at_status <"$at_status_file" +#AT_STOP_34 +#AT_START_35 +at_fn_group_banner 35 'divert.at:580' \ + "dpkg-divert db (truncated)" " " 4 +at_xfail=no +( + printf "%s\n" "35. $at_setup_line: testing $at_desc ..." + $at_traceon + + + + + mkdir -p "dpkgdb" + cat >dpkgdb/diversions <<'_ATEOF' +/bin/sh +_ATEOF + + + +{ set +x +printf "%s\n" "$at_srcdir/divert.at:586: dpkg-divert --admindir=dpkgdb --instdir=dpkginst --list" +at_fn_check_prepare_trace "divert.at:586" +( $at_check_trace; dpkg-divert --admindir=dpkgdb --instdir=dpkginst --list +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo stderr:; tee stderr <"$at_stderr" +at_fn_diff_devnull "$at_stdout" || at_failed=: +at_fn_check_status 2 $at_status "$at_srcdir/divert.at:586" +$at_failed && at_fn_log_failure +$at_traceon; } + +{ set +x +printf "%s\n" "$at_srcdir/divert.at:587: grep -qE '(corrupt|unexpected end of file)' stderr" +at_fn_check_prepare_notrace 'a shell pipeline' "divert.at:587" +( $at_check_trace; grep -qE '(corrupt|unexpected end of file)' stderr +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +at_fn_diff_devnull "$at_stdout" || at_failed=: +at_fn_check_status 0 $at_status "$at_srcdir/divert.at:587" +$at_failed && at_fn_log_failure +$at_traceon; } + + + + mkdir -p "dpkgdb" + cat >dpkgdb/diversions <<'_ATEOF' +/bin/sh +bash +_ATEOF + + + +{ set +x +printf "%s\n" "$at_srcdir/divert.at:593: dpkg-divert --admindir=dpkgdb --instdir=dpkginst --list" +at_fn_check_prepare_trace "divert.at:593" +( $at_check_trace; dpkg-divert --admindir=dpkgdb --instdir=dpkginst --list +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo stderr:; tee stderr <"$at_stderr" +at_fn_diff_devnull "$at_stdout" || at_failed=: +at_fn_check_status 2 $at_status "$at_srcdir/divert.at:593" +$at_failed && at_fn_log_failure +$at_traceon; } + +{ set +x +printf "%s\n" "$at_srcdir/divert.at:594: grep -qE '(corrupt|unexpected end of file)' stderr" +at_fn_check_prepare_notrace 'a shell pipeline' "divert.at:594" +( $at_check_trace; grep -qE '(corrupt|unexpected end of file)' stderr +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +at_fn_diff_devnull "$at_stdout" || at_failed=: +at_fn_check_status 0 $at_status "$at_srcdir/divert.at:594" +$at_failed && at_fn_log_failure +$at_traceon; } + + + set +x + $at_times_p && times >"$at_times_file" +) 5>&1 2>&1 7>&- | eval $at_tee_pipe +read at_status <"$at_status_file" +#AT_STOP_35 +#AT_START_36 +at_fn_group_banner 36 'divert.at:598' \ + "dpkg-divert db (read-only dir)" " " 4 +at_xfail=no +( + printf "%s\n" "36. $at_setup_line: testing $at_desc ..." + $at_traceon + + + +printf "%s\n" "divert.at:601" >"$at_check_line_file" +(test -n "$FAKEROOTKEY" || test "$(id -u)" = 0) \ + && at_fn_check_skip 77 "$at_srcdir/divert.at:601" + + + mkdir -p "dpkgdb" + : >dpkgdb/diversions + + + chmod 500 "dpkgdb/" + + +{ set +x +printf "%s\n" "$at_srcdir/divert.at:606: dpkg-divert --admindir=dpkgdb --instdir=dpkginst --rename --add /testdir/foo" +at_fn_check_prepare_trace "divert.at:606" +( $at_check_trace; dpkg-divert --admindir=dpkgdb --instdir=dpkginst --rename --add /testdir/foo +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo stderr:; tee stderr <"$at_stderr" +echo stdout:; tee stdout <"$at_stdout" +at_fn_check_status 2 $at_status "$at_srcdir/divert.at:606" +$at_failed && at_fn_log_failure +$at_traceon; } + +{ set +x +printf "%s\n" "$at_srcdir/divert.at:607: grep -q 'Adding' stdout" +at_fn_check_prepare_trace "divert.at:607" +( $at_check_trace; grep -q 'Adding' stdout +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +at_fn_diff_devnull "$at_stdout" || at_failed=: +at_fn_check_status 0 $at_status "$at_srcdir/divert.at:607" +$at_failed && at_fn_log_failure +$at_traceon; } + +{ set +x +printf "%s\n" "$at_srcdir/divert.at:608: grep -q 'create.*new' stderr" +at_fn_check_prepare_trace "divert.at:608" +( $at_check_trace; grep -q 'create.*new' stderr +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +at_fn_diff_devnull "$at_stdout" || at_failed=: +at_fn_check_status 0 $at_status "$at_srcdir/divert.at:608" +$at_failed && at_fn_log_failure +$at_traceon; } + + + + chmod 755 "dpkgdb/" + + set +x + $at_times_p && times >"$at_times_file" +) 5>&1 2>&1 7>&- | eval $at_tee_pipe +read at_status <"$at_status_file" +#AT_STOP_36 +#AT_START_37 +at_fn_group_banner 37 'divert.at:613' \ + "dpkg-divert db (disk full)" " " 4 +at_xfail=no +( + printf "%s\n" "37. $at_setup_line: testing $at_desc ..." + $at_traceon + + + +printf "%s\n" "divert.at:616" >"$at_check_line_file" +(test -n "$FAKEROOTKEY" || test "$(id -u)" = 0) \ + && at_fn_check_skip 77 "$at_srcdir/divert.at:616" +printf "%s\n" "divert.at:617" >"$at_check_line_file" +(! test -c /dev/full) \ + && at_fn_check_skip 77 "$at_srcdir/divert.at:617" + + + mkdir -p "dpkgdb" + : >dpkgdb/diversions + +ln -s /dev/full dpkgdb/diversions-new + +{ set +x +printf "%s\n" "$at_srcdir/divert.at:622: dpkg-divert --admindir=dpkgdb --instdir=dpkginst --rename --add /testdir/foo" +at_fn_check_prepare_trace "divert.at:622" +( $at_check_trace; dpkg-divert --admindir=dpkgdb --instdir=dpkginst --rename --add /testdir/foo +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo stderr:; tee stderr <"$at_stderr" +echo stdout:; tee stdout <"$at_stdout" +at_fn_check_status 2 $at_status "$at_srcdir/divert.at:622" +$at_failed && at_fn_log_failure +$at_traceon; } + +{ set +x +printf "%s\n" "$at_srcdir/divert.at:623: grep -q 'Adding' stdout" +at_fn_check_prepare_trace "divert.at:623" +( $at_check_trace; grep -q 'Adding' stdout +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +at_fn_diff_devnull "$at_stdout" || at_failed=: +at_fn_check_status 0 $at_status "$at_srcdir/divert.at:623" +$at_failed && at_fn_log_failure +$at_traceon; } + +{ set +x +printf "%s\n" "$at_srcdir/divert.at:624: grep -qE '(write|flush|close).*new' stderr" +at_fn_check_prepare_notrace 'a shell pipeline' "divert.at:624" +( $at_check_trace; grep -qE '(write|flush|close).*new' stderr +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +at_fn_diff_devnull "$at_stdout" || at_failed=: +at_fn_check_status 0 $at_status "$at_srcdir/divert.at:624" +$at_failed && at_fn_log_failure +$at_traceon; } + + + set +x + $at_times_p && times >"$at_times_file" +) 5>&1 2>&1 7>&- | eval $at_tee_pipe +read at_status <"$at_status_file" +#AT_STOP_37 +#AT_START_38 +at_fn_group_banner 38 'divert.at:628' \ + "dpkg-divert db (pathname is dir)" " " 4 +at_xfail=no +( + printf "%s\n" "38. $at_setup_line: testing $at_desc ..." + $at_traceon + + + + + mkdir -p "dpkgdb" + : >dpkgdb/diversions + +rm -f dpkgdb/diversions-new +mkdir dpkgdb/diversions-old + +{ set +x +printf "%s\n" "$at_srcdir/divert.at:635: dpkg-divert --admindir=dpkgdb --instdir=dpkginst --rename --add /testdir/foo" +at_fn_check_prepare_trace "divert.at:635" +( $at_check_trace; dpkg-divert --admindir=dpkgdb --instdir=dpkginst --rename --add /testdir/foo +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo stderr:; tee stderr <"$at_stderr" +echo stdout:; tee stdout <"$at_stdout" +at_fn_check_status 2 $at_status "$at_srcdir/divert.at:635" +$at_failed && at_fn_log_failure +$at_traceon; } + +{ set +x +printf "%s\n" "$at_srcdir/divert.at:636: grep -q 'Adding' stdout" +at_fn_check_prepare_trace "divert.at:636" +( $at_check_trace; grep -q 'Adding' stdout +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +at_fn_diff_devnull "$at_stdout" || at_failed=: +at_fn_check_status 0 $at_status "$at_srcdir/divert.at:636" +$at_failed && at_fn_log_failure +$at_traceon; } + +{ set +x +printf "%s\n" "$at_srcdir/divert.at:637: grep -q 'remov.*old' stderr" +at_fn_check_prepare_trace "divert.at:637" +( $at_check_trace; grep -q 'remov.*old' stderr +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +at_fn_diff_devnull "$at_stderr" || at_failed=: +at_fn_diff_devnull "$at_stdout" || at_failed=: +at_fn_check_status 0 $at_status "$at_srcdir/divert.at:637" +$at_failed && at_fn_log_failure +$at_traceon; } + + + set +x + $at_times_p && times >"$at_times_file" +) 5>&1 2>&1 7>&- | eval $at_tee_pipe +read at_status <"$at_status_file" +#AT_STOP_38 +#AT_START_39 +at_fn_group_banner 39 'chdir.at:5' \ + "dpkg chdir opts" " " 5 +at_xfail=no +( + printf "%s\n" "39. $at_setup_line: testing $at_desc ..." + $at_traceon + + + + DPKG_ROOT= + DPKG_ADMINDIR= + + { set +x +printf "%s\n" "$at_srcdir/chdir.at:5: DPKG_DEBUG=1 dpkg --version --root=/rootdir_opt" +at_fn_check_prepare_trace "chdir.at:5" +( $at_check_trace; DPKG_DEBUG=1 dpkg --version --root=/rootdir_opt +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "D000001: root=/rootdir_opt admindir=/rootdir_opt$DEFAULT_ADMINDIR +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/chdir.at:5" +$at_failed && at_fn_log_failure +$at_traceon; } + + { set +x +printf "%s\n" "$at_srcdir/chdir.at:5: DPKG_DEBUG=1 dpkg --version --admindir=/admindir_opt" +at_fn_check_prepare_trace "chdir.at:5" +( $at_check_trace; DPKG_DEBUG=1 dpkg --version --admindir=/admindir_opt +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "D000001: root=$DEFAULT_ROOTDIR admindir=/admindir_opt +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/chdir.at:5" +$at_failed && at_fn_log_failure +$at_traceon; } + + { set +x +printf "%s\n" "$at_srcdir/chdir.at:5: DPKG_DEBUG=1 dpkg --version --instdir=/instdir_opt" +at_fn_check_prepare_trace "chdir.at:5" +( $at_check_trace; DPKG_DEBUG=1 dpkg --version --instdir=/instdir_opt +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "D000001: root=/instdir_opt admindir=$DEFAULT_ADMINDIR +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/chdir.at:5" +$at_failed && at_fn_log_failure +$at_traceon; } + + { set +x +printf "%s\n" "$at_srcdir/chdir.at:5: DPKG_DEBUG=1 dpkg --version --root=/rootdir_opt --admindir=/admindir_opt" +at_fn_check_prepare_trace "chdir.at:5" +( $at_check_trace; DPKG_DEBUG=1 dpkg --version --root=/rootdir_opt --admindir=/admindir_opt +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "D000001: root=/rootdir_opt admindir=/admindir_opt +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/chdir.at:5" +$at_failed && at_fn_log_failure +$at_traceon; } + + { set +x +printf "%s\n" "$at_srcdir/chdir.at:5: DPKG_DEBUG=1 dpkg --version --admindir=/admindir_opt --root=/rootdir_opt" +at_fn_check_prepare_trace "chdir.at:5" +( $at_check_trace; DPKG_DEBUG=1 dpkg --version --admindir=/admindir_opt --root=/rootdir_opt +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "D000001: root=/rootdir_opt admindir=/rootdir_opt$DEFAULT_ADMINDIR +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/chdir.at:5" +$at_failed && at_fn_log_failure +$at_traceon; } + + { set +x +printf "%s\n" "$at_srcdir/chdir.at:5: DPKG_DEBUG=1 dpkg --version --root=/rootdir_opt --instdir=/instdir_opt" +at_fn_check_prepare_trace "chdir.at:5" +( $at_check_trace; DPKG_DEBUG=1 dpkg --version --root=/rootdir_opt --instdir=/instdir_opt +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "D000001: root=/instdir_opt admindir=/rootdir_opt$DEFAULT_ADMINDIR +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/chdir.at:5" +$at_failed && at_fn_log_failure +$at_traceon; } + + { set +x +printf "%s\n" "$at_srcdir/chdir.at:5: DPKG_DEBUG=1 dpkg --version --instdir=/instdir_opt --root=/rootdir_opt" +at_fn_check_prepare_trace "chdir.at:5" +( $at_check_trace; DPKG_DEBUG=1 dpkg --version --instdir=/instdir_opt --root=/rootdir_opt +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "D000001: root=/rootdir_opt admindir=/rootdir_opt$DEFAULT_ADMINDIR +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/chdir.at:5" +$at_failed && at_fn_log_failure +$at_traceon; } + + { set +x +printf "%s\n" "$at_srcdir/chdir.at:5: DPKG_DEBUG=1 dpkg --version --instdir=/instdir_opt --admindir=/admindir_opt" +at_fn_check_prepare_trace "chdir.at:5" +( $at_check_trace; DPKG_DEBUG=1 dpkg --version --instdir=/instdir_opt --admindir=/admindir_opt +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "D000001: root=/instdir_opt admindir=/admindir_opt +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/chdir.at:5" +$at_failed && at_fn_log_failure +$at_traceon; } + + { set +x +printf "%s\n" "$at_srcdir/chdir.at:5: DPKG_DEBUG=1 dpkg --version --admindir=/admindir_opt --instdir=/instdir_opt" +at_fn_check_prepare_trace "chdir.at:5" +( $at_check_trace; DPKG_DEBUG=1 dpkg --version --admindir=/admindir_opt --instdir=/instdir_opt +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "D000001: root=/instdir_opt admindir=/admindir_opt +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/chdir.at:5" +$at_failed && at_fn_log_failure +$at_traceon; } + + { set +x +printf "%s\n" "$at_srcdir/chdir.at:5: DPKG_DEBUG=1 dpkg --version --root=/rootdir_opt --admindir=/admindir_opt --instdir=/instdir_opt" +at_fn_check_prepare_trace "chdir.at:5" +( $at_check_trace; DPKG_DEBUG=1 dpkg --version --root=/rootdir_opt --admindir=/admindir_opt --instdir=/instdir_opt +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "D000001: root=/instdir_opt admindir=/admindir_opt +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/chdir.at:5" +$at_failed && at_fn_log_failure +$at_traceon; } + + { set +x +printf "%s\n" "$at_srcdir/chdir.at:5: DPKG_DEBUG=1 dpkg --version --admindir=/admindir_opt --instdir=/instdir_opt --root=/rootdir_opt" +at_fn_check_prepare_trace "chdir.at:5" +( $at_check_trace; DPKG_DEBUG=1 dpkg --version --admindir=/admindir_opt --instdir=/instdir_opt --root=/rootdir_opt +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "D000001: root=/rootdir_opt admindir=/rootdir_opt$DEFAULT_ADMINDIR +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/chdir.at:5" +$at_failed && at_fn_log_failure +$at_traceon; } + + + set +x + $at_times_p && times >"$at_times_file" +) 5>&1 2>&1 7>&- | eval $at_tee_pipe +read at_status <"$at_status_file" +#AT_STOP_39 +#AT_START_40 +at_fn_group_banner 40 'chdir.at:5' \ + "dpkg chdir env" " " 5 +at_xfail=no +( + printf "%s\n" "40. $at_setup_line: testing $at_desc ..." + $at_traceon + + + + DPKG_ROOT= + DPKG_ADMINDIR= + + { set +x +printf "%s\n" "$at_srcdir/chdir.at:5: DPKG_ADMINDIR=/admindir_env \\ + DPKG_DEBUG=1 dpkg --version" +at_fn_check_prepare_notrace 'an embedded newline' "chdir.at:5" +( $at_check_trace; DPKG_ADMINDIR=/admindir_env \ + DPKG_DEBUG=1 dpkg --version +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "D000001: root=$DEFAULT_ROOTDIR admindir=/admindir_env +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/chdir.at:5" +$at_failed && at_fn_log_failure +$at_traceon; } + + { set +x +printf "%s\n" "$at_srcdir/chdir.at:5: DPKG_ROOT=/rootdir_env \\ + DPKG_DEBUG=1 dpkg --version" +at_fn_check_prepare_notrace 'an embedded newline' "chdir.at:5" +( $at_check_trace; DPKG_ROOT=/rootdir_env \ + DPKG_DEBUG=1 dpkg --version +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "D000001: root=/rootdir_env admindir=/rootdir_env$DEFAULT_ADMINDIR +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/chdir.at:5" +$at_failed && at_fn_log_failure +$at_traceon; } + + { set +x +printf "%s\n" "$at_srcdir/chdir.at:5: DPKG_ROOT=/rootdir_env DPKG_ADMINDIR=/admindir_env \\ + DPKG_DEBUG=1 dpkg --version" +at_fn_check_prepare_notrace 'an embedded newline' "chdir.at:5" +( $at_check_trace; DPKG_ROOT=/rootdir_env DPKG_ADMINDIR=/admindir_env \ + DPKG_DEBUG=1 dpkg --version +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "D000001: root=/rootdir_env admindir=/admindir_env +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/chdir.at:5" +$at_failed && at_fn_log_failure +$at_traceon; } + + + set +x + $at_times_p && times >"$at_times_file" +) 5>&1 2>&1 7>&- | eval $at_tee_pipe +read at_status <"$at_status_file" +#AT_STOP_40 +#AT_START_41 +at_fn_group_banner 41 'chdir.at:5' \ + "dpkg chdir env+opt admindir" " " 5 +at_xfail=no +( + printf "%s\n" "41. $at_setup_line: testing $at_desc ..." + $at_traceon + + + + DPKG_ROOT= + DPKG_ADMINDIR= + + { set +x +printf "%s\n" "$at_srcdir/chdir.at:5: DPKG_ADMINDIR=/admindir_env \\ + DPKG_DEBUG=1 dpkg --version --root=/rootdir_opt" +at_fn_check_prepare_notrace 'an embedded newline' "chdir.at:5" +( $at_check_trace; DPKG_ADMINDIR=/admindir_env \ + DPKG_DEBUG=1 dpkg --version --root=/rootdir_opt +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "D000001: root=/rootdir_opt admindir=/rootdir_opt$DEFAULT_ADMINDIR +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/chdir.at:5" +$at_failed && at_fn_log_failure +$at_traceon; } + + { set +x +printf "%s\n" "$at_srcdir/chdir.at:5: DPKG_ADMINDIR=/admindir_env \\ + DPKG_DEBUG=1 dpkg --version --admindir=/admindir_opt" +at_fn_check_prepare_notrace 'an embedded newline' "chdir.at:5" +( $at_check_trace; DPKG_ADMINDIR=/admindir_env \ + DPKG_DEBUG=1 dpkg --version --admindir=/admindir_opt +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "D000001: root=$DEFAULT_ROOTDIR admindir=/admindir_opt +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/chdir.at:5" +$at_failed && at_fn_log_failure +$at_traceon; } + + { set +x +printf "%s\n" "$at_srcdir/chdir.at:5: DPKG_ADMINDIR=/admindir_env \\ + DPKG_DEBUG=1 dpkg --version --instdir=/instdir_opt" +at_fn_check_prepare_notrace 'an embedded newline' "chdir.at:5" +( $at_check_trace; DPKG_ADMINDIR=/admindir_env \ + DPKG_DEBUG=1 dpkg --version --instdir=/instdir_opt +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "D000001: root=/instdir_opt admindir=/admindir_env +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/chdir.at:5" +$at_failed && at_fn_log_failure +$at_traceon; } + + { set +x +printf "%s\n" "$at_srcdir/chdir.at:5: DPKG_ADMINDIR=/admindir_env \\ + DPKG_DEBUG=1 dpkg --version --root=/rootdir_opt --admindir=/admindir_opt" +at_fn_check_prepare_notrace 'an embedded newline' "chdir.at:5" +( $at_check_trace; DPKG_ADMINDIR=/admindir_env \ + DPKG_DEBUG=1 dpkg --version --root=/rootdir_opt --admindir=/admindir_opt +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "D000001: root=/rootdir_opt admindir=/admindir_opt +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/chdir.at:5" +$at_failed && at_fn_log_failure +$at_traceon; } + + { set +x +printf "%s\n" "$at_srcdir/chdir.at:5: DPKG_ADMINDIR=/admindir_env \\ + DPKG_DEBUG=1 dpkg --version --admindir=/admindir_opt --root=/rootdir_opt" +at_fn_check_prepare_notrace 'an embedded newline' "chdir.at:5" +( $at_check_trace; DPKG_ADMINDIR=/admindir_env \ + DPKG_DEBUG=1 dpkg --version --admindir=/admindir_opt --root=/rootdir_opt +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "D000001: root=/rootdir_opt admindir=/rootdir_opt$DEFAULT_ADMINDIR +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/chdir.at:5" +$at_failed && at_fn_log_failure +$at_traceon; } + + { set +x +printf "%s\n" "$at_srcdir/chdir.at:5: DPKG_ADMINDIR=/admindir_env \\ + DPKG_DEBUG=1 dpkg --version --root=/rootdir_opt --instdir=/instdir_opt" +at_fn_check_prepare_notrace 'an embedded newline' "chdir.at:5" +( $at_check_trace; DPKG_ADMINDIR=/admindir_env \ + DPKG_DEBUG=1 dpkg --version --root=/rootdir_opt --instdir=/instdir_opt +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "D000001: root=/instdir_opt admindir=/rootdir_opt$DEFAULT_ADMINDIR +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/chdir.at:5" +$at_failed && at_fn_log_failure +$at_traceon; } + + { set +x +printf "%s\n" "$at_srcdir/chdir.at:5: DPKG_ADMINDIR=/admindir_env \\ + DPKG_DEBUG=1 dpkg --version --instdir=/instdir_opt --root=/rootdir_opt" +at_fn_check_prepare_notrace 'an embedded newline' "chdir.at:5" +( $at_check_trace; DPKG_ADMINDIR=/admindir_env \ + DPKG_DEBUG=1 dpkg --version --instdir=/instdir_opt --root=/rootdir_opt +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "D000001: root=/rootdir_opt admindir=/rootdir_opt$DEFAULT_ADMINDIR +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/chdir.at:5" +$at_failed && at_fn_log_failure +$at_traceon; } + + { set +x +printf "%s\n" "$at_srcdir/chdir.at:5: DPKG_ADMINDIR=/admindir_env \\ + DPKG_DEBUG=1 dpkg --version --instdir=/instdir_opt --admindir=/admindir_opt" +at_fn_check_prepare_notrace 'an embedded newline' "chdir.at:5" +( $at_check_trace; DPKG_ADMINDIR=/admindir_env \ + DPKG_DEBUG=1 dpkg --version --instdir=/instdir_opt --admindir=/admindir_opt +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "D000001: root=/instdir_opt admindir=/admindir_opt +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/chdir.at:5" +$at_failed && at_fn_log_failure +$at_traceon; } + + { set +x +printf "%s\n" "$at_srcdir/chdir.at:5: DPKG_ADMINDIR=/admindir_env \\ + DPKG_DEBUG=1 dpkg --version --admindir=/admindir_opt --instdir=/instdir_opt" +at_fn_check_prepare_notrace 'an embedded newline' "chdir.at:5" +( $at_check_trace; DPKG_ADMINDIR=/admindir_env \ + DPKG_DEBUG=1 dpkg --version --admindir=/admindir_opt --instdir=/instdir_opt +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "D000001: root=/instdir_opt admindir=/admindir_opt +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/chdir.at:5" +$at_failed && at_fn_log_failure +$at_traceon; } + + { set +x +printf "%s\n" "$at_srcdir/chdir.at:5: DPKG_ADMINDIR=/admindir_env \\ + DPKG_DEBUG=1 dpkg --version --root=/rootdir_opt --admindir=/admindir_opt --instdir=/instdir_opt" +at_fn_check_prepare_notrace 'an embedded newline' "chdir.at:5" +( $at_check_trace; DPKG_ADMINDIR=/admindir_env \ + DPKG_DEBUG=1 dpkg --version --root=/rootdir_opt --admindir=/admindir_opt --instdir=/instdir_opt +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "D000001: root=/instdir_opt admindir=/admindir_opt +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/chdir.at:5" +$at_failed && at_fn_log_failure +$at_traceon; } + + { set +x +printf "%s\n" "$at_srcdir/chdir.at:5: DPKG_ADMINDIR=/admindir_env \\ + DPKG_DEBUG=1 dpkg --version --admindir=/admindir_opt --instdir=/instdir_opt --root=/rootdir_opt" +at_fn_check_prepare_notrace 'an embedded newline' "chdir.at:5" +( $at_check_trace; DPKG_ADMINDIR=/admindir_env \ + DPKG_DEBUG=1 dpkg --version --admindir=/admindir_opt --instdir=/instdir_opt --root=/rootdir_opt +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "D000001: root=/rootdir_opt admindir=/rootdir_opt$DEFAULT_ADMINDIR +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/chdir.at:5" +$at_failed && at_fn_log_failure +$at_traceon; } + + + set +x + $at_times_p && times >"$at_times_file" +) 5>&1 2>&1 7>&- | eval $at_tee_pipe +read at_status <"$at_status_file" +#AT_STOP_41 +#AT_START_42 +at_fn_group_banner 42 'chdir.at:5' \ + "dpkg chdir env+opt root" " " 5 +at_xfail=no +( + printf "%s\n" "42. $at_setup_line: testing $at_desc ..." + $at_traceon + + + + DPKG_ROOT= + DPKG_ADMINDIR= + + { set +x +printf "%s\n" "$at_srcdir/chdir.at:5: DPKG_ROOT=/rootdir_env \\ + DPKG_DEBUG=1 dpkg --version --root=/rootdir_opt" +at_fn_check_prepare_notrace 'an embedded newline' "chdir.at:5" +( $at_check_trace; DPKG_ROOT=/rootdir_env \ + DPKG_DEBUG=1 dpkg --version --root=/rootdir_opt +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "D000001: root=/rootdir_opt admindir=/rootdir_opt$DEFAULT_ADMINDIR +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/chdir.at:5" +$at_failed && at_fn_log_failure +$at_traceon; } + + { set +x +printf "%s\n" "$at_srcdir/chdir.at:5: DPKG_ROOT=/rootdir_env \\ + DPKG_DEBUG=1 dpkg --version --admindir=/admindir_opt" +at_fn_check_prepare_notrace 'an embedded newline' "chdir.at:5" +( $at_check_trace; DPKG_ROOT=/rootdir_env \ + DPKG_DEBUG=1 dpkg --version --admindir=/admindir_opt +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "D000001: root=/rootdir_env admindir=/admindir_opt +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/chdir.at:5" +$at_failed && at_fn_log_failure +$at_traceon; } + + { set +x +printf "%s\n" "$at_srcdir/chdir.at:5: DPKG_ROOT=/rootdir_env \\ + DPKG_DEBUG=1 dpkg --version --instdir=/instdir_opt" +at_fn_check_prepare_notrace 'an embedded newline' "chdir.at:5" +( $at_check_trace; DPKG_ROOT=/rootdir_env \ + DPKG_DEBUG=1 dpkg --version --instdir=/instdir_opt +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "D000001: root=/instdir_opt admindir=/rootdir_env$DEFAULT_ADMINDIR +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/chdir.at:5" +$at_failed && at_fn_log_failure +$at_traceon; } + + { set +x +printf "%s\n" "$at_srcdir/chdir.at:5: DPKG_ROOT=/rootdir_env \\ + DPKG_DEBUG=1 dpkg --version --root=/rootdir_opt --admindir=/admindir_opt" +at_fn_check_prepare_notrace 'an embedded newline' "chdir.at:5" +( $at_check_trace; DPKG_ROOT=/rootdir_env \ + DPKG_DEBUG=1 dpkg --version --root=/rootdir_opt --admindir=/admindir_opt +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "D000001: root=/rootdir_opt admindir=/admindir_opt +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/chdir.at:5" +$at_failed && at_fn_log_failure +$at_traceon; } + + { set +x +printf "%s\n" "$at_srcdir/chdir.at:5: DPKG_ROOT=/rootdir_env \\ + DPKG_DEBUG=1 dpkg --version --admindir=/admindir_opt --root=/rootdir_opt" +at_fn_check_prepare_notrace 'an embedded newline' "chdir.at:5" +( $at_check_trace; DPKG_ROOT=/rootdir_env \ + DPKG_DEBUG=1 dpkg --version --admindir=/admindir_opt --root=/rootdir_opt +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "D000001: root=/rootdir_opt admindir=/rootdir_opt$DEFAULT_ADMINDIR +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/chdir.at:5" +$at_failed && at_fn_log_failure +$at_traceon; } + + { set +x +printf "%s\n" "$at_srcdir/chdir.at:5: DPKG_ROOT=/rootdir_env \\ + DPKG_DEBUG=1 dpkg --version --root=/rootdir_opt --instdir=/instdir_opt" +at_fn_check_prepare_notrace 'an embedded newline' "chdir.at:5" +( $at_check_trace; DPKG_ROOT=/rootdir_env \ + DPKG_DEBUG=1 dpkg --version --root=/rootdir_opt --instdir=/instdir_opt +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "D000001: root=/instdir_opt admindir=/rootdir_opt$DEFAULT_ADMINDIR +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/chdir.at:5" +$at_failed && at_fn_log_failure +$at_traceon; } + + { set +x +printf "%s\n" "$at_srcdir/chdir.at:5: DPKG_ROOT=/rootdir_env \\ + DPKG_DEBUG=1 dpkg --version --instdir=/instdir_opt --root=/rootdir_opt" +at_fn_check_prepare_notrace 'an embedded newline' "chdir.at:5" +( $at_check_trace; DPKG_ROOT=/rootdir_env \ + DPKG_DEBUG=1 dpkg --version --instdir=/instdir_opt --root=/rootdir_opt +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "D000001: root=/rootdir_opt admindir=/rootdir_opt$DEFAULT_ADMINDIR +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/chdir.at:5" +$at_failed && at_fn_log_failure +$at_traceon; } + + { set +x +printf "%s\n" "$at_srcdir/chdir.at:5: DPKG_ROOT=/rootdir_env \\ + DPKG_DEBUG=1 dpkg --version --instdir=/instdir_opt --admindir=/admindir_opt" +at_fn_check_prepare_notrace 'an embedded newline' "chdir.at:5" +( $at_check_trace; DPKG_ROOT=/rootdir_env \ + DPKG_DEBUG=1 dpkg --version --instdir=/instdir_opt --admindir=/admindir_opt +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "D000001: root=/instdir_opt admindir=/admindir_opt +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/chdir.at:5" +$at_failed && at_fn_log_failure +$at_traceon; } + + { set +x +printf "%s\n" "$at_srcdir/chdir.at:5: DPKG_ROOT=/rootdir_env \\ + DPKG_DEBUG=1 dpkg --version --admindir=/admindir_opt --instdir=/instdir_opt" +at_fn_check_prepare_notrace 'an embedded newline' "chdir.at:5" +( $at_check_trace; DPKG_ROOT=/rootdir_env \ + DPKG_DEBUG=1 dpkg --version --admindir=/admindir_opt --instdir=/instdir_opt +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "D000001: root=/instdir_opt admindir=/admindir_opt +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/chdir.at:5" +$at_failed && at_fn_log_failure +$at_traceon; } + + { set +x +printf "%s\n" "$at_srcdir/chdir.at:5: DPKG_ROOT=/rootdir_env \\ + DPKG_DEBUG=1 dpkg --version --root=/rootdir_opt --admindir=/admindir_opt --instdir=/instdir_opt" +at_fn_check_prepare_notrace 'an embedded newline' "chdir.at:5" +( $at_check_trace; DPKG_ROOT=/rootdir_env \ + DPKG_DEBUG=1 dpkg --version --root=/rootdir_opt --admindir=/admindir_opt --instdir=/instdir_opt +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "D000001: root=/instdir_opt admindir=/admindir_opt +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/chdir.at:5" +$at_failed && at_fn_log_failure +$at_traceon; } + + { set +x +printf "%s\n" "$at_srcdir/chdir.at:5: DPKG_ROOT=/rootdir_env \\ + DPKG_DEBUG=1 dpkg --version --admindir=/admindir_opt --instdir=/instdir_opt --root=/rootdir_opt" +at_fn_check_prepare_notrace 'an embedded newline' "chdir.at:5" +( $at_check_trace; DPKG_ROOT=/rootdir_env \ + DPKG_DEBUG=1 dpkg --version --admindir=/admindir_opt --instdir=/instdir_opt --root=/rootdir_opt +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "D000001: root=/rootdir_opt admindir=/rootdir_opt$DEFAULT_ADMINDIR +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/chdir.at:5" +$at_failed && at_fn_log_failure +$at_traceon; } + + + set +x + $at_times_p && times >"$at_times_file" +) 5>&1 2>&1 7>&- | eval $at_tee_pipe +read at_status <"$at_status_file" +#AT_STOP_42 +#AT_START_43 +at_fn_group_banner 43 'chdir.at:5' \ + "dpkg chdir env+opt root+admindir" " " 5 +at_xfail=no +( + printf "%s\n" "43. $at_setup_line: testing $at_desc ..." + $at_traceon + + + + DPKG_ROOT= + DPKG_ADMINDIR= + + { set +x +printf "%s\n" "$at_srcdir/chdir.at:5: DPKG_ROOT=/rootdir_env DPKG_ADMINDIR=/admindir_env \\ + DPKG_DEBUG=1 dpkg --version --root=/rootdir_opt" +at_fn_check_prepare_notrace 'an embedded newline' "chdir.at:5" +( $at_check_trace; DPKG_ROOT=/rootdir_env DPKG_ADMINDIR=/admindir_env \ + DPKG_DEBUG=1 dpkg --version --root=/rootdir_opt +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "D000001: root=/rootdir_opt admindir=/rootdir_opt$DEFAULT_ADMINDIR +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/chdir.at:5" +$at_failed && at_fn_log_failure +$at_traceon; } + + { set +x +printf "%s\n" "$at_srcdir/chdir.at:5: DPKG_ROOT=/rootdir_env DPKG_ADMINDIR=/admindir_env \\ + DPKG_DEBUG=1 dpkg --version --admindir=/admindir_opt" +at_fn_check_prepare_notrace 'an embedded newline' "chdir.at:5" +( $at_check_trace; DPKG_ROOT=/rootdir_env DPKG_ADMINDIR=/admindir_env \ + DPKG_DEBUG=1 dpkg --version --admindir=/admindir_opt +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "D000001: root=/rootdir_env admindir=/admindir_opt +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/chdir.at:5" +$at_failed && at_fn_log_failure +$at_traceon; } + + { set +x +printf "%s\n" "$at_srcdir/chdir.at:5: DPKG_ROOT=/rootdir_env DPKG_ADMINDIR=/admindir_env \\ + DPKG_DEBUG=1 dpkg --version --instdir=/instdir_opt" +at_fn_check_prepare_notrace 'an embedded newline' "chdir.at:5" +( $at_check_trace; DPKG_ROOT=/rootdir_env DPKG_ADMINDIR=/admindir_env \ + DPKG_DEBUG=1 dpkg --version --instdir=/instdir_opt +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "D000001: root=/instdir_opt admindir=/admindir_env +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/chdir.at:5" +$at_failed && at_fn_log_failure +$at_traceon; } + + { set +x +printf "%s\n" "$at_srcdir/chdir.at:5: DPKG_ROOT=/rootdir_env DPKG_ADMINDIR=/admindir_env \\ + DPKG_DEBUG=1 dpkg --version --root=/rootdir_opt --admindir=/admindir_opt" +at_fn_check_prepare_notrace 'an embedded newline' "chdir.at:5" +( $at_check_trace; DPKG_ROOT=/rootdir_env DPKG_ADMINDIR=/admindir_env \ + DPKG_DEBUG=1 dpkg --version --root=/rootdir_opt --admindir=/admindir_opt +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "D000001: root=/rootdir_opt admindir=/admindir_opt +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/chdir.at:5" +$at_failed && at_fn_log_failure +$at_traceon; } + + { set +x +printf "%s\n" "$at_srcdir/chdir.at:5: DPKG_ROOT=/rootdir_env DPKG_ADMINDIR=/admindir_env \\ + DPKG_DEBUG=1 dpkg --version --admindir=/admindir_opt --root=/rootdir_opt" +at_fn_check_prepare_notrace 'an embedded newline' "chdir.at:5" +( $at_check_trace; DPKG_ROOT=/rootdir_env DPKG_ADMINDIR=/admindir_env \ + DPKG_DEBUG=1 dpkg --version --admindir=/admindir_opt --root=/rootdir_opt +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "D000001: root=/rootdir_opt admindir=/rootdir_opt$DEFAULT_ADMINDIR +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/chdir.at:5" +$at_failed && at_fn_log_failure +$at_traceon; } + + { set +x +printf "%s\n" "$at_srcdir/chdir.at:5: DPKG_ROOT=/rootdir_env DPKG_ADMINDIR=/admindir_env \\ + DPKG_DEBUG=1 dpkg --version --root=/rootdir_opt --instdir=/instdir_opt" +at_fn_check_prepare_notrace 'an embedded newline' "chdir.at:5" +( $at_check_trace; DPKG_ROOT=/rootdir_env DPKG_ADMINDIR=/admindir_env \ + DPKG_DEBUG=1 dpkg --version --root=/rootdir_opt --instdir=/instdir_opt +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "D000001: root=/instdir_opt admindir=/rootdir_opt$DEFAULT_ADMINDIR +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/chdir.at:5" +$at_failed && at_fn_log_failure +$at_traceon; } + + { set +x +printf "%s\n" "$at_srcdir/chdir.at:5: DPKG_ROOT=/rootdir_env DPKG_ADMINDIR=/admindir_env \\ + DPKG_DEBUG=1 dpkg --version --instdir=/instdir_opt --root=/rootdir_opt" +at_fn_check_prepare_notrace 'an embedded newline' "chdir.at:5" +( $at_check_trace; DPKG_ROOT=/rootdir_env DPKG_ADMINDIR=/admindir_env \ + DPKG_DEBUG=1 dpkg --version --instdir=/instdir_opt --root=/rootdir_opt +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "D000001: root=/rootdir_opt admindir=/rootdir_opt$DEFAULT_ADMINDIR +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/chdir.at:5" +$at_failed && at_fn_log_failure +$at_traceon; } + + { set +x +printf "%s\n" "$at_srcdir/chdir.at:5: DPKG_ROOT=/rootdir_env DPKG_ADMINDIR=/admindir_env \\ + DPKG_DEBUG=1 dpkg --version --instdir=/instdir_opt --admindir=/admindir_opt" +at_fn_check_prepare_notrace 'an embedded newline' "chdir.at:5" +( $at_check_trace; DPKG_ROOT=/rootdir_env DPKG_ADMINDIR=/admindir_env \ + DPKG_DEBUG=1 dpkg --version --instdir=/instdir_opt --admindir=/admindir_opt +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "D000001: root=/instdir_opt admindir=/admindir_opt +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/chdir.at:5" +$at_failed && at_fn_log_failure +$at_traceon; } + + { set +x +printf "%s\n" "$at_srcdir/chdir.at:5: DPKG_ROOT=/rootdir_env DPKG_ADMINDIR=/admindir_env \\ + DPKG_DEBUG=1 dpkg --version --admindir=/admindir_opt --instdir=/instdir_opt" +at_fn_check_prepare_notrace 'an embedded newline' "chdir.at:5" +( $at_check_trace; DPKG_ROOT=/rootdir_env DPKG_ADMINDIR=/admindir_env \ + DPKG_DEBUG=1 dpkg --version --admindir=/admindir_opt --instdir=/instdir_opt +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "D000001: root=/instdir_opt admindir=/admindir_opt +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/chdir.at:5" +$at_failed && at_fn_log_failure +$at_traceon; } + + { set +x +printf "%s\n" "$at_srcdir/chdir.at:5: DPKG_ROOT=/rootdir_env DPKG_ADMINDIR=/admindir_env \\ + DPKG_DEBUG=1 dpkg --version --root=/rootdir_opt --admindir=/admindir_opt --instdir=/instdir_opt" +at_fn_check_prepare_notrace 'an embedded newline' "chdir.at:5" +( $at_check_trace; DPKG_ROOT=/rootdir_env DPKG_ADMINDIR=/admindir_env \ + DPKG_DEBUG=1 dpkg --version --root=/rootdir_opt --admindir=/admindir_opt --instdir=/instdir_opt +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "D000001: root=/instdir_opt admindir=/admindir_opt +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/chdir.at:5" +$at_failed && at_fn_log_failure +$at_traceon; } + + { set +x +printf "%s\n" "$at_srcdir/chdir.at:5: DPKG_ROOT=/rootdir_env DPKG_ADMINDIR=/admindir_env \\ + DPKG_DEBUG=1 dpkg --version --admindir=/admindir_opt --instdir=/instdir_opt --root=/rootdir_opt" +at_fn_check_prepare_notrace 'an embedded newline' "chdir.at:5" +( $at_check_trace; DPKG_ROOT=/rootdir_env DPKG_ADMINDIR=/admindir_env \ + DPKG_DEBUG=1 dpkg --version --admindir=/admindir_opt --instdir=/instdir_opt --root=/rootdir_opt +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "D000001: root=/rootdir_opt admindir=/rootdir_opt$DEFAULT_ADMINDIR +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/chdir.at:5" +$at_failed && at_fn_log_failure +$at_traceon; } + + + set +x + $at_times_p && times >"$at_times_file" +) 5>&1 2>&1 7>&- | eval $at_tee_pipe +read at_status <"$at_status_file" +#AT_STOP_43 +#AT_START_44 +at_fn_group_banner 44 'chdir.at:5' \ + "dpkg-divert chdir opts" " " 5 +at_xfail=no +( + printf "%s\n" "44. $at_setup_line: testing $at_desc ..." + $at_traceon + + + + DPKG_ROOT= + DPKG_ADMINDIR= + + { set +x +printf "%s\n" "$at_srcdir/chdir.at:5: DPKG_DEBUG=1 dpkg-divert --version --root=/rootdir_opt" +at_fn_check_prepare_trace "chdir.at:5" +( $at_check_trace; DPKG_DEBUG=1 dpkg-divert --version --root=/rootdir_opt +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "D000001: root=/rootdir_opt admindir=/rootdir_opt$DEFAULT_ADMINDIR +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/chdir.at:5" +$at_failed && at_fn_log_failure +$at_traceon; } + + { set +x +printf "%s\n" "$at_srcdir/chdir.at:5: DPKG_DEBUG=1 dpkg-divert --version --admindir=/admindir_opt" +at_fn_check_prepare_trace "chdir.at:5" +( $at_check_trace; DPKG_DEBUG=1 dpkg-divert --version --admindir=/admindir_opt +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "D000001: root=$DEFAULT_ROOTDIR admindir=/admindir_opt +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/chdir.at:5" +$at_failed && at_fn_log_failure +$at_traceon; } + + { set +x +printf "%s\n" "$at_srcdir/chdir.at:5: DPKG_DEBUG=1 dpkg-divert --version --instdir=/instdir_opt" +at_fn_check_prepare_trace "chdir.at:5" +( $at_check_trace; DPKG_DEBUG=1 dpkg-divert --version --instdir=/instdir_opt +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "D000001: root=/instdir_opt admindir=$DEFAULT_ADMINDIR +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/chdir.at:5" +$at_failed && at_fn_log_failure +$at_traceon; } + + { set +x +printf "%s\n" "$at_srcdir/chdir.at:5: DPKG_DEBUG=1 dpkg-divert --version --root=/rootdir_opt --admindir=/admindir_opt" +at_fn_check_prepare_trace "chdir.at:5" +( $at_check_trace; DPKG_DEBUG=1 dpkg-divert --version --root=/rootdir_opt --admindir=/admindir_opt +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "D000001: root=/rootdir_opt admindir=/admindir_opt +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/chdir.at:5" +$at_failed && at_fn_log_failure +$at_traceon; } + + { set +x +printf "%s\n" "$at_srcdir/chdir.at:5: DPKG_DEBUG=1 dpkg-divert --version --admindir=/admindir_opt --root=/rootdir_opt" +at_fn_check_prepare_trace "chdir.at:5" +( $at_check_trace; DPKG_DEBUG=1 dpkg-divert --version --admindir=/admindir_opt --root=/rootdir_opt +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "D000001: root=/rootdir_opt admindir=/rootdir_opt$DEFAULT_ADMINDIR +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/chdir.at:5" +$at_failed && at_fn_log_failure +$at_traceon; } + + { set +x +printf "%s\n" "$at_srcdir/chdir.at:5: DPKG_DEBUG=1 dpkg-divert --version --root=/rootdir_opt --instdir=/instdir_opt" +at_fn_check_prepare_trace "chdir.at:5" +( $at_check_trace; DPKG_DEBUG=1 dpkg-divert --version --root=/rootdir_opt --instdir=/instdir_opt +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "D000001: root=/instdir_opt admindir=/rootdir_opt$DEFAULT_ADMINDIR +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/chdir.at:5" +$at_failed && at_fn_log_failure +$at_traceon; } + + { set +x +printf "%s\n" "$at_srcdir/chdir.at:5: DPKG_DEBUG=1 dpkg-divert --version --instdir=/instdir_opt --root=/rootdir_opt" +at_fn_check_prepare_trace "chdir.at:5" +( $at_check_trace; DPKG_DEBUG=1 dpkg-divert --version --instdir=/instdir_opt --root=/rootdir_opt +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "D000001: root=/rootdir_opt admindir=/rootdir_opt$DEFAULT_ADMINDIR +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/chdir.at:5" +$at_failed && at_fn_log_failure +$at_traceon; } + + { set +x +printf "%s\n" "$at_srcdir/chdir.at:5: DPKG_DEBUG=1 dpkg-divert --version --instdir=/instdir_opt --admindir=/admindir_opt" +at_fn_check_prepare_trace "chdir.at:5" +( $at_check_trace; DPKG_DEBUG=1 dpkg-divert --version --instdir=/instdir_opt --admindir=/admindir_opt +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "D000001: root=/instdir_opt admindir=/admindir_opt +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/chdir.at:5" +$at_failed && at_fn_log_failure +$at_traceon; } + + { set +x +printf "%s\n" "$at_srcdir/chdir.at:5: DPKG_DEBUG=1 dpkg-divert --version --admindir=/admindir_opt --instdir=/instdir_opt" +at_fn_check_prepare_trace "chdir.at:5" +( $at_check_trace; DPKG_DEBUG=1 dpkg-divert --version --admindir=/admindir_opt --instdir=/instdir_opt +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "D000001: root=/instdir_opt admindir=/admindir_opt +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/chdir.at:5" +$at_failed && at_fn_log_failure +$at_traceon; } + + { set +x +printf "%s\n" "$at_srcdir/chdir.at:5: DPKG_DEBUG=1 dpkg-divert --version --root=/rootdir_opt --admindir=/admindir_opt --instdir=/instdir_opt" +at_fn_check_prepare_trace "chdir.at:5" +( $at_check_trace; DPKG_DEBUG=1 dpkg-divert --version --root=/rootdir_opt --admindir=/admindir_opt --instdir=/instdir_opt +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "D000001: root=/instdir_opt admindir=/admindir_opt +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/chdir.at:5" +$at_failed && at_fn_log_failure +$at_traceon; } + + { set +x +printf "%s\n" "$at_srcdir/chdir.at:5: DPKG_DEBUG=1 dpkg-divert --version --admindir=/admindir_opt --instdir=/instdir_opt --root=/rootdir_opt" +at_fn_check_prepare_trace "chdir.at:5" +( $at_check_trace; DPKG_DEBUG=1 dpkg-divert --version --admindir=/admindir_opt --instdir=/instdir_opt --root=/rootdir_opt +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "D000001: root=/rootdir_opt admindir=/rootdir_opt$DEFAULT_ADMINDIR +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/chdir.at:5" +$at_failed && at_fn_log_failure +$at_traceon; } + + + set +x + $at_times_p && times >"$at_times_file" +) 5>&1 2>&1 7>&- | eval $at_tee_pipe +read at_status <"$at_status_file" +#AT_STOP_44 +#AT_START_45 +at_fn_group_banner 45 'chdir.at:5' \ + "dpkg-divert chdir env" " " 5 +at_xfail=no +( + printf "%s\n" "45. $at_setup_line: testing $at_desc ..." + $at_traceon + + + + DPKG_ROOT= + DPKG_ADMINDIR= + + { set +x +printf "%s\n" "$at_srcdir/chdir.at:5: DPKG_ADMINDIR=/admindir_env \\ + DPKG_DEBUG=1 dpkg-divert --version" +at_fn_check_prepare_notrace 'an embedded newline' "chdir.at:5" +( $at_check_trace; DPKG_ADMINDIR=/admindir_env \ + DPKG_DEBUG=1 dpkg-divert --version +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "D000001: root=$DEFAULT_ROOTDIR admindir=/admindir_env +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/chdir.at:5" +$at_failed && at_fn_log_failure +$at_traceon; } + + { set +x +printf "%s\n" "$at_srcdir/chdir.at:5: DPKG_ROOT=/rootdir_env \\ + DPKG_DEBUG=1 dpkg-divert --version" +at_fn_check_prepare_notrace 'an embedded newline' "chdir.at:5" +( $at_check_trace; DPKG_ROOT=/rootdir_env \ + DPKG_DEBUG=1 dpkg-divert --version +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "D000001: root=/rootdir_env admindir=/rootdir_env$DEFAULT_ADMINDIR +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/chdir.at:5" +$at_failed && at_fn_log_failure +$at_traceon; } + + { set +x +printf "%s\n" "$at_srcdir/chdir.at:5: DPKG_ROOT=/rootdir_env DPKG_ADMINDIR=/admindir_env \\ + DPKG_DEBUG=1 dpkg-divert --version" +at_fn_check_prepare_notrace 'an embedded newline' "chdir.at:5" +( $at_check_trace; DPKG_ROOT=/rootdir_env DPKG_ADMINDIR=/admindir_env \ + DPKG_DEBUG=1 dpkg-divert --version +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "D000001: root=/rootdir_env admindir=/admindir_env +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/chdir.at:5" +$at_failed && at_fn_log_failure +$at_traceon; } + + + set +x + $at_times_p && times >"$at_times_file" +) 5>&1 2>&1 7>&- | eval $at_tee_pipe +read at_status <"$at_status_file" +#AT_STOP_45 +#AT_START_46 +at_fn_group_banner 46 'chdir.at:5' \ + "dpkg-divert chdir env+opt admindir" " " 5 +at_xfail=no +( + printf "%s\n" "46. $at_setup_line: testing $at_desc ..." + $at_traceon + + + + DPKG_ROOT= + DPKG_ADMINDIR= + + { set +x +printf "%s\n" "$at_srcdir/chdir.at:5: DPKG_ADMINDIR=/admindir_env \\ + DPKG_DEBUG=1 dpkg-divert --version --root=/rootdir_opt" +at_fn_check_prepare_notrace 'an embedded newline' "chdir.at:5" +( $at_check_trace; DPKG_ADMINDIR=/admindir_env \ + DPKG_DEBUG=1 dpkg-divert --version --root=/rootdir_opt +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "D000001: root=/rootdir_opt admindir=/rootdir_opt$DEFAULT_ADMINDIR +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/chdir.at:5" +$at_failed && at_fn_log_failure +$at_traceon; } + + { set +x +printf "%s\n" "$at_srcdir/chdir.at:5: DPKG_ADMINDIR=/admindir_env \\ + DPKG_DEBUG=1 dpkg-divert --version --admindir=/admindir_opt" +at_fn_check_prepare_notrace 'an embedded newline' "chdir.at:5" +( $at_check_trace; DPKG_ADMINDIR=/admindir_env \ + DPKG_DEBUG=1 dpkg-divert --version --admindir=/admindir_opt +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "D000001: root=$DEFAULT_ROOTDIR admindir=/admindir_opt +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/chdir.at:5" +$at_failed && at_fn_log_failure +$at_traceon; } + + { set +x +printf "%s\n" "$at_srcdir/chdir.at:5: DPKG_ADMINDIR=/admindir_env \\ + DPKG_DEBUG=1 dpkg-divert --version --instdir=/instdir_opt" +at_fn_check_prepare_notrace 'an embedded newline' "chdir.at:5" +( $at_check_trace; DPKG_ADMINDIR=/admindir_env \ + DPKG_DEBUG=1 dpkg-divert --version --instdir=/instdir_opt +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "D000001: root=/instdir_opt admindir=/admindir_env +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/chdir.at:5" +$at_failed && at_fn_log_failure +$at_traceon; } + + { set +x +printf "%s\n" "$at_srcdir/chdir.at:5: DPKG_ADMINDIR=/admindir_env \\ + DPKG_DEBUG=1 dpkg-divert --version --root=/rootdir_opt --admindir=/admindir_opt" +at_fn_check_prepare_notrace 'an embedded newline' "chdir.at:5" +( $at_check_trace; DPKG_ADMINDIR=/admindir_env \ + DPKG_DEBUG=1 dpkg-divert --version --root=/rootdir_opt --admindir=/admindir_opt +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "D000001: root=/rootdir_opt admindir=/admindir_opt +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/chdir.at:5" +$at_failed && at_fn_log_failure +$at_traceon; } + + { set +x +printf "%s\n" "$at_srcdir/chdir.at:5: DPKG_ADMINDIR=/admindir_env \\ + DPKG_DEBUG=1 dpkg-divert --version --admindir=/admindir_opt --root=/rootdir_opt" +at_fn_check_prepare_notrace 'an embedded newline' "chdir.at:5" +( $at_check_trace; DPKG_ADMINDIR=/admindir_env \ + DPKG_DEBUG=1 dpkg-divert --version --admindir=/admindir_opt --root=/rootdir_opt +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "D000001: root=/rootdir_opt admindir=/rootdir_opt$DEFAULT_ADMINDIR +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/chdir.at:5" +$at_failed && at_fn_log_failure +$at_traceon; } + + { set +x +printf "%s\n" "$at_srcdir/chdir.at:5: DPKG_ADMINDIR=/admindir_env \\ + DPKG_DEBUG=1 dpkg-divert --version --root=/rootdir_opt --instdir=/instdir_opt" +at_fn_check_prepare_notrace 'an embedded newline' "chdir.at:5" +( $at_check_trace; DPKG_ADMINDIR=/admindir_env \ + DPKG_DEBUG=1 dpkg-divert --version --root=/rootdir_opt --instdir=/instdir_opt +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "D000001: root=/instdir_opt admindir=/rootdir_opt$DEFAULT_ADMINDIR +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/chdir.at:5" +$at_failed && at_fn_log_failure +$at_traceon; } + + { set +x +printf "%s\n" "$at_srcdir/chdir.at:5: DPKG_ADMINDIR=/admindir_env \\ + DPKG_DEBUG=1 dpkg-divert --version --instdir=/instdir_opt --root=/rootdir_opt" +at_fn_check_prepare_notrace 'an embedded newline' "chdir.at:5" +( $at_check_trace; DPKG_ADMINDIR=/admindir_env \ + DPKG_DEBUG=1 dpkg-divert --version --instdir=/instdir_opt --root=/rootdir_opt +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "D000001: root=/rootdir_opt admindir=/rootdir_opt$DEFAULT_ADMINDIR +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/chdir.at:5" +$at_failed && at_fn_log_failure +$at_traceon; } + + { set +x +printf "%s\n" "$at_srcdir/chdir.at:5: DPKG_ADMINDIR=/admindir_env \\ + DPKG_DEBUG=1 dpkg-divert --version --instdir=/instdir_opt --admindir=/admindir_opt" +at_fn_check_prepare_notrace 'an embedded newline' "chdir.at:5" +( $at_check_trace; DPKG_ADMINDIR=/admindir_env \ + DPKG_DEBUG=1 dpkg-divert --version --instdir=/instdir_opt --admindir=/admindir_opt +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "D000001: root=/instdir_opt admindir=/admindir_opt +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/chdir.at:5" +$at_failed && at_fn_log_failure +$at_traceon; } + + { set +x +printf "%s\n" "$at_srcdir/chdir.at:5: DPKG_ADMINDIR=/admindir_env \\ + DPKG_DEBUG=1 dpkg-divert --version --admindir=/admindir_opt --instdir=/instdir_opt" +at_fn_check_prepare_notrace 'an embedded newline' "chdir.at:5" +( $at_check_trace; DPKG_ADMINDIR=/admindir_env \ + DPKG_DEBUG=1 dpkg-divert --version --admindir=/admindir_opt --instdir=/instdir_opt +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "D000001: root=/instdir_opt admindir=/admindir_opt +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/chdir.at:5" +$at_failed && at_fn_log_failure +$at_traceon; } + + { set +x +printf "%s\n" "$at_srcdir/chdir.at:5: DPKG_ADMINDIR=/admindir_env \\ + DPKG_DEBUG=1 dpkg-divert --version --root=/rootdir_opt --admindir=/admindir_opt --instdir=/instdir_opt" +at_fn_check_prepare_notrace 'an embedded newline' "chdir.at:5" +( $at_check_trace; DPKG_ADMINDIR=/admindir_env \ + DPKG_DEBUG=1 dpkg-divert --version --root=/rootdir_opt --admindir=/admindir_opt --instdir=/instdir_opt +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "D000001: root=/instdir_opt admindir=/admindir_opt +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/chdir.at:5" +$at_failed && at_fn_log_failure +$at_traceon; } + + { set +x +printf "%s\n" "$at_srcdir/chdir.at:5: DPKG_ADMINDIR=/admindir_env \\ + DPKG_DEBUG=1 dpkg-divert --version --admindir=/admindir_opt --instdir=/instdir_opt --root=/rootdir_opt" +at_fn_check_prepare_notrace 'an embedded newline' "chdir.at:5" +( $at_check_trace; DPKG_ADMINDIR=/admindir_env \ + DPKG_DEBUG=1 dpkg-divert --version --admindir=/admindir_opt --instdir=/instdir_opt --root=/rootdir_opt +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "D000001: root=/rootdir_opt admindir=/rootdir_opt$DEFAULT_ADMINDIR +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/chdir.at:5" +$at_failed && at_fn_log_failure +$at_traceon; } + + + set +x + $at_times_p && times >"$at_times_file" +) 5>&1 2>&1 7>&- | eval $at_tee_pipe +read at_status <"$at_status_file" +#AT_STOP_46 +#AT_START_47 +at_fn_group_banner 47 'chdir.at:5' \ + "dpkg-divert chdir env+opt root" " " 5 +at_xfail=no +( + printf "%s\n" "47. $at_setup_line: testing $at_desc ..." + $at_traceon + + + + DPKG_ROOT= + DPKG_ADMINDIR= + + { set +x +printf "%s\n" "$at_srcdir/chdir.at:5: DPKG_ROOT=/rootdir_env \\ + DPKG_DEBUG=1 dpkg-divert --version --root=/rootdir_opt" +at_fn_check_prepare_notrace 'an embedded newline' "chdir.at:5" +( $at_check_trace; DPKG_ROOT=/rootdir_env \ + DPKG_DEBUG=1 dpkg-divert --version --root=/rootdir_opt +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "D000001: root=/rootdir_opt admindir=/rootdir_opt$DEFAULT_ADMINDIR +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/chdir.at:5" +$at_failed && at_fn_log_failure +$at_traceon; } + + { set +x +printf "%s\n" "$at_srcdir/chdir.at:5: DPKG_ROOT=/rootdir_env \\ + DPKG_DEBUG=1 dpkg-divert --version --admindir=/admindir_opt" +at_fn_check_prepare_notrace 'an embedded newline' "chdir.at:5" +( $at_check_trace; DPKG_ROOT=/rootdir_env \ + DPKG_DEBUG=1 dpkg-divert --version --admindir=/admindir_opt +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "D000001: root=/rootdir_env admindir=/admindir_opt +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/chdir.at:5" +$at_failed && at_fn_log_failure +$at_traceon; } + + { set +x +printf "%s\n" "$at_srcdir/chdir.at:5: DPKG_ROOT=/rootdir_env \\ + DPKG_DEBUG=1 dpkg-divert --version --instdir=/instdir_opt" +at_fn_check_prepare_notrace 'an embedded newline' "chdir.at:5" +( $at_check_trace; DPKG_ROOT=/rootdir_env \ + DPKG_DEBUG=1 dpkg-divert --version --instdir=/instdir_opt +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "D000001: root=/instdir_opt admindir=/rootdir_env$DEFAULT_ADMINDIR +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/chdir.at:5" +$at_failed && at_fn_log_failure +$at_traceon; } + + { set +x +printf "%s\n" "$at_srcdir/chdir.at:5: DPKG_ROOT=/rootdir_env \\ + DPKG_DEBUG=1 dpkg-divert --version --root=/rootdir_opt --admindir=/admindir_opt" +at_fn_check_prepare_notrace 'an embedded newline' "chdir.at:5" +( $at_check_trace; DPKG_ROOT=/rootdir_env \ + DPKG_DEBUG=1 dpkg-divert --version --root=/rootdir_opt --admindir=/admindir_opt +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "D000001: root=/rootdir_opt admindir=/admindir_opt +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/chdir.at:5" +$at_failed && at_fn_log_failure +$at_traceon; } + + { set +x +printf "%s\n" "$at_srcdir/chdir.at:5: DPKG_ROOT=/rootdir_env \\ + DPKG_DEBUG=1 dpkg-divert --version --admindir=/admindir_opt --root=/rootdir_opt" +at_fn_check_prepare_notrace 'an embedded newline' "chdir.at:5" +( $at_check_trace; DPKG_ROOT=/rootdir_env \ + DPKG_DEBUG=1 dpkg-divert --version --admindir=/admindir_opt --root=/rootdir_opt +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "D000001: root=/rootdir_opt admindir=/rootdir_opt$DEFAULT_ADMINDIR +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/chdir.at:5" +$at_failed && at_fn_log_failure +$at_traceon; } + + { set +x +printf "%s\n" "$at_srcdir/chdir.at:5: DPKG_ROOT=/rootdir_env \\ + DPKG_DEBUG=1 dpkg-divert --version --root=/rootdir_opt --instdir=/instdir_opt" +at_fn_check_prepare_notrace 'an embedded newline' "chdir.at:5" +( $at_check_trace; DPKG_ROOT=/rootdir_env \ + DPKG_DEBUG=1 dpkg-divert --version --root=/rootdir_opt --instdir=/instdir_opt +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "D000001: root=/instdir_opt admindir=/rootdir_opt$DEFAULT_ADMINDIR +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/chdir.at:5" +$at_failed && at_fn_log_failure +$at_traceon; } + + { set +x +printf "%s\n" "$at_srcdir/chdir.at:5: DPKG_ROOT=/rootdir_env \\ + DPKG_DEBUG=1 dpkg-divert --version --instdir=/instdir_opt --root=/rootdir_opt" +at_fn_check_prepare_notrace 'an embedded newline' "chdir.at:5" +( $at_check_trace; DPKG_ROOT=/rootdir_env \ + DPKG_DEBUG=1 dpkg-divert --version --instdir=/instdir_opt --root=/rootdir_opt +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "D000001: root=/rootdir_opt admindir=/rootdir_opt$DEFAULT_ADMINDIR +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/chdir.at:5" +$at_failed && at_fn_log_failure +$at_traceon; } + + { set +x +printf "%s\n" "$at_srcdir/chdir.at:5: DPKG_ROOT=/rootdir_env \\ + DPKG_DEBUG=1 dpkg-divert --version --instdir=/instdir_opt --admindir=/admindir_opt" +at_fn_check_prepare_notrace 'an embedded newline' "chdir.at:5" +( $at_check_trace; DPKG_ROOT=/rootdir_env \ + DPKG_DEBUG=1 dpkg-divert --version --instdir=/instdir_opt --admindir=/admindir_opt +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "D000001: root=/instdir_opt admindir=/admindir_opt +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/chdir.at:5" +$at_failed && at_fn_log_failure +$at_traceon; } + + { set +x +printf "%s\n" "$at_srcdir/chdir.at:5: DPKG_ROOT=/rootdir_env \\ + DPKG_DEBUG=1 dpkg-divert --version --admindir=/admindir_opt --instdir=/instdir_opt" +at_fn_check_prepare_notrace 'an embedded newline' "chdir.at:5" +( $at_check_trace; DPKG_ROOT=/rootdir_env \ + DPKG_DEBUG=1 dpkg-divert --version --admindir=/admindir_opt --instdir=/instdir_opt +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "D000001: root=/instdir_opt admindir=/admindir_opt +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/chdir.at:5" +$at_failed && at_fn_log_failure +$at_traceon; } + + { set +x +printf "%s\n" "$at_srcdir/chdir.at:5: DPKG_ROOT=/rootdir_env \\ + DPKG_DEBUG=1 dpkg-divert --version --root=/rootdir_opt --admindir=/admindir_opt --instdir=/instdir_opt" +at_fn_check_prepare_notrace 'an embedded newline' "chdir.at:5" +( $at_check_trace; DPKG_ROOT=/rootdir_env \ + DPKG_DEBUG=1 dpkg-divert --version --root=/rootdir_opt --admindir=/admindir_opt --instdir=/instdir_opt +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "D000001: root=/instdir_opt admindir=/admindir_opt +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/chdir.at:5" +$at_failed && at_fn_log_failure +$at_traceon; } + + { set +x +printf "%s\n" "$at_srcdir/chdir.at:5: DPKG_ROOT=/rootdir_env \\ + DPKG_DEBUG=1 dpkg-divert --version --admindir=/admindir_opt --instdir=/instdir_opt --root=/rootdir_opt" +at_fn_check_prepare_notrace 'an embedded newline' "chdir.at:5" +( $at_check_trace; DPKG_ROOT=/rootdir_env \ + DPKG_DEBUG=1 dpkg-divert --version --admindir=/admindir_opt --instdir=/instdir_opt --root=/rootdir_opt +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "D000001: root=/rootdir_opt admindir=/rootdir_opt$DEFAULT_ADMINDIR +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/chdir.at:5" +$at_failed && at_fn_log_failure +$at_traceon; } + + + set +x + $at_times_p && times >"$at_times_file" +) 5>&1 2>&1 7>&- | eval $at_tee_pipe +read at_status <"$at_status_file" +#AT_STOP_47 +#AT_START_48 +at_fn_group_banner 48 'chdir.at:5' \ + "dpkg-divert chdir env+opt root+admindir" " " 5 +at_xfail=no +( + printf "%s\n" "48. $at_setup_line: testing $at_desc ..." + $at_traceon + + + + DPKG_ROOT= + DPKG_ADMINDIR= + + { set +x +printf "%s\n" "$at_srcdir/chdir.at:5: DPKG_ROOT=/rootdir_env DPKG_ADMINDIR=/admindir_env \\ + DPKG_DEBUG=1 dpkg-divert --version --root=/rootdir_opt" +at_fn_check_prepare_notrace 'an embedded newline' "chdir.at:5" +( $at_check_trace; DPKG_ROOT=/rootdir_env DPKG_ADMINDIR=/admindir_env \ + DPKG_DEBUG=1 dpkg-divert --version --root=/rootdir_opt +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "D000001: root=/rootdir_opt admindir=/rootdir_opt$DEFAULT_ADMINDIR +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/chdir.at:5" +$at_failed && at_fn_log_failure +$at_traceon; } + + { set +x +printf "%s\n" "$at_srcdir/chdir.at:5: DPKG_ROOT=/rootdir_env DPKG_ADMINDIR=/admindir_env \\ + DPKG_DEBUG=1 dpkg-divert --version --admindir=/admindir_opt" +at_fn_check_prepare_notrace 'an embedded newline' "chdir.at:5" +( $at_check_trace; DPKG_ROOT=/rootdir_env DPKG_ADMINDIR=/admindir_env \ + DPKG_DEBUG=1 dpkg-divert --version --admindir=/admindir_opt +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "D000001: root=/rootdir_env admindir=/admindir_opt +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/chdir.at:5" +$at_failed && at_fn_log_failure +$at_traceon; } + + { set +x +printf "%s\n" "$at_srcdir/chdir.at:5: DPKG_ROOT=/rootdir_env DPKG_ADMINDIR=/admindir_env \\ + DPKG_DEBUG=1 dpkg-divert --version --instdir=/instdir_opt" +at_fn_check_prepare_notrace 'an embedded newline' "chdir.at:5" +( $at_check_trace; DPKG_ROOT=/rootdir_env DPKG_ADMINDIR=/admindir_env \ + DPKG_DEBUG=1 dpkg-divert --version --instdir=/instdir_opt +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "D000001: root=/instdir_opt admindir=/admindir_env +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/chdir.at:5" +$at_failed && at_fn_log_failure +$at_traceon; } + + { set +x +printf "%s\n" "$at_srcdir/chdir.at:5: DPKG_ROOT=/rootdir_env DPKG_ADMINDIR=/admindir_env \\ + DPKG_DEBUG=1 dpkg-divert --version --root=/rootdir_opt --admindir=/admindir_opt" +at_fn_check_prepare_notrace 'an embedded newline' "chdir.at:5" +( $at_check_trace; DPKG_ROOT=/rootdir_env DPKG_ADMINDIR=/admindir_env \ + DPKG_DEBUG=1 dpkg-divert --version --root=/rootdir_opt --admindir=/admindir_opt +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "D000001: root=/rootdir_opt admindir=/admindir_opt +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/chdir.at:5" +$at_failed && at_fn_log_failure +$at_traceon; } + + { set +x +printf "%s\n" "$at_srcdir/chdir.at:5: DPKG_ROOT=/rootdir_env DPKG_ADMINDIR=/admindir_env \\ + DPKG_DEBUG=1 dpkg-divert --version --admindir=/admindir_opt --root=/rootdir_opt" +at_fn_check_prepare_notrace 'an embedded newline' "chdir.at:5" +( $at_check_trace; DPKG_ROOT=/rootdir_env DPKG_ADMINDIR=/admindir_env \ + DPKG_DEBUG=1 dpkg-divert --version --admindir=/admindir_opt --root=/rootdir_opt +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "D000001: root=/rootdir_opt admindir=/rootdir_opt$DEFAULT_ADMINDIR +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/chdir.at:5" +$at_failed && at_fn_log_failure +$at_traceon; } + + { set +x +printf "%s\n" "$at_srcdir/chdir.at:5: DPKG_ROOT=/rootdir_env DPKG_ADMINDIR=/admindir_env \\ + DPKG_DEBUG=1 dpkg-divert --version --root=/rootdir_opt --instdir=/instdir_opt" +at_fn_check_prepare_notrace 'an embedded newline' "chdir.at:5" +( $at_check_trace; DPKG_ROOT=/rootdir_env DPKG_ADMINDIR=/admindir_env \ + DPKG_DEBUG=1 dpkg-divert --version --root=/rootdir_opt --instdir=/instdir_opt +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "D000001: root=/instdir_opt admindir=/rootdir_opt$DEFAULT_ADMINDIR +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/chdir.at:5" +$at_failed && at_fn_log_failure +$at_traceon; } + + { set +x +printf "%s\n" "$at_srcdir/chdir.at:5: DPKG_ROOT=/rootdir_env DPKG_ADMINDIR=/admindir_env \\ + DPKG_DEBUG=1 dpkg-divert --version --instdir=/instdir_opt --root=/rootdir_opt" +at_fn_check_prepare_notrace 'an embedded newline' "chdir.at:5" +( $at_check_trace; DPKG_ROOT=/rootdir_env DPKG_ADMINDIR=/admindir_env \ + DPKG_DEBUG=1 dpkg-divert --version --instdir=/instdir_opt --root=/rootdir_opt +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "D000001: root=/rootdir_opt admindir=/rootdir_opt$DEFAULT_ADMINDIR +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/chdir.at:5" +$at_failed && at_fn_log_failure +$at_traceon; } + + { set +x +printf "%s\n" "$at_srcdir/chdir.at:5: DPKG_ROOT=/rootdir_env DPKG_ADMINDIR=/admindir_env \\ + DPKG_DEBUG=1 dpkg-divert --version --instdir=/instdir_opt --admindir=/admindir_opt" +at_fn_check_prepare_notrace 'an embedded newline' "chdir.at:5" +( $at_check_trace; DPKG_ROOT=/rootdir_env DPKG_ADMINDIR=/admindir_env \ + DPKG_DEBUG=1 dpkg-divert --version --instdir=/instdir_opt --admindir=/admindir_opt +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "D000001: root=/instdir_opt admindir=/admindir_opt +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/chdir.at:5" +$at_failed && at_fn_log_failure +$at_traceon; } + + { set +x +printf "%s\n" "$at_srcdir/chdir.at:5: DPKG_ROOT=/rootdir_env DPKG_ADMINDIR=/admindir_env \\ + DPKG_DEBUG=1 dpkg-divert --version --admindir=/admindir_opt --instdir=/instdir_opt" +at_fn_check_prepare_notrace 'an embedded newline' "chdir.at:5" +( $at_check_trace; DPKG_ROOT=/rootdir_env DPKG_ADMINDIR=/admindir_env \ + DPKG_DEBUG=1 dpkg-divert --version --admindir=/admindir_opt --instdir=/instdir_opt +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "D000001: root=/instdir_opt admindir=/admindir_opt +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/chdir.at:5" +$at_failed && at_fn_log_failure +$at_traceon; } + + { set +x +printf "%s\n" "$at_srcdir/chdir.at:5: DPKG_ROOT=/rootdir_env DPKG_ADMINDIR=/admindir_env \\ + DPKG_DEBUG=1 dpkg-divert --version --root=/rootdir_opt --admindir=/admindir_opt --instdir=/instdir_opt" +at_fn_check_prepare_notrace 'an embedded newline' "chdir.at:5" +( $at_check_trace; DPKG_ROOT=/rootdir_env DPKG_ADMINDIR=/admindir_env \ + DPKG_DEBUG=1 dpkg-divert --version --root=/rootdir_opt --admindir=/admindir_opt --instdir=/instdir_opt +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "D000001: root=/instdir_opt admindir=/admindir_opt +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/chdir.at:5" +$at_failed && at_fn_log_failure +$at_traceon; } + + { set +x +printf "%s\n" "$at_srcdir/chdir.at:5: DPKG_ROOT=/rootdir_env DPKG_ADMINDIR=/admindir_env \\ + DPKG_DEBUG=1 dpkg-divert --version --admindir=/admindir_opt --instdir=/instdir_opt --root=/rootdir_opt" +at_fn_check_prepare_notrace 'an embedded newline' "chdir.at:5" +( $at_check_trace; DPKG_ROOT=/rootdir_env DPKG_ADMINDIR=/admindir_env \ + DPKG_DEBUG=1 dpkg-divert --version --admindir=/admindir_opt --instdir=/instdir_opt --root=/rootdir_opt +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "D000001: root=/rootdir_opt admindir=/rootdir_opt$DEFAULT_ADMINDIR +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/chdir.at:5" +$at_failed && at_fn_log_failure +$at_traceon; } + + + set +x + $at_times_p && times >"$at_times_file" +) 5>&1 2>&1 7>&- | eval $at_tee_pipe +read at_status <"$at_status_file" +#AT_STOP_48 +#AT_START_49 +at_fn_group_banner 49 'chdir.at:5' \ + "dpkg-statoverride chdir opts" " " 5 +at_xfail=no +( + printf "%s\n" "49. $at_setup_line: testing $at_desc ..." + $at_traceon + + + + DPKG_ROOT= + DPKG_ADMINDIR= + + { set +x +printf "%s\n" "$at_srcdir/chdir.at:5: DPKG_DEBUG=1 dpkg-statoverride --version --root=/rootdir_opt" +at_fn_check_prepare_trace "chdir.at:5" +( $at_check_trace; DPKG_DEBUG=1 dpkg-statoverride --version --root=/rootdir_opt +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "D000001: root=/rootdir_opt admindir=/rootdir_opt$DEFAULT_ADMINDIR +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/chdir.at:5" +$at_failed && at_fn_log_failure +$at_traceon; } + + { set +x +printf "%s\n" "$at_srcdir/chdir.at:5: DPKG_DEBUG=1 dpkg-statoverride --version --admindir=/admindir_opt" +at_fn_check_prepare_trace "chdir.at:5" +( $at_check_trace; DPKG_DEBUG=1 dpkg-statoverride --version --admindir=/admindir_opt +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "D000001: root=$DEFAULT_ROOTDIR admindir=/admindir_opt +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/chdir.at:5" +$at_failed && at_fn_log_failure +$at_traceon; } + + { set +x +printf "%s\n" "$at_srcdir/chdir.at:5: DPKG_DEBUG=1 dpkg-statoverride --version --instdir=/instdir_opt" +at_fn_check_prepare_trace "chdir.at:5" +( $at_check_trace; DPKG_DEBUG=1 dpkg-statoverride --version --instdir=/instdir_opt +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "D000001: root=/instdir_opt admindir=$DEFAULT_ADMINDIR +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/chdir.at:5" +$at_failed && at_fn_log_failure +$at_traceon; } + + { set +x +printf "%s\n" "$at_srcdir/chdir.at:5: DPKG_DEBUG=1 dpkg-statoverride --version --root=/rootdir_opt --admindir=/admindir_opt" +at_fn_check_prepare_trace "chdir.at:5" +( $at_check_trace; DPKG_DEBUG=1 dpkg-statoverride --version --root=/rootdir_opt --admindir=/admindir_opt +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "D000001: root=/rootdir_opt admindir=/admindir_opt +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/chdir.at:5" +$at_failed && at_fn_log_failure +$at_traceon; } + + { set +x +printf "%s\n" "$at_srcdir/chdir.at:5: DPKG_DEBUG=1 dpkg-statoverride --version --admindir=/admindir_opt --root=/rootdir_opt" +at_fn_check_prepare_trace "chdir.at:5" +( $at_check_trace; DPKG_DEBUG=1 dpkg-statoverride --version --admindir=/admindir_opt --root=/rootdir_opt +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "D000001: root=/rootdir_opt admindir=/rootdir_opt$DEFAULT_ADMINDIR +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/chdir.at:5" +$at_failed && at_fn_log_failure +$at_traceon; } + + { set +x +printf "%s\n" "$at_srcdir/chdir.at:5: DPKG_DEBUG=1 dpkg-statoverride --version --root=/rootdir_opt --instdir=/instdir_opt" +at_fn_check_prepare_trace "chdir.at:5" +( $at_check_trace; DPKG_DEBUG=1 dpkg-statoverride --version --root=/rootdir_opt --instdir=/instdir_opt +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "D000001: root=/instdir_opt admindir=/rootdir_opt$DEFAULT_ADMINDIR +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/chdir.at:5" +$at_failed && at_fn_log_failure +$at_traceon; } + + { set +x +printf "%s\n" "$at_srcdir/chdir.at:5: DPKG_DEBUG=1 dpkg-statoverride --version --instdir=/instdir_opt --root=/rootdir_opt" +at_fn_check_prepare_trace "chdir.at:5" +( $at_check_trace; DPKG_DEBUG=1 dpkg-statoverride --version --instdir=/instdir_opt --root=/rootdir_opt +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "D000001: root=/rootdir_opt admindir=/rootdir_opt$DEFAULT_ADMINDIR +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/chdir.at:5" +$at_failed && at_fn_log_failure +$at_traceon; } + + { set +x +printf "%s\n" "$at_srcdir/chdir.at:5: DPKG_DEBUG=1 dpkg-statoverride --version --instdir=/instdir_opt --admindir=/admindir_opt" +at_fn_check_prepare_trace "chdir.at:5" +( $at_check_trace; DPKG_DEBUG=1 dpkg-statoverride --version --instdir=/instdir_opt --admindir=/admindir_opt +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "D000001: root=/instdir_opt admindir=/admindir_opt +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/chdir.at:5" +$at_failed && at_fn_log_failure +$at_traceon; } + + { set +x +printf "%s\n" "$at_srcdir/chdir.at:5: DPKG_DEBUG=1 dpkg-statoverride --version --admindir=/admindir_opt --instdir=/instdir_opt" +at_fn_check_prepare_trace "chdir.at:5" +( $at_check_trace; DPKG_DEBUG=1 dpkg-statoverride --version --admindir=/admindir_opt --instdir=/instdir_opt +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "D000001: root=/instdir_opt admindir=/admindir_opt +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/chdir.at:5" +$at_failed && at_fn_log_failure +$at_traceon; } + + { set +x +printf "%s\n" "$at_srcdir/chdir.at:5: DPKG_DEBUG=1 dpkg-statoverride --version --root=/rootdir_opt --admindir=/admindir_opt --instdir=/instdir_opt" +at_fn_check_prepare_trace "chdir.at:5" +( $at_check_trace; DPKG_DEBUG=1 dpkg-statoverride --version --root=/rootdir_opt --admindir=/admindir_opt --instdir=/instdir_opt +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "D000001: root=/instdir_opt admindir=/admindir_opt +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/chdir.at:5" +$at_failed && at_fn_log_failure +$at_traceon; } + + { set +x +printf "%s\n" "$at_srcdir/chdir.at:5: DPKG_DEBUG=1 dpkg-statoverride --version --admindir=/admindir_opt --instdir=/instdir_opt --root=/rootdir_opt" +at_fn_check_prepare_trace "chdir.at:5" +( $at_check_trace; DPKG_DEBUG=1 dpkg-statoverride --version --admindir=/admindir_opt --instdir=/instdir_opt --root=/rootdir_opt +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "D000001: root=/rootdir_opt admindir=/rootdir_opt$DEFAULT_ADMINDIR +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/chdir.at:5" +$at_failed && at_fn_log_failure +$at_traceon; } + + + set +x + $at_times_p && times >"$at_times_file" +) 5>&1 2>&1 7>&- | eval $at_tee_pipe +read at_status <"$at_status_file" +#AT_STOP_49 +#AT_START_50 +at_fn_group_banner 50 'chdir.at:5' \ + "dpkg-statoverride chdir env" " " 5 +at_xfail=no +( + printf "%s\n" "50. $at_setup_line: testing $at_desc ..." + $at_traceon + + + + DPKG_ROOT= + DPKG_ADMINDIR= + + { set +x +printf "%s\n" "$at_srcdir/chdir.at:5: DPKG_ADMINDIR=/admindir_env \\ + DPKG_DEBUG=1 dpkg-statoverride --version" +at_fn_check_prepare_notrace 'an embedded newline' "chdir.at:5" +( $at_check_trace; DPKG_ADMINDIR=/admindir_env \ + DPKG_DEBUG=1 dpkg-statoverride --version +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "D000001: root=$DEFAULT_ROOTDIR admindir=/admindir_env +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/chdir.at:5" +$at_failed && at_fn_log_failure +$at_traceon; } + + { set +x +printf "%s\n" "$at_srcdir/chdir.at:5: DPKG_ROOT=/rootdir_env \\ + DPKG_DEBUG=1 dpkg-statoverride --version" +at_fn_check_prepare_notrace 'an embedded newline' "chdir.at:5" +( $at_check_trace; DPKG_ROOT=/rootdir_env \ + DPKG_DEBUG=1 dpkg-statoverride --version +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "D000001: root=/rootdir_env admindir=/rootdir_env$DEFAULT_ADMINDIR +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/chdir.at:5" +$at_failed && at_fn_log_failure +$at_traceon; } + + { set +x +printf "%s\n" "$at_srcdir/chdir.at:5: DPKG_ROOT=/rootdir_env DPKG_ADMINDIR=/admindir_env \\ + DPKG_DEBUG=1 dpkg-statoverride --version" +at_fn_check_prepare_notrace 'an embedded newline' "chdir.at:5" +( $at_check_trace; DPKG_ROOT=/rootdir_env DPKG_ADMINDIR=/admindir_env \ + DPKG_DEBUG=1 dpkg-statoverride --version +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "D000001: root=/rootdir_env admindir=/admindir_env +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/chdir.at:5" +$at_failed && at_fn_log_failure +$at_traceon; } + + + set +x + $at_times_p && times >"$at_times_file" +) 5>&1 2>&1 7>&- | eval $at_tee_pipe +read at_status <"$at_status_file" +#AT_STOP_50 +#AT_START_51 +at_fn_group_banner 51 'chdir.at:5' \ + "dpkg-statoverride chdir env+opt admindir" " " 5 +at_xfail=no +( + printf "%s\n" "51. $at_setup_line: testing $at_desc ..." + $at_traceon + + + + DPKG_ROOT= + DPKG_ADMINDIR= + + { set +x +printf "%s\n" "$at_srcdir/chdir.at:5: DPKG_ADMINDIR=/admindir_env \\ + DPKG_DEBUG=1 dpkg-statoverride --version --root=/rootdir_opt" +at_fn_check_prepare_notrace 'an embedded newline' "chdir.at:5" +( $at_check_trace; DPKG_ADMINDIR=/admindir_env \ + DPKG_DEBUG=1 dpkg-statoverride --version --root=/rootdir_opt +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "D000001: root=/rootdir_opt admindir=/rootdir_opt$DEFAULT_ADMINDIR +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/chdir.at:5" +$at_failed && at_fn_log_failure +$at_traceon; } + + { set +x +printf "%s\n" "$at_srcdir/chdir.at:5: DPKG_ADMINDIR=/admindir_env \\ + DPKG_DEBUG=1 dpkg-statoverride --version --admindir=/admindir_opt" +at_fn_check_prepare_notrace 'an embedded newline' "chdir.at:5" +( $at_check_trace; DPKG_ADMINDIR=/admindir_env \ + DPKG_DEBUG=1 dpkg-statoverride --version --admindir=/admindir_opt +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "D000001: root=$DEFAULT_ROOTDIR admindir=/admindir_opt +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/chdir.at:5" +$at_failed && at_fn_log_failure +$at_traceon; } + + { set +x +printf "%s\n" "$at_srcdir/chdir.at:5: DPKG_ADMINDIR=/admindir_env \\ + DPKG_DEBUG=1 dpkg-statoverride --version --instdir=/instdir_opt" +at_fn_check_prepare_notrace 'an embedded newline' "chdir.at:5" +( $at_check_trace; DPKG_ADMINDIR=/admindir_env \ + DPKG_DEBUG=1 dpkg-statoverride --version --instdir=/instdir_opt +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "D000001: root=/instdir_opt admindir=/admindir_env +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/chdir.at:5" +$at_failed && at_fn_log_failure +$at_traceon; } + + { set +x +printf "%s\n" "$at_srcdir/chdir.at:5: DPKG_ADMINDIR=/admindir_env \\ + DPKG_DEBUG=1 dpkg-statoverride --version --root=/rootdir_opt --admindir=/admindir_opt" +at_fn_check_prepare_notrace 'an embedded newline' "chdir.at:5" +( $at_check_trace; DPKG_ADMINDIR=/admindir_env \ + DPKG_DEBUG=1 dpkg-statoverride --version --root=/rootdir_opt --admindir=/admindir_opt +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "D000001: root=/rootdir_opt admindir=/admindir_opt +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/chdir.at:5" +$at_failed && at_fn_log_failure +$at_traceon; } + + { set +x +printf "%s\n" "$at_srcdir/chdir.at:5: DPKG_ADMINDIR=/admindir_env \\ + DPKG_DEBUG=1 dpkg-statoverride --version --admindir=/admindir_opt --root=/rootdir_opt" +at_fn_check_prepare_notrace 'an embedded newline' "chdir.at:5" +( $at_check_trace; DPKG_ADMINDIR=/admindir_env \ + DPKG_DEBUG=1 dpkg-statoverride --version --admindir=/admindir_opt --root=/rootdir_opt +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "D000001: root=/rootdir_opt admindir=/rootdir_opt$DEFAULT_ADMINDIR +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/chdir.at:5" +$at_failed && at_fn_log_failure +$at_traceon; } + + { set +x +printf "%s\n" "$at_srcdir/chdir.at:5: DPKG_ADMINDIR=/admindir_env \\ + DPKG_DEBUG=1 dpkg-statoverride --version --root=/rootdir_opt --instdir=/instdir_opt" +at_fn_check_prepare_notrace 'an embedded newline' "chdir.at:5" +( $at_check_trace; DPKG_ADMINDIR=/admindir_env \ + DPKG_DEBUG=1 dpkg-statoverride --version --root=/rootdir_opt --instdir=/instdir_opt +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "D000001: root=/instdir_opt admindir=/rootdir_opt$DEFAULT_ADMINDIR +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/chdir.at:5" +$at_failed && at_fn_log_failure +$at_traceon; } + + { set +x +printf "%s\n" "$at_srcdir/chdir.at:5: DPKG_ADMINDIR=/admindir_env \\ + DPKG_DEBUG=1 dpkg-statoverride --version --instdir=/instdir_opt --root=/rootdir_opt" +at_fn_check_prepare_notrace 'an embedded newline' "chdir.at:5" +( $at_check_trace; DPKG_ADMINDIR=/admindir_env \ + DPKG_DEBUG=1 dpkg-statoverride --version --instdir=/instdir_opt --root=/rootdir_opt +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "D000001: root=/rootdir_opt admindir=/rootdir_opt$DEFAULT_ADMINDIR +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/chdir.at:5" +$at_failed && at_fn_log_failure +$at_traceon; } + + { set +x +printf "%s\n" "$at_srcdir/chdir.at:5: DPKG_ADMINDIR=/admindir_env \\ + DPKG_DEBUG=1 dpkg-statoverride --version --instdir=/instdir_opt --admindir=/admindir_opt" +at_fn_check_prepare_notrace 'an embedded newline' "chdir.at:5" +( $at_check_trace; DPKG_ADMINDIR=/admindir_env \ + DPKG_DEBUG=1 dpkg-statoverride --version --instdir=/instdir_opt --admindir=/admindir_opt +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "D000001: root=/instdir_opt admindir=/admindir_opt +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/chdir.at:5" +$at_failed && at_fn_log_failure +$at_traceon; } + + { set +x +printf "%s\n" "$at_srcdir/chdir.at:5: DPKG_ADMINDIR=/admindir_env \\ + DPKG_DEBUG=1 dpkg-statoverride --version --admindir=/admindir_opt --instdir=/instdir_opt" +at_fn_check_prepare_notrace 'an embedded newline' "chdir.at:5" +( $at_check_trace; DPKG_ADMINDIR=/admindir_env \ + DPKG_DEBUG=1 dpkg-statoverride --version --admindir=/admindir_opt --instdir=/instdir_opt +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "D000001: root=/instdir_opt admindir=/admindir_opt +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/chdir.at:5" +$at_failed && at_fn_log_failure +$at_traceon; } + + { set +x +printf "%s\n" "$at_srcdir/chdir.at:5: DPKG_ADMINDIR=/admindir_env \\ + DPKG_DEBUG=1 dpkg-statoverride --version --root=/rootdir_opt --admindir=/admindir_opt --instdir=/instdir_opt" +at_fn_check_prepare_notrace 'an embedded newline' "chdir.at:5" +( $at_check_trace; DPKG_ADMINDIR=/admindir_env \ + DPKG_DEBUG=1 dpkg-statoverride --version --root=/rootdir_opt --admindir=/admindir_opt --instdir=/instdir_opt +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "D000001: root=/instdir_opt admindir=/admindir_opt +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/chdir.at:5" +$at_failed && at_fn_log_failure +$at_traceon; } + + { set +x +printf "%s\n" "$at_srcdir/chdir.at:5: DPKG_ADMINDIR=/admindir_env \\ + DPKG_DEBUG=1 dpkg-statoverride --version --admindir=/admindir_opt --instdir=/instdir_opt --root=/rootdir_opt" +at_fn_check_prepare_notrace 'an embedded newline' "chdir.at:5" +( $at_check_trace; DPKG_ADMINDIR=/admindir_env \ + DPKG_DEBUG=1 dpkg-statoverride --version --admindir=/admindir_opt --instdir=/instdir_opt --root=/rootdir_opt +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "D000001: root=/rootdir_opt admindir=/rootdir_opt$DEFAULT_ADMINDIR +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/chdir.at:5" +$at_failed && at_fn_log_failure +$at_traceon; } + + + set +x + $at_times_p && times >"$at_times_file" +) 5>&1 2>&1 7>&- | eval $at_tee_pipe +read at_status <"$at_status_file" +#AT_STOP_51 +#AT_START_52 +at_fn_group_banner 52 'chdir.at:5' \ + "dpkg-statoverride chdir env+opt root" " " 5 +at_xfail=no +( + printf "%s\n" "52. $at_setup_line: testing $at_desc ..." + $at_traceon + + + + DPKG_ROOT= + DPKG_ADMINDIR= + + { set +x +printf "%s\n" "$at_srcdir/chdir.at:5: DPKG_ROOT=/rootdir_env \\ + DPKG_DEBUG=1 dpkg-statoverride --version --root=/rootdir_opt" +at_fn_check_prepare_notrace 'an embedded newline' "chdir.at:5" +( $at_check_trace; DPKG_ROOT=/rootdir_env \ + DPKG_DEBUG=1 dpkg-statoverride --version --root=/rootdir_opt +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "D000001: root=/rootdir_opt admindir=/rootdir_opt$DEFAULT_ADMINDIR +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/chdir.at:5" +$at_failed && at_fn_log_failure +$at_traceon; } + + { set +x +printf "%s\n" "$at_srcdir/chdir.at:5: DPKG_ROOT=/rootdir_env \\ + DPKG_DEBUG=1 dpkg-statoverride --version --admindir=/admindir_opt" +at_fn_check_prepare_notrace 'an embedded newline' "chdir.at:5" +( $at_check_trace; DPKG_ROOT=/rootdir_env \ + DPKG_DEBUG=1 dpkg-statoverride --version --admindir=/admindir_opt +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "D000001: root=/rootdir_env admindir=/admindir_opt +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/chdir.at:5" +$at_failed && at_fn_log_failure +$at_traceon; } + + { set +x +printf "%s\n" "$at_srcdir/chdir.at:5: DPKG_ROOT=/rootdir_env \\ + DPKG_DEBUG=1 dpkg-statoverride --version --instdir=/instdir_opt" +at_fn_check_prepare_notrace 'an embedded newline' "chdir.at:5" +( $at_check_trace; DPKG_ROOT=/rootdir_env \ + DPKG_DEBUG=1 dpkg-statoverride --version --instdir=/instdir_opt +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "D000001: root=/instdir_opt admindir=/rootdir_env$DEFAULT_ADMINDIR +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/chdir.at:5" +$at_failed && at_fn_log_failure +$at_traceon; } + + { set +x +printf "%s\n" "$at_srcdir/chdir.at:5: DPKG_ROOT=/rootdir_env \\ + DPKG_DEBUG=1 dpkg-statoverride --version --root=/rootdir_opt --admindir=/admindir_opt" +at_fn_check_prepare_notrace 'an embedded newline' "chdir.at:5" +( $at_check_trace; DPKG_ROOT=/rootdir_env \ + DPKG_DEBUG=1 dpkg-statoverride --version --root=/rootdir_opt --admindir=/admindir_opt +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "D000001: root=/rootdir_opt admindir=/admindir_opt +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/chdir.at:5" +$at_failed && at_fn_log_failure +$at_traceon; } + + { set +x +printf "%s\n" "$at_srcdir/chdir.at:5: DPKG_ROOT=/rootdir_env \\ + DPKG_DEBUG=1 dpkg-statoverride --version --admindir=/admindir_opt --root=/rootdir_opt" +at_fn_check_prepare_notrace 'an embedded newline' "chdir.at:5" +( $at_check_trace; DPKG_ROOT=/rootdir_env \ + DPKG_DEBUG=1 dpkg-statoverride --version --admindir=/admindir_opt --root=/rootdir_opt +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "D000001: root=/rootdir_opt admindir=/rootdir_opt$DEFAULT_ADMINDIR +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/chdir.at:5" +$at_failed && at_fn_log_failure +$at_traceon; } + + { set +x +printf "%s\n" "$at_srcdir/chdir.at:5: DPKG_ROOT=/rootdir_env \\ + DPKG_DEBUG=1 dpkg-statoverride --version --root=/rootdir_opt --instdir=/instdir_opt" +at_fn_check_prepare_notrace 'an embedded newline' "chdir.at:5" +( $at_check_trace; DPKG_ROOT=/rootdir_env \ + DPKG_DEBUG=1 dpkg-statoverride --version --root=/rootdir_opt --instdir=/instdir_opt +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "D000001: root=/instdir_opt admindir=/rootdir_opt$DEFAULT_ADMINDIR +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/chdir.at:5" +$at_failed && at_fn_log_failure +$at_traceon; } + + { set +x +printf "%s\n" "$at_srcdir/chdir.at:5: DPKG_ROOT=/rootdir_env \\ + DPKG_DEBUG=1 dpkg-statoverride --version --instdir=/instdir_opt --root=/rootdir_opt" +at_fn_check_prepare_notrace 'an embedded newline' "chdir.at:5" +( $at_check_trace; DPKG_ROOT=/rootdir_env \ + DPKG_DEBUG=1 dpkg-statoverride --version --instdir=/instdir_opt --root=/rootdir_opt +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "D000001: root=/rootdir_opt admindir=/rootdir_opt$DEFAULT_ADMINDIR +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/chdir.at:5" +$at_failed && at_fn_log_failure +$at_traceon; } + + { set +x +printf "%s\n" "$at_srcdir/chdir.at:5: DPKG_ROOT=/rootdir_env \\ + DPKG_DEBUG=1 dpkg-statoverride --version --instdir=/instdir_opt --admindir=/admindir_opt" +at_fn_check_prepare_notrace 'an embedded newline' "chdir.at:5" +( $at_check_trace; DPKG_ROOT=/rootdir_env \ + DPKG_DEBUG=1 dpkg-statoverride --version --instdir=/instdir_opt --admindir=/admindir_opt +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "D000001: root=/instdir_opt admindir=/admindir_opt +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/chdir.at:5" +$at_failed && at_fn_log_failure +$at_traceon; } + + { set +x +printf "%s\n" "$at_srcdir/chdir.at:5: DPKG_ROOT=/rootdir_env \\ + DPKG_DEBUG=1 dpkg-statoverride --version --admindir=/admindir_opt --instdir=/instdir_opt" +at_fn_check_prepare_notrace 'an embedded newline' "chdir.at:5" +( $at_check_trace; DPKG_ROOT=/rootdir_env \ + DPKG_DEBUG=1 dpkg-statoverride --version --admindir=/admindir_opt --instdir=/instdir_opt +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "D000001: root=/instdir_opt admindir=/admindir_opt +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/chdir.at:5" +$at_failed && at_fn_log_failure +$at_traceon; } + + { set +x +printf "%s\n" "$at_srcdir/chdir.at:5: DPKG_ROOT=/rootdir_env \\ + DPKG_DEBUG=1 dpkg-statoverride --version --root=/rootdir_opt --admindir=/admindir_opt --instdir=/instdir_opt" +at_fn_check_prepare_notrace 'an embedded newline' "chdir.at:5" +( $at_check_trace; DPKG_ROOT=/rootdir_env \ + DPKG_DEBUG=1 dpkg-statoverride --version --root=/rootdir_opt --admindir=/admindir_opt --instdir=/instdir_opt +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "D000001: root=/instdir_opt admindir=/admindir_opt +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/chdir.at:5" +$at_failed && at_fn_log_failure +$at_traceon; } + + { set +x +printf "%s\n" "$at_srcdir/chdir.at:5: DPKG_ROOT=/rootdir_env \\ + DPKG_DEBUG=1 dpkg-statoverride --version --admindir=/admindir_opt --instdir=/instdir_opt --root=/rootdir_opt" +at_fn_check_prepare_notrace 'an embedded newline' "chdir.at:5" +( $at_check_trace; DPKG_ROOT=/rootdir_env \ + DPKG_DEBUG=1 dpkg-statoverride --version --admindir=/admindir_opt --instdir=/instdir_opt --root=/rootdir_opt +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "D000001: root=/rootdir_opt admindir=/rootdir_opt$DEFAULT_ADMINDIR +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/chdir.at:5" +$at_failed && at_fn_log_failure +$at_traceon; } + + + set +x + $at_times_p && times >"$at_times_file" +) 5>&1 2>&1 7>&- | eval $at_tee_pipe +read at_status <"$at_status_file" +#AT_STOP_52 +#AT_START_53 +at_fn_group_banner 53 'chdir.at:5' \ + "dpkg-statoverride chdir env+opt root+admindir" " " 5 +at_xfail=no +( + printf "%s\n" "53. $at_setup_line: testing $at_desc ..." + $at_traceon + + + + DPKG_ROOT= + DPKG_ADMINDIR= + + { set +x +printf "%s\n" "$at_srcdir/chdir.at:5: DPKG_ROOT=/rootdir_env DPKG_ADMINDIR=/admindir_env \\ + DPKG_DEBUG=1 dpkg-statoverride --version --root=/rootdir_opt" +at_fn_check_prepare_notrace 'an embedded newline' "chdir.at:5" +( $at_check_trace; DPKG_ROOT=/rootdir_env DPKG_ADMINDIR=/admindir_env \ + DPKG_DEBUG=1 dpkg-statoverride --version --root=/rootdir_opt +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "D000001: root=/rootdir_opt admindir=/rootdir_opt$DEFAULT_ADMINDIR +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/chdir.at:5" +$at_failed && at_fn_log_failure +$at_traceon; } + + { set +x +printf "%s\n" "$at_srcdir/chdir.at:5: DPKG_ROOT=/rootdir_env DPKG_ADMINDIR=/admindir_env \\ + DPKG_DEBUG=1 dpkg-statoverride --version --admindir=/admindir_opt" +at_fn_check_prepare_notrace 'an embedded newline' "chdir.at:5" +( $at_check_trace; DPKG_ROOT=/rootdir_env DPKG_ADMINDIR=/admindir_env \ + DPKG_DEBUG=1 dpkg-statoverride --version --admindir=/admindir_opt +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "D000001: root=/rootdir_env admindir=/admindir_opt +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/chdir.at:5" +$at_failed && at_fn_log_failure +$at_traceon; } + + { set +x +printf "%s\n" "$at_srcdir/chdir.at:5: DPKG_ROOT=/rootdir_env DPKG_ADMINDIR=/admindir_env \\ + DPKG_DEBUG=1 dpkg-statoverride --version --instdir=/instdir_opt" +at_fn_check_prepare_notrace 'an embedded newline' "chdir.at:5" +( $at_check_trace; DPKG_ROOT=/rootdir_env DPKG_ADMINDIR=/admindir_env \ + DPKG_DEBUG=1 dpkg-statoverride --version --instdir=/instdir_opt +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "D000001: root=/instdir_opt admindir=/admindir_env +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/chdir.at:5" +$at_failed && at_fn_log_failure +$at_traceon; } + + { set +x +printf "%s\n" "$at_srcdir/chdir.at:5: DPKG_ROOT=/rootdir_env DPKG_ADMINDIR=/admindir_env \\ + DPKG_DEBUG=1 dpkg-statoverride --version --root=/rootdir_opt --admindir=/admindir_opt" +at_fn_check_prepare_notrace 'an embedded newline' "chdir.at:5" +( $at_check_trace; DPKG_ROOT=/rootdir_env DPKG_ADMINDIR=/admindir_env \ + DPKG_DEBUG=1 dpkg-statoverride --version --root=/rootdir_opt --admindir=/admindir_opt +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "D000001: root=/rootdir_opt admindir=/admindir_opt +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/chdir.at:5" +$at_failed && at_fn_log_failure +$at_traceon; } + + { set +x +printf "%s\n" "$at_srcdir/chdir.at:5: DPKG_ROOT=/rootdir_env DPKG_ADMINDIR=/admindir_env \\ + DPKG_DEBUG=1 dpkg-statoverride --version --admindir=/admindir_opt --root=/rootdir_opt" +at_fn_check_prepare_notrace 'an embedded newline' "chdir.at:5" +( $at_check_trace; DPKG_ROOT=/rootdir_env DPKG_ADMINDIR=/admindir_env \ + DPKG_DEBUG=1 dpkg-statoverride --version --admindir=/admindir_opt --root=/rootdir_opt +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "D000001: root=/rootdir_opt admindir=/rootdir_opt$DEFAULT_ADMINDIR +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/chdir.at:5" +$at_failed && at_fn_log_failure +$at_traceon; } + + { set +x +printf "%s\n" "$at_srcdir/chdir.at:5: DPKG_ROOT=/rootdir_env DPKG_ADMINDIR=/admindir_env \\ + DPKG_DEBUG=1 dpkg-statoverride --version --root=/rootdir_opt --instdir=/instdir_opt" +at_fn_check_prepare_notrace 'an embedded newline' "chdir.at:5" +( $at_check_trace; DPKG_ROOT=/rootdir_env DPKG_ADMINDIR=/admindir_env \ + DPKG_DEBUG=1 dpkg-statoverride --version --root=/rootdir_opt --instdir=/instdir_opt +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "D000001: root=/instdir_opt admindir=/rootdir_opt$DEFAULT_ADMINDIR +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/chdir.at:5" +$at_failed && at_fn_log_failure +$at_traceon; } + + { set +x +printf "%s\n" "$at_srcdir/chdir.at:5: DPKG_ROOT=/rootdir_env DPKG_ADMINDIR=/admindir_env \\ + DPKG_DEBUG=1 dpkg-statoverride --version --instdir=/instdir_opt --root=/rootdir_opt" +at_fn_check_prepare_notrace 'an embedded newline' "chdir.at:5" +( $at_check_trace; DPKG_ROOT=/rootdir_env DPKG_ADMINDIR=/admindir_env \ + DPKG_DEBUG=1 dpkg-statoverride --version --instdir=/instdir_opt --root=/rootdir_opt +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "D000001: root=/rootdir_opt admindir=/rootdir_opt$DEFAULT_ADMINDIR +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/chdir.at:5" +$at_failed && at_fn_log_failure +$at_traceon; } + + { set +x +printf "%s\n" "$at_srcdir/chdir.at:5: DPKG_ROOT=/rootdir_env DPKG_ADMINDIR=/admindir_env \\ + DPKG_DEBUG=1 dpkg-statoverride --version --instdir=/instdir_opt --admindir=/admindir_opt" +at_fn_check_prepare_notrace 'an embedded newline' "chdir.at:5" +( $at_check_trace; DPKG_ROOT=/rootdir_env DPKG_ADMINDIR=/admindir_env \ + DPKG_DEBUG=1 dpkg-statoverride --version --instdir=/instdir_opt --admindir=/admindir_opt +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "D000001: root=/instdir_opt admindir=/admindir_opt +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/chdir.at:5" +$at_failed && at_fn_log_failure +$at_traceon; } + + { set +x +printf "%s\n" "$at_srcdir/chdir.at:5: DPKG_ROOT=/rootdir_env DPKG_ADMINDIR=/admindir_env \\ + DPKG_DEBUG=1 dpkg-statoverride --version --admindir=/admindir_opt --instdir=/instdir_opt" +at_fn_check_prepare_notrace 'an embedded newline' "chdir.at:5" +( $at_check_trace; DPKG_ROOT=/rootdir_env DPKG_ADMINDIR=/admindir_env \ + DPKG_DEBUG=1 dpkg-statoverride --version --admindir=/admindir_opt --instdir=/instdir_opt +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "D000001: root=/instdir_opt admindir=/admindir_opt +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/chdir.at:5" +$at_failed && at_fn_log_failure +$at_traceon; } + + { set +x +printf "%s\n" "$at_srcdir/chdir.at:5: DPKG_ROOT=/rootdir_env DPKG_ADMINDIR=/admindir_env \\ + DPKG_DEBUG=1 dpkg-statoverride --version --root=/rootdir_opt --admindir=/admindir_opt --instdir=/instdir_opt" +at_fn_check_prepare_notrace 'an embedded newline' "chdir.at:5" +( $at_check_trace; DPKG_ROOT=/rootdir_env DPKG_ADMINDIR=/admindir_env \ + DPKG_DEBUG=1 dpkg-statoverride --version --root=/rootdir_opt --admindir=/admindir_opt --instdir=/instdir_opt +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "D000001: root=/instdir_opt admindir=/admindir_opt +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/chdir.at:5" +$at_failed && at_fn_log_failure +$at_traceon; } + + { set +x +printf "%s\n" "$at_srcdir/chdir.at:5: DPKG_ROOT=/rootdir_env DPKG_ADMINDIR=/admindir_env \\ + DPKG_DEBUG=1 dpkg-statoverride --version --admindir=/admindir_opt --instdir=/instdir_opt --root=/rootdir_opt" +at_fn_check_prepare_notrace 'an embedded newline' "chdir.at:5" +( $at_check_trace; DPKG_ROOT=/rootdir_env DPKG_ADMINDIR=/admindir_env \ + DPKG_DEBUG=1 dpkg-statoverride --version --admindir=/admindir_opt --instdir=/instdir_opt --root=/rootdir_opt +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "D000001: root=/rootdir_opt admindir=/rootdir_opt$DEFAULT_ADMINDIR +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/chdir.at:5" +$at_failed && at_fn_log_failure +$at_traceon; } + + + set +x + $at_times_p && times >"$at_times_file" +) 5>&1 2>&1 7>&- | eval $at_tee_pipe +read at_status <"$at_status_file" +#AT_STOP_53 +#AT_START_54 +at_fn_group_banner 54 'chdir.at:329' \ + "dpkg-split chdir opts" " " 5 +at_xfail=no +( + printf "%s\n" "54. $at_setup_line: testing $at_desc ..." + $at_traceon + + + + DPKG_ROOT= + DPKG_ADMINDIR= + + { set +x +printf "%s\n" "$at_srcdir/chdir.at:329: DPKG_DEBUG=1 dpkg-split --version --root=/rootdir_opt" +at_fn_check_prepare_trace "chdir.at:329" +( $at_check_trace; DPKG_DEBUG=1 dpkg-split --version --root=/rootdir_opt +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "D000001: root=/rootdir_opt admindir=/rootdir_opt$DEFAULT_ADMINDIR +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/chdir.at:329" +$at_failed && at_fn_log_failure +$at_traceon; } + + + { set +x +printf "%s\n" "$at_srcdir/chdir.at:329: DPKG_DEBUG=1 dpkg-split --version --admindir=/admindir_opt" +at_fn_check_prepare_trace "chdir.at:329" +( $at_check_trace; DPKG_DEBUG=1 dpkg-split --version --admindir=/admindir_opt +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "D000001: root=$DEFAULT_ROOTDIR admindir=/admindir_opt +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/chdir.at:329" +$at_failed && at_fn_log_failure +$at_traceon; } + + + { set +x +printf "%s\n" "$at_srcdir/chdir.at:329: DPKG_DEBUG=1 dpkg-split --version --root=/rootdir_opt --admindir=/admindir_opt" +at_fn_check_prepare_trace "chdir.at:329" +( $at_check_trace; DPKG_DEBUG=1 dpkg-split --version --root=/rootdir_opt --admindir=/admindir_opt +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "D000001: root=/rootdir_opt admindir=/admindir_opt +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/chdir.at:329" +$at_failed && at_fn_log_failure +$at_traceon; } + + + { set +x +printf "%s\n" "$at_srcdir/chdir.at:329: DPKG_DEBUG=1 dpkg-split --version --admindir=/admindir_opt --root=/rootdir_opt" +at_fn_check_prepare_trace "chdir.at:329" +( $at_check_trace; DPKG_DEBUG=1 dpkg-split --version --admindir=/admindir_opt --root=/rootdir_opt +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "D000001: root=/rootdir_opt admindir=/rootdir_opt$DEFAULT_ADMINDIR +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/chdir.at:329" +$at_failed && at_fn_log_failure +$at_traceon; } + + + set +x + $at_times_p && times >"$at_times_file" +) 5>&1 2>&1 7>&- | eval $at_tee_pipe +read at_status <"$at_status_file" +#AT_STOP_54 +#AT_START_55 +at_fn_group_banner 55 'chdir.at:329' \ + "dpkg-split chdir env" " " 5 +at_xfail=no +( + printf "%s\n" "55. $at_setup_line: testing $at_desc ..." + $at_traceon + + + + DPKG_ROOT= + DPKG_ADMINDIR= + + { set +x +printf "%s\n" "$at_srcdir/chdir.at:329: DPKG_ADMINDIR=/admindir_env \\ + DPKG_DEBUG=1 dpkg-split --version" +at_fn_check_prepare_notrace 'an embedded newline' "chdir.at:329" +( $at_check_trace; DPKG_ADMINDIR=/admindir_env \ + DPKG_DEBUG=1 dpkg-split --version +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "D000001: root=$DEFAULT_ROOTDIR admindir=/admindir_env +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/chdir.at:329" +$at_failed && at_fn_log_failure +$at_traceon; } + + + { set +x +printf "%s\n" "$at_srcdir/chdir.at:329: DPKG_ROOT=/rootdir_env \\ + DPKG_DEBUG=1 dpkg-split --version" +at_fn_check_prepare_notrace 'an embedded newline' "chdir.at:329" +( $at_check_trace; DPKG_ROOT=/rootdir_env \ + DPKG_DEBUG=1 dpkg-split --version +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "D000001: root=/rootdir_env admindir=/rootdir_env$DEFAULT_ADMINDIR +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/chdir.at:329" +$at_failed && at_fn_log_failure +$at_traceon; } + + + { set +x +printf "%s\n" "$at_srcdir/chdir.at:329: DPKG_ROOT=/rootdir_env DPKG_ADMINDIR=/admindir_env \\ + DPKG_DEBUG=1 dpkg-split --version" +at_fn_check_prepare_notrace 'an embedded newline' "chdir.at:329" +( $at_check_trace; DPKG_ROOT=/rootdir_env DPKG_ADMINDIR=/admindir_env \ + DPKG_DEBUG=1 dpkg-split --version +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "D000001: root=/rootdir_env admindir=/admindir_env +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/chdir.at:329" +$at_failed && at_fn_log_failure +$at_traceon; } + + + set +x + $at_times_p && times >"$at_times_file" +) 5>&1 2>&1 7>&- | eval $at_tee_pipe +read at_status <"$at_status_file" +#AT_STOP_55 +#AT_START_56 +at_fn_group_banner 56 'chdir.at:329' \ + "dpkg-split chdir env+opt admindir" " " 5 +at_xfail=no +( + printf "%s\n" "56. $at_setup_line: testing $at_desc ..." + $at_traceon + + + + DPKG_ROOT= + DPKG_ADMINDIR= + + { set +x +printf "%s\n" "$at_srcdir/chdir.at:329: DPKG_ADMINDIR=/admindir_env \\ + DPKG_DEBUG=1 dpkg-split --version --root=/rootdir_opt" +at_fn_check_prepare_notrace 'an embedded newline' "chdir.at:329" +( $at_check_trace; DPKG_ADMINDIR=/admindir_env \ + DPKG_DEBUG=1 dpkg-split --version --root=/rootdir_opt +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "D000001: root=/rootdir_opt admindir=/rootdir_opt$DEFAULT_ADMINDIR +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/chdir.at:329" +$at_failed && at_fn_log_failure +$at_traceon; } + + { set +x +printf "%s\n" "$at_srcdir/chdir.at:329: DPKG_ADMINDIR=/admindir_env \\ + DPKG_DEBUG=1 dpkg-split --version --admindir=/admindir_opt" +at_fn_check_prepare_notrace 'an embedded newline' "chdir.at:329" +( $at_check_trace; DPKG_ADMINDIR=/admindir_env \ + DPKG_DEBUG=1 dpkg-split --version --admindir=/admindir_opt +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "D000001: root=$DEFAULT_ROOTDIR admindir=/admindir_opt +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/chdir.at:329" +$at_failed && at_fn_log_failure +$at_traceon; } + + { set +x +printf "%s\n" "$at_srcdir/chdir.at:329: DPKG_ADMINDIR=/admindir_env \\ + DPKG_DEBUG=1 dpkg-split --version --root=/rootdir_opt --admindir=/admindir_opt" +at_fn_check_prepare_notrace 'an embedded newline' "chdir.at:329" +( $at_check_trace; DPKG_ADMINDIR=/admindir_env \ + DPKG_DEBUG=1 dpkg-split --version --root=/rootdir_opt --admindir=/admindir_opt +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "D000001: root=/rootdir_opt admindir=/admindir_opt +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/chdir.at:329" +$at_failed && at_fn_log_failure +$at_traceon; } + + { set +x +printf "%s\n" "$at_srcdir/chdir.at:329: DPKG_ADMINDIR=/admindir_env \\ + DPKG_DEBUG=1 dpkg-split --version --admindir=/admindir_opt --root=/rootdir_opt" +at_fn_check_prepare_notrace 'an embedded newline' "chdir.at:329" +( $at_check_trace; DPKG_ADMINDIR=/admindir_env \ + DPKG_DEBUG=1 dpkg-split --version --admindir=/admindir_opt --root=/rootdir_opt +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "D000001: root=/rootdir_opt admindir=/rootdir_opt$DEFAULT_ADMINDIR +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/chdir.at:329" +$at_failed && at_fn_log_failure +$at_traceon; } + + + set +x + $at_times_p && times >"$at_times_file" +) 5>&1 2>&1 7>&- | eval $at_tee_pipe +read at_status <"$at_status_file" +#AT_STOP_56 +#AT_START_57 +at_fn_group_banner 57 'chdir.at:329' \ + "dpkg-split chdir env+opt root" " " 5 +at_xfail=no +( + printf "%s\n" "57. $at_setup_line: testing $at_desc ..." + $at_traceon + + + + DPKG_ROOT= + DPKG_ADMINDIR= + + { set +x +printf "%s\n" "$at_srcdir/chdir.at:329: DPKG_ROOT=/rootdir_env \\ + DPKG_DEBUG=1 dpkg-split --version --root=/rootdir_opt" +at_fn_check_prepare_notrace 'an embedded newline' "chdir.at:329" +( $at_check_trace; DPKG_ROOT=/rootdir_env \ + DPKG_DEBUG=1 dpkg-split --version --root=/rootdir_opt +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "D000001: root=/rootdir_opt admindir=/rootdir_opt$DEFAULT_ADMINDIR +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/chdir.at:329" +$at_failed && at_fn_log_failure +$at_traceon; } + + { set +x +printf "%s\n" "$at_srcdir/chdir.at:329: DPKG_ROOT=/rootdir_env \\ + DPKG_DEBUG=1 dpkg-split --version --admindir=/admindir_opt" +at_fn_check_prepare_notrace 'an embedded newline' "chdir.at:329" +( $at_check_trace; DPKG_ROOT=/rootdir_env \ + DPKG_DEBUG=1 dpkg-split --version --admindir=/admindir_opt +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "D000001: root=/rootdir_env admindir=/admindir_opt +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/chdir.at:329" +$at_failed && at_fn_log_failure +$at_traceon; } + + { set +x +printf "%s\n" "$at_srcdir/chdir.at:329: DPKG_ROOT=/rootdir_env \\ + DPKG_DEBUG=1 dpkg-split --version --root=/rootdir_opt --admindir=/admindir_opt" +at_fn_check_prepare_notrace 'an embedded newline' "chdir.at:329" +( $at_check_trace; DPKG_ROOT=/rootdir_env \ + DPKG_DEBUG=1 dpkg-split --version --root=/rootdir_opt --admindir=/admindir_opt +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "D000001: root=/rootdir_opt admindir=/admindir_opt +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/chdir.at:329" +$at_failed && at_fn_log_failure +$at_traceon; } + + { set +x +printf "%s\n" "$at_srcdir/chdir.at:329: DPKG_ROOT=/rootdir_env \\ + DPKG_DEBUG=1 dpkg-split --version --admindir=/admindir_opt --root=/rootdir_opt" +at_fn_check_prepare_notrace 'an embedded newline' "chdir.at:329" +( $at_check_trace; DPKG_ROOT=/rootdir_env \ + DPKG_DEBUG=1 dpkg-split --version --admindir=/admindir_opt --root=/rootdir_opt +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "D000001: root=/rootdir_opt admindir=/rootdir_opt$DEFAULT_ADMINDIR +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/chdir.at:329" +$at_failed && at_fn_log_failure +$at_traceon; } + + + set +x + $at_times_p && times >"$at_times_file" +) 5>&1 2>&1 7>&- | eval $at_tee_pipe +read at_status <"$at_status_file" +#AT_STOP_57 +#AT_START_58 +at_fn_group_banner 58 'chdir.at:329' \ + "dpkg-split chdir env+opt root+admindir" " " 5 +at_xfail=no +( + printf "%s\n" "58. $at_setup_line: testing $at_desc ..." + $at_traceon + + + + DPKG_ROOT= + DPKG_ADMINDIR= + + { set +x +printf "%s\n" "$at_srcdir/chdir.at:329: DPKG_ROOT=/rootdir_env DPKG_ADMINDIR=/admindir_env \\ + DPKG_DEBUG=1 dpkg-split --version --root=/rootdir_opt" +at_fn_check_prepare_notrace 'an embedded newline' "chdir.at:329" +( $at_check_trace; DPKG_ROOT=/rootdir_env DPKG_ADMINDIR=/admindir_env \ + DPKG_DEBUG=1 dpkg-split --version --root=/rootdir_opt +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "D000001: root=/rootdir_opt admindir=/rootdir_opt$DEFAULT_ADMINDIR +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/chdir.at:329" +$at_failed && at_fn_log_failure +$at_traceon; } + + { set +x +printf "%s\n" "$at_srcdir/chdir.at:329: DPKG_ROOT=/rootdir_env DPKG_ADMINDIR=/admindir_env \\ + DPKG_DEBUG=1 dpkg-split --version --admindir=/admindir_opt" +at_fn_check_prepare_notrace 'an embedded newline' "chdir.at:329" +( $at_check_trace; DPKG_ROOT=/rootdir_env DPKG_ADMINDIR=/admindir_env \ + DPKG_DEBUG=1 dpkg-split --version --admindir=/admindir_opt +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "D000001: root=/rootdir_env admindir=/admindir_opt +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/chdir.at:329" +$at_failed && at_fn_log_failure +$at_traceon; } + + { set +x +printf "%s\n" "$at_srcdir/chdir.at:329: DPKG_ROOT=/rootdir_env DPKG_ADMINDIR=/admindir_env \\ + DPKG_DEBUG=1 dpkg-split --version --root=/rootdir_opt --admindir=/admindir_opt" +at_fn_check_prepare_notrace 'an embedded newline' "chdir.at:329" +( $at_check_trace; DPKG_ROOT=/rootdir_env DPKG_ADMINDIR=/admindir_env \ + DPKG_DEBUG=1 dpkg-split --version --root=/rootdir_opt --admindir=/admindir_opt +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "D000001: root=/rootdir_opt admindir=/admindir_opt +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/chdir.at:329" +$at_failed && at_fn_log_failure +$at_traceon; } + + { set +x +printf "%s\n" "$at_srcdir/chdir.at:329: DPKG_ROOT=/rootdir_env DPKG_ADMINDIR=/admindir_env \\ + DPKG_DEBUG=1 dpkg-split --version --admindir=/admindir_opt --root=/rootdir_opt" +at_fn_check_prepare_notrace 'an embedded newline' "chdir.at:329" +( $at_check_trace; DPKG_ROOT=/rootdir_env DPKG_ADMINDIR=/admindir_env \ + DPKG_DEBUG=1 dpkg-split --version --admindir=/admindir_opt --root=/rootdir_opt +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "D000001: root=/rootdir_opt admindir=/rootdir_opt$DEFAULT_ADMINDIR +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/chdir.at:329" +$at_failed && at_fn_log_failure +$at_traceon; } + + + set +x + $at_times_p && times >"$at_times_file" +) 5>&1 2>&1 7>&- | eval $at_tee_pipe +read at_status <"$at_status_file" +#AT_STOP_58 +#AT_START_59 +at_fn_group_banner 59 'chdir.at:329' \ + "dpkg-query chdir opts" " " 5 +at_xfail=no +( + printf "%s\n" "59. $at_setup_line: testing $at_desc ..." + $at_traceon + + + + DPKG_ROOT= + DPKG_ADMINDIR= + + { set +x +printf "%s\n" "$at_srcdir/chdir.at:329: DPKG_DEBUG=1 dpkg-query --version --root=/rootdir_opt" +at_fn_check_prepare_trace "chdir.at:329" +( $at_check_trace; DPKG_DEBUG=1 dpkg-query --version --root=/rootdir_opt +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "D000001: root=/rootdir_opt admindir=/rootdir_opt$DEFAULT_ADMINDIR +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/chdir.at:329" +$at_failed && at_fn_log_failure +$at_traceon; } + + + { set +x +printf "%s\n" "$at_srcdir/chdir.at:329: DPKG_DEBUG=1 dpkg-query --version --admindir=/admindir_opt" +at_fn_check_prepare_trace "chdir.at:329" +( $at_check_trace; DPKG_DEBUG=1 dpkg-query --version --admindir=/admindir_opt +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "D000001: root=$DEFAULT_ROOTDIR admindir=/admindir_opt +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/chdir.at:329" +$at_failed && at_fn_log_failure +$at_traceon; } + + + { set +x +printf "%s\n" "$at_srcdir/chdir.at:329: DPKG_DEBUG=1 dpkg-query --version --root=/rootdir_opt --admindir=/admindir_opt" +at_fn_check_prepare_trace "chdir.at:329" +( $at_check_trace; DPKG_DEBUG=1 dpkg-query --version --root=/rootdir_opt --admindir=/admindir_opt +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "D000001: root=/rootdir_opt admindir=/admindir_opt +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/chdir.at:329" +$at_failed && at_fn_log_failure +$at_traceon; } + + + { set +x +printf "%s\n" "$at_srcdir/chdir.at:329: DPKG_DEBUG=1 dpkg-query --version --admindir=/admindir_opt --root=/rootdir_opt" +at_fn_check_prepare_trace "chdir.at:329" +( $at_check_trace; DPKG_DEBUG=1 dpkg-query --version --admindir=/admindir_opt --root=/rootdir_opt +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "D000001: root=/rootdir_opt admindir=/rootdir_opt$DEFAULT_ADMINDIR +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/chdir.at:329" +$at_failed && at_fn_log_failure +$at_traceon; } + + + set +x + $at_times_p && times >"$at_times_file" +) 5>&1 2>&1 7>&- | eval $at_tee_pipe +read at_status <"$at_status_file" +#AT_STOP_59 +#AT_START_60 +at_fn_group_banner 60 'chdir.at:329' \ + "dpkg-query chdir env" " " 5 +at_xfail=no +( + printf "%s\n" "60. $at_setup_line: testing $at_desc ..." + $at_traceon + + + + DPKG_ROOT= + DPKG_ADMINDIR= + + { set +x +printf "%s\n" "$at_srcdir/chdir.at:329: DPKG_ADMINDIR=/admindir_env \\ + DPKG_DEBUG=1 dpkg-query --version" +at_fn_check_prepare_notrace 'an embedded newline' "chdir.at:329" +( $at_check_trace; DPKG_ADMINDIR=/admindir_env \ + DPKG_DEBUG=1 dpkg-query --version +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "D000001: root=$DEFAULT_ROOTDIR admindir=/admindir_env +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/chdir.at:329" +$at_failed && at_fn_log_failure +$at_traceon; } + + + { set +x +printf "%s\n" "$at_srcdir/chdir.at:329: DPKG_ROOT=/rootdir_env \\ + DPKG_DEBUG=1 dpkg-query --version" +at_fn_check_prepare_notrace 'an embedded newline' "chdir.at:329" +( $at_check_trace; DPKG_ROOT=/rootdir_env \ + DPKG_DEBUG=1 dpkg-query --version +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "D000001: root=/rootdir_env admindir=/rootdir_env$DEFAULT_ADMINDIR +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/chdir.at:329" +$at_failed && at_fn_log_failure +$at_traceon; } + + + { set +x +printf "%s\n" "$at_srcdir/chdir.at:329: DPKG_ROOT=/rootdir_env DPKG_ADMINDIR=/admindir_env \\ + DPKG_DEBUG=1 dpkg-query --version" +at_fn_check_prepare_notrace 'an embedded newline' "chdir.at:329" +( $at_check_trace; DPKG_ROOT=/rootdir_env DPKG_ADMINDIR=/admindir_env \ + DPKG_DEBUG=1 dpkg-query --version +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "D000001: root=/rootdir_env admindir=/admindir_env +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/chdir.at:329" +$at_failed && at_fn_log_failure +$at_traceon; } + + + set +x + $at_times_p && times >"$at_times_file" +) 5>&1 2>&1 7>&- | eval $at_tee_pipe +read at_status <"$at_status_file" +#AT_STOP_60 +#AT_START_61 +at_fn_group_banner 61 'chdir.at:329' \ + "dpkg-query chdir env+opt admindir" " " 5 +at_xfail=no +( + printf "%s\n" "61. $at_setup_line: testing $at_desc ..." + $at_traceon + + + + DPKG_ROOT= + DPKG_ADMINDIR= + + { set +x +printf "%s\n" "$at_srcdir/chdir.at:329: DPKG_ADMINDIR=/admindir_env \\ + DPKG_DEBUG=1 dpkg-query --version --root=/rootdir_opt" +at_fn_check_prepare_notrace 'an embedded newline' "chdir.at:329" +( $at_check_trace; DPKG_ADMINDIR=/admindir_env \ + DPKG_DEBUG=1 dpkg-query --version --root=/rootdir_opt +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "D000001: root=/rootdir_opt admindir=/rootdir_opt$DEFAULT_ADMINDIR +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/chdir.at:329" +$at_failed && at_fn_log_failure +$at_traceon; } + + { set +x +printf "%s\n" "$at_srcdir/chdir.at:329: DPKG_ADMINDIR=/admindir_env \\ + DPKG_DEBUG=1 dpkg-query --version --admindir=/admindir_opt" +at_fn_check_prepare_notrace 'an embedded newline' "chdir.at:329" +( $at_check_trace; DPKG_ADMINDIR=/admindir_env \ + DPKG_DEBUG=1 dpkg-query --version --admindir=/admindir_opt +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "D000001: root=$DEFAULT_ROOTDIR admindir=/admindir_opt +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/chdir.at:329" +$at_failed && at_fn_log_failure +$at_traceon; } + + { set +x +printf "%s\n" "$at_srcdir/chdir.at:329: DPKG_ADMINDIR=/admindir_env \\ + DPKG_DEBUG=1 dpkg-query --version --root=/rootdir_opt --admindir=/admindir_opt" +at_fn_check_prepare_notrace 'an embedded newline' "chdir.at:329" +( $at_check_trace; DPKG_ADMINDIR=/admindir_env \ + DPKG_DEBUG=1 dpkg-query --version --root=/rootdir_opt --admindir=/admindir_opt +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "D000001: root=/rootdir_opt admindir=/admindir_opt +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/chdir.at:329" +$at_failed && at_fn_log_failure +$at_traceon; } + + { set +x +printf "%s\n" "$at_srcdir/chdir.at:329: DPKG_ADMINDIR=/admindir_env \\ + DPKG_DEBUG=1 dpkg-query --version --admindir=/admindir_opt --root=/rootdir_opt" +at_fn_check_prepare_notrace 'an embedded newline' "chdir.at:329" +( $at_check_trace; DPKG_ADMINDIR=/admindir_env \ + DPKG_DEBUG=1 dpkg-query --version --admindir=/admindir_opt --root=/rootdir_opt +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "D000001: root=/rootdir_opt admindir=/rootdir_opt$DEFAULT_ADMINDIR +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/chdir.at:329" +$at_failed && at_fn_log_failure +$at_traceon; } + + + set +x + $at_times_p && times >"$at_times_file" +) 5>&1 2>&1 7>&- | eval $at_tee_pipe +read at_status <"$at_status_file" +#AT_STOP_61 +#AT_START_62 +at_fn_group_banner 62 'chdir.at:329' \ + "dpkg-query chdir env+opt root" " " 5 +at_xfail=no +( + printf "%s\n" "62. $at_setup_line: testing $at_desc ..." + $at_traceon + + + + DPKG_ROOT= + DPKG_ADMINDIR= + + { set +x +printf "%s\n" "$at_srcdir/chdir.at:329: DPKG_ROOT=/rootdir_env \\ + DPKG_DEBUG=1 dpkg-query --version --root=/rootdir_opt" +at_fn_check_prepare_notrace 'an embedded newline' "chdir.at:329" +( $at_check_trace; DPKG_ROOT=/rootdir_env \ + DPKG_DEBUG=1 dpkg-query --version --root=/rootdir_opt +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "D000001: root=/rootdir_opt admindir=/rootdir_opt$DEFAULT_ADMINDIR +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/chdir.at:329" +$at_failed && at_fn_log_failure +$at_traceon; } + + { set +x +printf "%s\n" "$at_srcdir/chdir.at:329: DPKG_ROOT=/rootdir_env \\ + DPKG_DEBUG=1 dpkg-query --version --admindir=/admindir_opt" +at_fn_check_prepare_notrace 'an embedded newline' "chdir.at:329" +( $at_check_trace; DPKG_ROOT=/rootdir_env \ + DPKG_DEBUG=1 dpkg-query --version --admindir=/admindir_opt +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "D000001: root=/rootdir_env admindir=/admindir_opt +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/chdir.at:329" +$at_failed && at_fn_log_failure +$at_traceon; } + + { set +x +printf "%s\n" "$at_srcdir/chdir.at:329: DPKG_ROOT=/rootdir_env \\ + DPKG_DEBUG=1 dpkg-query --version --root=/rootdir_opt --admindir=/admindir_opt" +at_fn_check_prepare_notrace 'an embedded newline' "chdir.at:329" +( $at_check_trace; DPKG_ROOT=/rootdir_env \ + DPKG_DEBUG=1 dpkg-query --version --root=/rootdir_opt --admindir=/admindir_opt +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "D000001: root=/rootdir_opt admindir=/admindir_opt +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/chdir.at:329" +$at_failed && at_fn_log_failure +$at_traceon; } + + { set +x +printf "%s\n" "$at_srcdir/chdir.at:329: DPKG_ROOT=/rootdir_env \\ + DPKG_DEBUG=1 dpkg-query --version --admindir=/admindir_opt --root=/rootdir_opt" +at_fn_check_prepare_notrace 'an embedded newline' "chdir.at:329" +( $at_check_trace; DPKG_ROOT=/rootdir_env \ + DPKG_DEBUG=1 dpkg-query --version --admindir=/admindir_opt --root=/rootdir_opt +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "D000001: root=/rootdir_opt admindir=/rootdir_opt$DEFAULT_ADMINDIR +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/chdir.at:329" +$at_failed && at_fn_log_failure +$at_traceon; } + + + set +x + $at_times_p && times >"$at_times_file" +) 5>&1 2>&1 7>&- | eval $at_tee_pipe +read at_status <"$at_status_file" +#AT_STOP_62 +#AT_START_63 +at_fn_group_banner 63 'chdir.at:329' \ + "dpkg-query chdir env+opt root+admindir" " " 5 +at_xfail=no +( + printf "%s\n" "63. $at_setup_line: testing $at_desc ..." + $at_traceon + + + + DPKG_ROOT= + DPKG_ADMINDIR= + + { set +x +printf "%s\n" "$at_srcdir/chdir.at:329: DPKG_ROOT=/rootdir_env DPKG_ADMINDIR=/admindir_env \\ + DPKG_DEBUG=1 dpkg-query --version --root=/rootdir_opt" +at_fn_check_prepare_notrace 'an embedded newline' "chdir.at:329" +( $at_check_trace; DPKG_ROOT=/rootdir_env DPKG_ADMINDIR=/admindir_env \ + DPKG_DEBUG=1 dpkg-query --version --root=/rootdir_opt +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "D000001: root=/rootdir_opt admindir=/rootdir_opt$DEFAULT_ADMINDIR +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/chdir.at:329" +$at_failed && at_fn_log_failure +$at_traceon; } + + { set +x +printf "%s\n" "$at_srcdir/chdir.at:329: DPKG_ROOT=/rootdir_env DPKG_ADMINDIR=/admindir_env \\ + DPKG_DEBUG=1 dpkg-query --version --admindir=/admindir_opt" +at_fn_check_prepare_notrace 'an embedded newline' "chdir.at:329" +( $at_check_trace; DPKG_ROOT=/rootdir_env DPKG_ADMINDIR=/admindir_env \ + DPKG_DEBUG=1 dpkg-query --version --admindir=/admindir_opt +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "D000001: root=/rootdir_env admindir=/admindir_opt +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/chdir.at:329" +$at_failed && at_fn_log_failure +$at_traceon; } + + { set +x +printf "%s\n" "$at_srcdir/chdir.at:329: DPKG_ROOT=/rootdir_env DPKG_ADMINDIR=/admindir_env \\ + DPKG_DEBUG=1 dpkg-query --version --root=/rootdir_opt --admindir=/admindir_opt" +at_fn_check_prepare_notrace 'an embedded newline' "chdir.at:329" +( $at_check_trace; DPKG_ROOT=/rootdir_env DPKG_ADMINDIR=/admindir_env \ + DPKG_DEBUG=1 dpkg-query --version --root=/rootdir_opt --admindir=/admindir_opt +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "D000001: root=/rootdir_opt admindir=/admindir_opt +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/chdir.at:329" +$at_failed && at_fn_log_failure +$at_traceon; } + + { set +x +printf "%s\n" "$at_srcdir/chdir.at:329: DPKG_ROOT=/rootdir_env DPKG_ADMINDIR=/admindir_env \\ + DPKG_DEBUG=1 dpkg-query --version --admindir=/admindir_opt --root=/rootdir_opt" +at_fn_check_prepare_notrace 'an embedded newline' "chdir.at:329" +( $at_check_trace; DPKG_ROOT=/rootdir_env DPKG_ADMINDIR=/admindir_env \ + DPKG_DEBUG=1 dpkg-query --version --admindir=/admindir_opt --root=/rootdir_opt +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "D000001: root=/rootdir_opt admindir=/rootdir_opt$DEFAULT_ADMINDIR +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/chdir.at:329" +$at_failed && at_fn_log_failure +$at_traceon; } + + + set +x + $at_times_p && times >"$at_times_file" +) 5>&1 2>&1 7>&- | eval $at_tee_pipe +read at_status <"$at_status_file" +#AT_STOP_63 +#AT_START_64 +at_fn_group_banner 64 'chdir.at:329' \ + "dpkg-trigger chdir opts" " " 5 +at_xfail=no +( + printf "%s\n" "64. $at_setup_line: testing $at_desc ..." + $at_traceon + + + + DPKG_ROOT= + DPKG_ADMINDIR= + + { set +x +printf "%s\n" "$at_srcdir/chdir.at:329: DPKG_DEBUG=1 dpkg-trigger --version --root=/rootdir_opt" +at_fn_check_prepare_trace "chdir.at:329" +( $at_check_trace; DPKG_DEBUG=1 dpkg-trigger --version --root=/rootdir_opt +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "D000001: root=/rootdir_opt admindir=/rootdir_opt$DEFAULT_ADMINDIR +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/chdir.at:329" +$at_failed && at_fn_log_failure +$at_traceon; } + + + { set +x +printf "%s\n" "$at_srcdir/chdir.at:329: DPKG_DEBUG=1 dpkg-trigger --version --admindir=/admindir_opt" +at_fn_check_prepare_trace "chdir.at:329" +( $at_check_trace; DPKG_DEBUG=1 dpkg-trigger --version --admindir=/admindir_opt +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "D000001: root=$DEFAULT_ROOTDIR admindir=/admindir_opt +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/chdir.at:329" +$at_failed && at_fn_log_failure +$at_traceon; } + + + { set +x +printf "%s\n" "$at_srcdir/chdir.at:329: DPKG_DEBUG=1 dpkg-trigger --version --root=/rootdir_opt --admindir=/admindir_opt" +at_fn_check_prepare_trace "chdir.at:329" +( $at_check_trace; DPKG_DEBUG=1 dpkg-trigger --version --root=/rootdir_opt --admindir=/admindir_opt +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "D000001: root=/rootdir_opt admindir=/admindir_opt +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/chdir.at:329" +$at_failed && at_fn_log_failure +$at_traceon; } + + + { set +x +printf "%s\n" "$at_srcdir/chdir.at:329: DPKG_DEBUG=1 dpkg-trigger --version --admindir=/admindir_opt --root=/rootdir_opt" +at_fn_check_prepare_trace "chdir.at:329" +( $at_check_trace; DPKG_DEBUG=1 dpkg-trigger --version --admindir=/admindir_opt --root=/rootdir_opt +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "D000001: root=/rootdir_opt admindir=/rootdir_opt$DEFAULT_ADMINDIR +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/chdir.at:329" +$at_failed && at_fn_log_failure +$at_traceon; } + + + set +x + $at_times_p && times >"$at_times_file" +) 5>&1 2>&1 7>&- | eval $at_tee_pipe +read at_status <"$at_status_file" +#AT_STOP_64 +#AT_START_65 +at_fn_group_banner 65 'chdir.at:329' \ + "dpkg-trigger chdir env" " " 5 +at_xfail=no +( + printf "%s\n" "65. $at_setup_line: testing $at_desc ..." + $at_traceon + + + + DPKG_ROOT= + DPKG_ADMINDIR= + + { set +x +printf "%s\n" "$at_srcdir/chdir.at:329: DPKG_ADMINDIR=/admindir_env \\ + DPKG_DEBUG=1 dpkg-trigger --version" +at_fn_check_prepare_notrace 'an embedded newline' "chdir.at:329" +( $at_check_trace; DPKG_ADMINDIR=/admindir_env \ + DPKG_DEBUG=1 dpkg-trigger --version +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "D000001: root=$DEFAULT_ROOTDIR admindir=/admindir_env +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/chdir.at:329" +$at_failed && at_fn_log_failure +$at_traceon; } + + + { set +x +printf "%s\n" "$at_srcdir/chdir.at:329: DPKG_ROOT=/rootdir_env \\ + DPKG_DEBUG=1 dpkg-trigger --version" +at_fn_check_prepare_notrace 'an embedded newline' "chdir.at:329" +( $at_check_trace; DPKG_ROOT=/rootdir_env \ + DPKG_DEBUG=1 dpkg-trigger --version +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "D000001: root=/rootdir_env admindir=/rootdir_env$DEFAULT_ADMINDIR +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/chdir.at:329" +$at_failed && at_fn_log_failure +$at_traceon; } + + + { set +x +printf "%s\n" "$at_srcdir/chdir.at:329: DPKG_ROOT=/rootdir_env DPKG_ADMINDIR=/admindir_env \\ + DPKG_DEBUG=1 dpkg-trigger --version" +at_fn_check_prepare_notrace 'an embedded newline' "chdir.at:329" +( $at_check_trace; DPKG_ROOT=/rootdir_env DPKG_ADMINDIR=/admindir_env \ + DPKG_DEBUG=1 dpkg-trigger --version +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "D000001: root=/rootdir_env admindir=/admindir_env +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/chdir.at:329" +$at_failed && at_fn_log_failure +$at_traceon; } + + + set +x + $at_times_p && times >"$at_times_file" +) 5>&1 2>&1 7>&- | eval $at_tee_pipe +read at_status <"$at_status_file" +#AT_STOP_65 +#AT_START_66 +at_fn_group_banner 66 'chdir.at:329' \ + "dpkg-trigger chdir env+opt admindir" " " 5 +at_xfail=no +( + printf "%s\n" "66. $at_setup_line: testing $at_desc ..." + $at_traceon + + + + DPKG_ROOT= + DPKG_ADMINDIR= + + { set +x +printf "%s\n" "$at_srcdir/chdir.at:329: DPKG_ADMINDIR=/admindir_env \\ + DPKG_DEBUG=1 dpkg-trigger --version --root=/rootdir_opt" +at_fn_check_prepare_notrace 'an embedded newline' "chdir.at:329" +( $at_check_trace; DPKG_ADMINDIR=/admindir_env \ + DPKG_DEBUG=1 dpkg-trigger --version --root=/rootdir_opt +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "D000001: root=/rootdir_opt admindir=/rootdir_opt$DEFAULT_ADMINDIR +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/chdir.at:329" +$at_failed && at_fn_log_failure +$at_traceon; } + + { set +x +printf "%s\n" "$at_srcdir/chdir.at:329: DPKG_ADMINDIR=/admindir_env \\ + DPKG_DEBUG=1 dpkg-trigger --version --admindir=/admindir_opt" +at_fn_check_prepare_notrace 'an embedded newline' "chdir.at:329" +( $at_check_trace; DPKG_ADMINDIR=/admindir_env \ + DPKG_DEBUG=1 dpkg-trigger --version --admindir=/admindir_opt +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "D000001: root=$DEFAULT_ROOTDIR admindir=/admindir_opt +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/chdir.at:329" +$at_failed && at_fn_log_failure +$at_traceon; } + + { set +x +printf "%s\n" "$at_srcdir/chdir.at:329: DPKG_ADMINDIR=/admindir_env \\ + DPKG_DEBUG=1 dpkg-trigger --version --root=/rootdir_opt --admindir=/admindir_opt" +at_fn_check_prepare_notrace 'an embedded newline' "chdir.at:329" +( $at_check_trace; DPKG_ADMINDIR=/admindir_env \ + DPKG_DEBUG=1 dpkg-trigger --version --root=/rootdir_opt --admindir=/admindir_opt +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "D000001: root=/rootdir_opt admindir=/admindir_opt +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/chdir.at:329" +$at_failed && at_fn_log_failure +$at_traceon; } + + { set +x +printf "%s\n" "$at_srcdir/chdir.at:329: DPKG_ADMINDIR=/admindir_env \\ + DPKG_DEBUG=1 dpkg-trigger --version --admindir=/admindir_opt --root=/rootdir_opt" +at_fn_check_prepare_notrace 'an embedded newline' "chdir.at:329" +( $at_check_trace; DPKG_ADMINDIR=/admindir_env \ + DPKG_DEBUG=1 dpkg-trigger --version --admindir=/admindir_opt --root=/rootdir_opt +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "D000001: root=/rootdir_opt admindir=/rootdir_opt$DEFAULT_ADMINDIR +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/chdir.at:329" +$at_failed && at_fn_log_failure +$at_traceon; } + + + set +x + $at_times_p && times >"$at_times_file" +) 5>&1 2>&1 7>&- | eval $at_tee_pipe +read at_status <"$at_status_file" +#AT_STOP_66 +#AT_START_67 +at_fn_group_banner 67 'chdir.at:329' \ + "dpkg-trigger chdir env+opt root" " " 5 +at_xfail=no +( + printf "%s\n" "67. $at_setup_line: testing $at_desc ..." + $at_traceon + + + + DPKG_ROOT= + DPKG_ADMINDIR= + + { set +x +printf "%s\n" "$at_srcdir/chdir.at:329: DPKG_ROOT=/rootdir_env \\ + DPKG_DEBUG=1 dpkg-trigger --version --root=/rootdir_opt" +at_fn_check_prepare_notrace 'an embedded newline' "chdir.at:329" +( $at_check_trace; DPKG_ROOT=/rootdir_env \ + DPKG_DEBUG=1 dpkg-trigger --version --root=/rootdir_opt +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "D000001: root=/rootdir_opt admindir=/rootdir_opt$DEFAULT_ADMINDIR +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/chdir.at:329" +$at_failed && at_fn_log_failure +$at_traceon; } + + { set +x +printf "%s\n" "$at_srcdir/chdir.at:329: DPKG_ROOT=/rootdir_env \\ + DPKG_DEBUG=1 dpkg-trigger --version --admindir=/admindir_opt" +at_fn_check_prepare_notrace 'an embedded newline' "chdir.at:329" +( $at_check_trace; DPKG_ROOT=/rootdir_env \ + DPKG_DEBUG=1 dpkg-trigger --version --admindir=/admindir_opt +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "D000001: root=/rootdir_env admindir=/admindir_opt +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/chdir.at:329" +$at_failed && at_fn_log_failure +$at_traceon; } + + { set +x +printf "%s\n" "$at_srcdir/chdir.at:329: DPKG_ROOT=/rootdir_env \\ + DPKG_DEBUG=1 dpkg-trigger --version --root=/rootdir_opt --admindir=/admindir_opt" +at_fn_check_prepare_notrace 'an embedded newline' "chdir.at:329" +( $at_check_trace; DPKG_ROOT=/rootdir_env \ + DPKG_DEBUG=1 dpkg-trigger --version --root=/rootdir_opt --admindir=/admindir_opt +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "D000001: root=/rootdir_opt admindir=/admindir_opt +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/chdir.at:329" +$at_failed && at_fn_log_failure +$at_traceon; } + + { set +x +printf "%s\n" "$at_srcdir/chdir.at:329: DPKG_ROOT=/rootdir_env \\ + DPKG_DEBUG=1 dpkg-trigger --version --admindir=/admindir_opt --root=/rootdir_opt" +at_fn_check_prepare_notrace 'an embedded newline' "chdir.at:329" +( $at_check_trace; DPKG_ROOT=/rootdir_env \ + DPKG_DEBUG=1 dpkg-trigger --version --admindir=/admindir_opt --root=/rootdir_opt +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "D000001: root=/rootdir_opt admindir=/rootdir_opt$DEFAULT_ADMINDIR +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/chdir.at:329" +$at_failed && at_fn_log_failure +$at_traceon; } + + + set +x + $at_times_p && times >"$at_times_file" +) 5>&1 2>&1 7>&- | eval $at_tee_pipe +read at_status <"$at_status_file" +#AT_STOP_67 +#AT_START_68 +at_fn_group_banner 68 'chdir.at:329' \ + "dpkg-trigger chdir env+opt root+admindir" " " 5 +at_xfail=no +( + printf "%s\n" "68. $at_setup_line: testing $at_desc ..." + $at_traceon + + + + DPKG_ROOT= + DPKG_ADMINDIR= + + { set +x +printf "%s\n" "$at_srcdir/chdir.at:329: DPKG_ROOT=/rootdir_env DPKG_ADMINDIR=/admindir_env \\ + DPKG_DEBUG=1 dpkg-trigger --version --root=/rootdir_opt" +at_fn_check_prepare_notrace 'an embedded newline' "chdir.at:329" +( $at_check_trace; DPKG_ROOT=/rootdir_env DPKG_ADMINDIR=/admindir_env \ + DPKG_DEBUG=1 dpkg-trigger --version --root=/rootdir_opt +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "D000001: root=/rootdir_opt admindir=/rootdir_opt$DEFAULT_ADMINDIR +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/chdir.at:329" +$at_failed && at_fn_log_failure +$at_traceon; } + + { set +x +printf "%s\n" "$at_srcdir/chdir.at:329: DPKG_ROOT=/rootdir_env DPKG_ADMINDIR=/admindir_env \\ + DPKG_DEBUG=1 dpkg-trigger --version --admindir=/admindir_opt" +at_fn_check_prepare_notrace 'an embedded newline' "chdir.at:329" +( $at_check_trace; DPKG_ROOT=/rootdir_env DPKG_ADMINDIR=/admindir_env \ + DPKG_DEBUG=1 dpkg-trigger --version --admindir=/admindir_opt +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "D000001: root=/rootdir_env admindir=/admindir_opt +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/chdir.at:329" +$at_failed && at_fn_log_failure +$at_traceon; } + + { set +x +printf "%s\n" "$at_srcdir/chdir.at:329: DPKG_ROOT=/rootdir_env DPKG_ADMINDIR=/admindir_env \\ + DPKG_DEBUG=1 dpkg-trigger --version --root=/rootdir_opt --admindir=/admindir_opt" +at_fn_check_prepare_notrace 'an embedded newline' "chdir.at:329" +( $at_check_trace; DPKG_ROOT=/rootdir_env DPKG_ADMINDIR=/admindir_env \ + DPKG_DEBUG=1 dpkg-trigger --version --root=/rootdir_opt --admindir=/admindir_opt +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "D000001: root=/rootdir_opt admindir=/admindir_opt +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/chdir.at:329" +$at_failed && at_fn_log_failure +$at_traceon; } + + { set +x +printf "%s\n" "$at_srcdir/chdir.at:329: DPKG_ROOT=/rootdir_env DPKG_ADMINDIR=/admindir_env \\ + DPKG_DEBUG=1 dpkg-trigger --version --admindir=/admindir_opt --root=/rootdir_opt" +at_fn_check_prepare_notrace 'an embedded newline' "chdir.at:329" +( $at_check_trace; DPKG_ROOT=/rootdir_env DPKG_ADMINDIR=/admindir_env \ + DPKG_DEBUG=1 dpkg-trigger --version --admindir=/admindir_opt --root=/rootdir_opt +) >>"$at_stdout" 2>>"$at_stderr" 5>&- +at_status=$? at_failed=false +$at_check_filter +echo >>"$at_stderr"; printf "%s\n" "D000001: root=/rootdir_opt admindir=/rootdir_opt$DEFAULT_ADMINDIR +" | \ + $at_diff - "$at_stderr" || at_failed=: +echo stdout:; cat "$at_stdout" +at_fn_check_status 0 $at_status "$at_srcdir/chdir.at:329" +$at_failed && at_fn_log_failure +$at_traceon; } + + + set +x + $at_times_p && times >"$at_times_file" +) 5>&1 2>&1 7>&- | eval $at_tee_pipe +read at_status <"$at_status_file" +#AT_STOP_68 diff --git a/src/at/testsuite.at b/src/at/testsuite.at new file mode 100644 index 0000000..86e2d37 --- /dev/null +++ b/src/at/testsuite.at @@ -0,0 +1,24 @@ +AT_INIT([dpkg tools functional test suite]) +AT_COLOR_TESTS + +AT_TESTED([dpkg-deb]) +AT_BANNER([Binary .deb packages]) +m4_include([deb-format.at]) +m4_include([deb-content.at]) +m4_include([deb-fields.at]) + +AT_TESTED([dpkg-split]) +AT_BANNER([Split .deb packages]) +m4_include([deb-split.at]) + +AT_TESTED([dpkg-realpath]) +AT_BANNER([Resolve pathnames]) +m4_include([realpath.at]) + +AT_TESTED([dpkg-divert]) +AT_BANNER([Diversions]) +m4_include([divert.at]) + +AT_TESTED([dpkg]) +AT_BANNER([Change directory options]) +m4_include([chdir.at]) diff --git a/src/common/actions.h b/src/common/actions.h new file mode 100644 index 0000000..a78f329 --- /dev/null +++ b/src/common/actions.h @@ -0,0 +1,78 @@ +/* + * dpkg - main program for package management + * actions.h - command action definition list + * + * Copyright © 1995 Ian Jackson + * Copyright © 2006, 2008-2016 Guillem Jover + * + * This is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#ifndef DPKG_ACTIONS_H +#define DPKG_ACTIONS_H + +enum action { + act_unset, + + act_unpack, + act_configure, + act_install, + act_triggers, + act_remove, + act_purge, + act_verify, + act_commandfd, + + act_status, + act_listpackages, + act_listfiles, + act_searchfiles, + act_controlpath, + act_controllist, + act_controlshow, + + act_cmpversions, + + act_arch_add, + act_arch_remove, + act_printarch, + act_printforeignarches, + + act_assert_feature, + + act_validate_pkgname, + act_validate_trigname, + act_validate_archname, + act_validate_version, + + act_audit, + act_unpackchk, + act_predeppackage, + + act_getselections, + act_setselections, + act_clearselections, + + act_avail, + act_printavail, + act_avclear, + act_avreplace, + act_avmerge, + act_forgetold, + + act_help, + act_version, +}; + +#endif /* DPKG_ACTIONS_H */ diff --git a/src/common/force.c b/src/common/force.c new file mode 100644 index 0000000..2e1fd78 --- /dev/null +++ b/src/common/force.c @@ -0,0 +1,404 @@ +/* + * dpkg - main program for package management + * force.c - force operation support + * + * Copyright © 1994,1995 Ian Jackson + * Copyright © 2006-2019 Guillem Jover + * + * This is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include +#include + +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include + +#include "force.h" + +static int force_mask; +static int force_flags; + +enum forcetype { + FORCETYPE_DISABLED, + FORCETYPE_ENABLED, + FORCETYPE_DAMAGE, +}; + +static const char * +forcetype_str(enum forcetype type) +{ + switch (type) { + case FORCETYPE_DISABLED: + return " "; + case FORCETYPE_ENABLED: + return "[*]"; + case FORCETYPE_DAMAGE: + return "[!]"; + default: + internerr("unknown force type '%d'", type); + } +} + +static const struct forceinfo { + const char *name; + int flag; + char type; + const char *desc; +} forceinfos[] = { + { + "all", + FORCE_ALL, + FORCETYPE_DAMAGE, + N_("Set all force options"), + }, { + "security-mac", + FORCE_SECURITY_MAC, + FORCETYPE_ENABLED, + N_("Use MAC based security if available"), + }, { + "downgrade", + FORCE_DOWNGRADE, + FORCETYPE_ENABLED, + N_("Replace a package with a lower version"), + }, { + "configure-any", + FORCE_CONFIGURE_ANY, + FORCETYPE_DISABLED, + N_("Configure any package which may help this one"), + }, { + "hold", + FORCE_HOLD, + FORCETYPE_DISABLED, + N_("Install or remove incidental packages even when on hold"), + }, { + "not-root", + FORCE_NON_ROOT, + FORCETYPE_DISABLED, + N_("Try to (de)install things even when not root"), + }, { + "bad-path", + FORCE_BAD_PATH, + FORCETYPE_DISABLED, + N_("PATH is missing important programs, problems likely"), + }, { + "bad-verify", + FORCE_BAD_VERIFY, + FORCETYPE_DISABLED, + N_("Install a package even if it fails authenticity check"), + }, { + "bad-version", + FORCE_BAD_VERSION, + FORCETYPE_DISABLED, + N_("Process even packages with wrong versions"), + }, { + "statoverride-add", + FORCE_STATOVERRIDE_ADD, + FORCETYPE_DISABLED, + N_("Overwrite an existing stat override when adding it"), + }, { + "statoverride-remove", + FORCE_STATOVERRIDE_DEL, + FORCETYPE_DISABLED, + N_("Ignore a missing stat override when removing it"), + }, { + "overwrite", + FORCE_OVERWRITE, + FORCETYPE_DISABLED, + N_("Overwrite a file from one package with another"), + }, { + "overwrite-diverted", + FORCE_OVERWRITE_DIVERTED, + FORCETYPE_DISABLED, + N_("Overwrite a diverted file with an undiverted version"), + }, { + "overwrite-dir", + FORCE_OVERWRITE_DIR, + FORCETYPE_DAMAGE, + N_("Overwrite one package's directory with another's file"), + }, { + "unsafe-io", + FORCE_UNSAFE_IO, + FORCETYPE_DAMAGE, + N_("Do not perform safe I/O operations when unpacking"), + }, { + "script-chrootless", + FORCE_SCRIPT_CHROOTLESS, + FORCETYPE_DAMAGE, + N_("Do not chroot into maintainer script environment"), + }, { + "confnew", + FORCE_CONFF_NEW, + FORCETYPE_DAMAGE, + N_("Always use the new config files, don't prompt"), + }, { + "confold", + FORCE_CONFF_OLD, + FORCETYPE_DAMAGE, + N_("Always use the old config files, don't prompt"), + }, { + "confdef", + FORCE_CONFF_DEF, + FORCETYPE_DAMAGE, + N_("Use the default option for new config files if one\n" + "is available, don't prompt. If no default can be found,\n" + "you will be prompted unless one of the confold or\n" + "confnew options is also given"), + }, { + "confmiss", + FORCE_CONFF_MISS, + FORCETYPE_DAMAGE, + N_("Always install missing config files"), + }, { + "confask", + FORCE_CONFF_ASK, + FORCETYPE_DAMAGE, + N_("Offer to replace config files with no new versions"), + }, { + "architecture", + FORCE_ARCHITECTURE, + FORCETYPE_DAMAGE, + N_("Process even packages with wrong or no architecture"), + }, { + "breaks", + FORCE_BREAKS, + FORCETYPE_DAMAGE, + N_("Install even if it would break another package"), + }, { + "conflicts", + FORCE_CONFLICTS, + FORCETYPE_DAMAGE, + N_("Allow installation of conflicting packages"), + }, { + "depends", + FORCE_DEPENDS, + FORCETYPE_DAMAGE, + N_("Turn all dependency problems into warnings"), + }, { + "depends-version", + FORCE_DEPENDS_VERSION, + FORCETYPE_DAMAGE, + N_("Turn dependency version problems into warnings"), + }, { + "remove-reinstreq", + FORCE_REMOVE_REINSTREQ, + FORCETYPE_DAMAGE, + N_("Remove packages which require installation"), + }, { + "remove-protected", + FORCE_REMOVE_PROTECTED, + FORCETYPE_DAMAGE, + N_("Remove a protected package"), + }, { + "remove-essential", + FORCE_REMOVE_ESSENTIAL, + FORCETYPE_DAMAGE, + N_("Remove an essential package"), + }, { + NULL + } +}; + +bool +in_force(int flags) +{ + return (flags & force_flags) == flags; +} + +void +set_force(int flags) +{ + force_flags |= flags; +} + +void +reset_force(int flags) +{ + force_flags &= ~flags; +} + +char * +get_force_string(void) +{ + const struct forceinfo *fip; + struct varbuf vb = VARBUF_INIT; + + for (fip = forceinfos; fip->name; fip++) { + if ((enum force_flags)fip->flag == FORCE_ALL || + (fip->flag & force_mask) != fip->flag || + !in_force(fip->flag)) + continue; + + if (vb.used) + varbuf_add_char(&vb, ','); + varbuf_add_str(&vb, fip->name); + } + varbuf_end_str(&vb); + + return varbuf_detach(&vb); +} + +static inline void +print_forceinfo_line(int type, const char *name, const char *desc) +{ + printf(" %s %-18s %s\n", forcetype_str(type), name, desc); +} + +static void +print_forceinfo(const struct forceinfo *fi) +{ + char *desc, *line; + + desc = m_strdup(gettext(fi->desc)); + + line = strtok(desc, "\n"); + print_forceinfo_line(fi->type, fi->name, line); + while ((line = strtok(NULL, "\n"))) + print_forceinfo_line(FORCETYPE_DISABLED, "", line); + + free(desc); +} + +void +parse_force(const char *value, bool set) +{ + const char *comma; + size_t l; + const struct forceinfo *fip; + + if (strcmp(value, "help") == 0) { + char *force_string = get_force_string(); + + printf(_( +"%s forcing options - control behaviour when problems found:\n" +" warn but continue: --force-,,...\n" +" stop with error: --refuse-,,... | --no-force-,...\n" +" Forcing things:\n"), dpkg_get_progname()); + + for (fip = forceinfos; fip->name; fip++) + if ((enum force_flags)fip->flag == FORCE_ALL || + (fip->flag & force_mask) == fip->flag) + print_forceinfo(fip); + + printf(_( +"\n" +"WARNING - use of options marked [!] can seriously damage your installation.\n" +"Forcing options marked [*] are enabled by default.\n")); + m_output(stdout, _("")); + + printf(_( +"\n" +"Currently enabled options:\n" +" %s\n"), force_string); + + free(force_string); + + exit(0); + } + + for (;;) { + comma = strchrnul(value, ','); + l = (size_t)(comma - value); + for (fip = forceinfos; fip->name; fip++) + if (strncmp(fip->name, value, l) == 0 && + strlen(fip->name) == l) + break; + + if (!fip->name) { + badusage(_("unknown force/refuse option '%.*s'"), + (int)min(l, 250), value); + } else if (fip->flag) { + if (set) + set_force(fip->flag); + else + reset_force(fip->flag); + } else { + warning(_("obsolete force/refuse option '%s'"), + fip->name); + } + + if (*comma == '\0') + break; + value = ++comma; + } +} + +void +set_force_default(int mask) +{ + const char *force_env; + const struct forceinfo *fip; + + force_mask = mask; + + /* If we get passed force options from the environment, do not + * initialize from the built-in defaults. */ + force_env = getenv("DPKG_FORCE"); + if (force_env != NULL) { + if (force_env[0] != '\0') + parse_force(force_env, 1); + return; + } + + for (fip = forceinfos; fip->name; fip++) + if (fip->type == FORCETYPE_ENABLED) + set_force(fip->flag); +} + +void +set_force_option(const struct cmdinfo *cip, const char *value) +{ + bool set = cip->arg_int; + + parse_force(value, set); +} + +void +reset_force_option(const struct cmdinfo *cip, const char *value) +{ + reset_force(cip->arg_int); +} + +void +forcibleerr(int forceflag, const char *fmt, ...) +{ + va_list args; + + va_start(args, fmt); + if (in_force(forceflag)) { + warning(_("overriding problem because --force enabled:")); + warningv(fmt, args); + } else { + ohshitv(fmt, args); + } + va_end(args); +} + +int +forcible_nonroot_error(int rc) +{ + if (in_force(FORCE_NON_ROOT) && errno == EPERM) + return 0; + return rc; +} diff --git a/src/common/force.h b/src/common/force.h new file mode 100644 index 0000000..25a42fc --- /dev/null +++ b/src/common/force.h @@ -0,0 +1,85 @@ +/* + * dpkg - main program for package management + * force.h - forced operation support + * + * Copyright © 1995 Ian Jackson + * Copyright © 2006, 2008-2019 Guillem Jover + * + * This is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#ifndef DPKG_FORCE_H +#define DPKG_FORCE_H + +#include +#include + +enum force_flags { + FORCE_ARCHITECTURE = DPKG_BIT(0), + FORCE_BAD_PATH = DPKG_BIT(1), + FORCE_BAD_VERIFY = DPKG_BIT(2), + FORCE_BAD_VERSION = DPKG_BIT(3), + FORCE_BREAKS = DPKG_BIT(4), + FORCE_CONFF_ASK = DPKG_BIT(5), + FORCE_CONFF_DEF = DPKG_BIT(6), + FORCE_CONFF_MISS = DPKG_BIT(7), + FORCE_CONFF_NEW = DPKG_BIT(8), + FORCE_CONFF_OLD = DPKG_BIT(9), + FORCE_CONFIGURE_ANY = DPKG_BIT(10), + FORCE_CONFLICTS = DPKG_BIT(11), + FORCE_DEPENDS = DPKG_BIT(12), + FORCE_DEPENDS_VERSION = DPKG_BIT(13), + FORCE_DOWNGRADE = DPKG_BIT(14), + FORCE_HOLD = DPKG_BIT(15), + FORCE_NON_ROOT = DPKG_BIT(16), + FORCE_OVERWRITE = DPKG_BIT(17), + FORCE_OVERWRITE_DIR = DPKG_BIT(18), + FORCE_OVERWRITE_DIVERTED = DPKG_BIT(19), + FORCE_REMOVE_ESSENTIAL = DPKG_BIT(20), + FORCE_REMOVE_REINSTREQ = DPKG_BIT(21), + FORCE_SCRIPT_CHROOTLESS = DPKG_BIT(22), + FORCE_UNSAFE_IO = DPKG_BIT(23), + FORCE_STATOVERRIDE_ADD = DPKG_BIT(24), + FORCE_STATOVERRIDE_DEL = DPKG_BIT(25), + FORCE_SECURITY_MAC = DPKG_BIT(26), + FORCE_REMOVE_PROTECTED = DPKG_BIT(27), + FORCE_ALL = 0xffffffff, +}; + +bool +in_force(int flags); +void +set_force(int flags); +void +reset_force(int flags); + +char * +get_force_string(void); + +void +parse_force(const char *value, bool set); + +void +set_force_default(int mask); +void +set_force_option(const struct cmdinfo *cip, const char *value); +void +reset_force_option(const struct cmdinfo *cip, const char *value); + +void +forcibleerr(int forceflag, const char *format, ...) DPKG_ATTR_PRINTF(2); +int +forcible_nonroot_error(int rc); + +#endif /* DPKG_FORCE_H */ diff --git a/src/common/security-mac.h b/src/common/security-mac.h new file mode 100644 index 0000000..637c6f7 --- /dev/null +++ b/src/common/security-mac.h @@ -0,0 +1,30 @@ +/* + * dpkg - main program for package management + * security-mac.h - MAC-based security support + * + * Copyright © 2015 Guillem Jover + * + * This is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#ifndef DPKG_SECURITY_MAC_H +#define DPKG_SECURITY_MAC_H + +#include + +void dpkg_selabel_load(void); +void dpkg_selabel_set_context(const char *matchpath, const char *path, mode_t mode); +void dpkg_selabel_close(void); + +#endif /* DPKG_SECURITY_MAC_H */ diff --git a/src/common/selinux.c b/src/common/selinux.c new file mode 100644 index 0000000..b5d29d8 --- /dev/null +++ b/src/common/selinux.c @@ -0,0 +1,156 @@ +/* + * dpkg - main program for package management + * selinux.c - SELinux support + * + * Copyright © 2007-2015 Guillem Jover + * + * This is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include +#include + +#include +#include + +#include +#include + +#include +#include +#include + +#ifdef WITH_LIBSELINUX +#include +#include +#include +#endif + +#include "force.h" +#include "security-mac.h" + +#ifdef WITH_LIBSELINUX +static struct selabel_handle *sehandle; +#endif + +#ifdef WITH_LIBSELINUX +static int DPKG_ATTR_PRINTF(2) +log_callback(int type, const char *fmt, ...) +{ + va_list ap; + char *msg; + + switch (type) { + case SELINUX_ERROR: + case SELINUX_WARNING: + case SELINUX_AVC: + break; + default: + return 0; + } + + va_start(ap, fmt); + m_vasprintf(&msg, fmt, ap); + va_end(ap); + + warning("selinux: %s", msg); + free(msg); + + return 0; +} +#endif + +void +dpkg_selabel_load(void) +{ +#ifdef WITH_LIBSELINUX + static int selinux_enabled = -1; + + if (selinux_enabled < 0) { + int rc; + + /* Set selinux_enabled if it is not already set (singleton). */ + selinux_enabled = (in_force(FORCE_SECURITY_MAC) && + is_selinux_enabled() > 0); + if (!selinux_enabled) + return; + + /* Open the SELinux status notification channel, with fallback + * enabled for older kernels. */ + rc = selinux_status_open(1); + if (rc < 0) + ohshit(_("cannot open security status notification channel")); + + selinux_set_callback(SELINUX_CB_LOG, (union selinux_callback) { + .func_log = log_callback, + }); + } else if (selinux_enabled && selinux_status_updated()) { + /* The SELinux policy got updated in the kernel, usually after + * upgrading the package shipping it, we need to reload. */ + selabel_close(sehandle); + } else { + /* SELinux is either disabled or it does not need a reload. */ + return; + } + + sehandle = selabel_open(SELABEL_CTX_FILE, NULL, 0); + if (sehandle == NULL && security_getenforce() == 1) + ohshite(_("cannot get security labeling handle")); +#endif +} + +void +dpkg_selabel_set_context(const char *matchpath, const char *path, mode_t mode) +{ +#ifdef WITH_LIBSELINUX + char *scontext = NULL; + int ret; + + /* If SELinux is not enabled just do nothing. */ + if (sehandle == NULL) + return; + + /* + * We use the _raw function variants here so that no translation + * happens from computer to human readable forms, to avoid issues + * when mcstransd has disappeared during the unpack process. + */ + + /* Do nothing if we can't figure out what the context is, or if it has + * no context; in which case the default context shall be applied. */ + ret = selabel_lookup_raw(sehandle, &scontext, matchpath, mode & S_IFMT); + if (ret == -1 || (ret == 0 && scontext == NULL)) + return; + + ret = lsetfilecon_raw(path, scontext); + if (ret < 0 && errno != ENOTSUP) + ohshite(_("cannot set security context for file object '%s'"), + path); + + freecon(scontext); +#endif /* WITH_LIBSELINUX */ +} + +void +dpkg_selabel_close(void) +{ +#ifdef WITH_LIBSELINUX + if (sehandle == NULL) + return; + + selinux_status_close(); + selabel_close(sehandle); + sehandle = NULL; +#endif +} diff --git a/src/deb/build.c b/src/deb/build.c new file mode 100644 index 0000000..5c74ff3 --- /dev/null +++ b/src/deb/build.c @@ -0,0 +1,730 @@ +/* + * dpkg-deb - construction and deconstruction of *.deb archives + * build.c - building archives + * + * Copyright © 1994,1995 Ian Jackson + * Copyright © 2000,2001 Wichert Akkerman + * Copyright © 2007-2015 Guillem Jover + * + * This is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include +#include + +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "dpkg-deb.h" + +static void +control_treewalk_feed(const char *dir, int fd_out) +{ + struct treeroot *tree; + struct treenode *node; + + tree = treewalk_open(dir, TREEWALK_NONE, NULL); + for (node = treewalk_node(tree); node; node = treewalk_next(tree)) { + char *nodename; + + nodename = str_fmt("./%s", treenode_get_virtname(node)); + if (fd_write(fd_out, nodename, strlen(nodename) + 1) < 0) + ohshite(_("failed to write filename to tar pipe (%s)"), + _("control member")); + free(nodename); + } + treewalk_close(tree); +} + +/** + * Simple structure to store information about a file. + */ +struct file_info { + struct file_info *next; + char *fn; +}; + +static struct file_info * +file_info_new(const char *filename) +{ + struct file_info *fi; + + fi = m_malloc(sizeof(*fi)); + fi->fn = m_strdup(filename); + fi->next = NULL; + + return fi; +} + +static void +file_info_free(struct file_info *fi) +{ + free(fi->fn); + free(fi); +} + +static struct file_info * +file_info_find_name(struct file_info *list, const char *filename) +{ + struct file_info *node; + + for (node = list; node; node = node->next) + if (strcmp(node->fn, filename) == 0) + return node; + + return NULL; +} + +/** + * Add a new file_info struct to a single linked list of file_info structs. + * + * We perform a slight optimization to work around a ‘feature’ in tar: tar + * always recurses into subdirectories if you list a subdirectory. So if an + * entry is added and the previous entry in the list is its subdirectory we + * remove the subdirectory. + * + * After a file_info struct is added to a list it may no longer be freed, we + * assume full responsibility for its memory. + */ +static void +file_info_list_append(struct file_info **head, struct file_info **tail, + struct file_info *fi) +{ + if (*head == NULL) + *head = *tail = fi; + else + *tail = (*tail)->next =fi; +} + +/** + * Free the memory for all entries in a list of file_info structs. + */ +static void +file_info_list_free(struct file_info *fi) +{ + while (fi) { + struct file_info *fl; + + fl=fi; fi=fi->next; + file_info_free(fl); + } +} + +static void +file_treewalk_feed(const char *dir, int fd_out) +{ + struct treeroot *tree; + struct treenode *node; + struct file_info *fi; + struct file_info *symlist = NULL; + struct file_info *symlist_end = NULL; + + tree = treewalk_open(dir, TREEWALK_NONE, NULL); + for (node = treewalk_node(tree); node ; node = treewalk_next(tree)) { + const char *virtname = treenode_get_virtname(node); + char *nodename; + + if (strncmp(virtname, BUILDCONTROLDIR, strlen(BUILDCONTROLDIR)) == 0) + continue; + + nodename = str_fmt("./%s", virtname); + + if (!nocheckflag && strchr(nodename, '\n')) + ohshit(_("newline not allowed in pathname '%s'"), nodename); + + /* We need to reorder the files so we can make sure that symlinks + * will not appear before their target. */ + if (S_ISLNK(treenode_get_mode(node))) { + fi = file_info_new(nodename); + file_info_list_append(&symlist, &symlist_end, fi); + } else { + if (fd_write(fd_out, nodename, strlen(nodename) + 1) < 0) + ohshite(_("failed to write filename to tar pipe (%s)"), + _("data member")); + } + + free(nodename); + } + treewalk_close(tree); + + for (fi = symlist; fi; fi = fi->next) + if (fd_write(fd_out, fi->fn, strlen(fi->fn) + 1) < 0) + ohshite(_("failed to write filename to tar pipe (%s)"), _("data member")); + + file_info_list_free(symlist); +} + +static const char *const maintainerscripts[] = { + PREINSTFILE, + POSTINSTFILE, + PRERMFILE, + POSTRMFILE, + MAINTSCRIPT_FILE_CONFIG, + NULL, +}; + +/** + * Check control directory and file permissions. + */ +static void +check_file_perms(const char *ctrldir) +{ + struct varbuf path = VARBUF_INIT; + const char *const *mscriptp; + struct stat mscriptstab; + + varbuf_printf(&path, "%s/", ctrldir); + if (lstat(path.buf, &mscriptstab)) + ohshite(_("unable to stat control directory")); + if (!S_ISDIR(mscriptstab.st_mode)) + ohshit(_("control directory is not a directory")); + if ((mscriptstab.st_mode & 07757) != 0755) + ohshit(_("control directory has bad permissions %03lo " + "(must be >=0755 and <=0775)"), + (unsigned long)(mscriptstab.st_mode & 07777)); + + for (mscriptp = maintainerscripts; *mscriptp; mscriptp++) { + varbuf_reset(&path); + varbuf_printf(&path, "%s/%s", ctrldir, *mscriptp); + if (!lstat(path.buf, &mscriptstab)) { + if (S_ISLNK(mscriptstab.st_mode)) + continue; + if (!S_ISREG(mscriptstab.st_mode)) + ohshit(_("maintainer script '%.50s' is not a plain file or symlink"), + *mscriptp); + if ((mscriptstab.st_mode & 07557) != 0555) + ohshit(_("maintainer script '%.50s' has bad permissions %03lo " + "(must be >=0555 and <=0775)"), + *mscriptp, (unsigned long)(mscriptstab.st_mode & 07777)); + } else if (errno != ENOENT) { + ohshite(_("maintainer script '%.50s' is not stattable"), *mscriptp); + } + } + + varbuf_destroy(&path); +} + +/** + * Check if conffiles contains sane information. + */ +static void +check_conffiles(const char *ctrldir, const char *rootdir) +{ + FILE *cf; + struct varbuf controlfile = VARBUF_INIT; + char conffilenamebuf[MAXCONFFILENAME + 1]; + struct file_info *conffiles_head = NULL; + struct file_info *conffiles_tail = NULL; + + varbuf_printf(&controlfile, "%s/%s", ctrldir, CONFFILESFILE); + + cf = fopen(controlfile.buf, "r"); + if (cf == NULL) { + if (errno == ENOENT) { + varbuf_destroy(&controlfile); + return; + } + + ohshite(_("error opening conffiles file")); + } + + while (fgets(conffilenamebuf, MAXCONFFILENAME + 1, cf)) { + struct stat controlstab; + char *conffilename = conffilenamebuf; + int n; + bool remove_on_upgrade = false; + + n = strlen(conffilename); + if (!n) + ohshite(_("empty string from fgets reading conffiles")); + + if (conffilename[n - 1] != '\n') + ohshit(_("conffile name '%s' is too long, or missing final newline"), + conffilename); + + conffilename[--n] = '\0'; + + if (c_isspace(conffilename[0])) { + /* The conffiles lines cannot start with whitespace; by handling this + * case now, we simplify the remaining code. Move past the whitespace + * to give a better error. */ + while (c_isspace(conffilename[0])) + conffilename++; + if (conffilename[0] == '\0') + ohshit(_("empty and whitespace-only lines are not allowed in " + "conffiles")); + ohshit(_("line with conffile filename '%s' has leading white spaces"), + conffilename); + } + + if (conffilename[0] != '/') { + char *flag = conffilename; + char *flag_end = strchr(flag, ' '); + + if (flag_end) { + conffilename = flag_end + 1; + n -= conffilename - flag; + } + + /* If no flag separator is found, assume a missing leading slash. */ + if (flag_end == NULL || (conffilename[0] && conffilename[0] != '/')) + ohshit(_("conffile name '%s' is not an absolute pathname"), conffilename); + + flag_end[0] = '\0'; + + /* Otherwise assume a missing filename after the flag separator. */ + if (conffilename[0] == '\0') + ohshit(_("conffile name missing after flag '%s'"), flag); + + if (strcmp(flag, "remove-on-upgrade") == 0) + remove_on_upgrade = true; + else + ohshit(_("unknown flag '%s' for conffile '%s'"), flag, conffilename); + } + + varbuf_reset(&controlfile); + varbuf_printf(&controlfile, "%s%s", rootdir, conffilename); + if (lstat(controlfile.buf, &controlstab)) { + if (errno == ENOENT) { + if ((n > 1) && c_isspace(conffilename[n - 1])) + warning(_("conffile filename '%s' contains trailing white spaces"), + conffilename); + if (!remove_on_upgrade) + ohshit(_("conffile '%.250s' does not appear in package"), conffilename); + } else + ohshite(_("conffile '%.250s' is not stattable"), conffilename); + } else if (remove_on_upgrade) { + ohshit(_("conffile '%s' is present but is requested to be removed"), + conffilename); + } else if (!S_ISREG(controlstab.st_mode)) { + warning(_("conffile '%s' is not a plain file"), conffilename); + } + + if (file_info_find_name(conffiles_head, conffilename)) { + warning(_("conffile name '%s' is duplicated"), conffilename); + } else { + struct file_info *conffile; + + conffile = file_info_new(conffilename); + file_info_list_append(&conffiles_head, &conffiles_tail, conffile); + } + } + + file_info_list_free(conffiles_head); + varbuf_destroy(&controlfile); + + if (ferror(cf)) + ohshite(_("error reading conffiles file")); + fclose(cf); +} + +/** + * Check the control file. + * + * @param ctrldir The directory from where to build the binary package. + * @return The pkginfo struct from the parsed control file. + */ +static struct pkginfo * +check_control_file(const char *ctrldir) +{ + struct pkginfo *pkg; + char *controlfile; + + controlfile = str_fmt("%s/%s", ctrldir, CONTROLFILE); + parsedb(controlfile, pdb_parse_binary, &pkg); + + if (strspn(pkg->set->name, "abcdefghijklmnopqrstuvwxyz0123456789+-.") != + strlen(pkg->set->name)) + ohshit(_("package name has characters that aren't lowercase alphanums or '-+.'")); + if (pkg->available.arch->type == DPKG_ARCH_NONE || + pkg->available.arch->type == DPKG_ARCH_EMPTY) + ohshit(_("package architecture is missing or empty")); + if (pkg->priority == PKG_PRIO_OTHER) + warning(_("'%s' contains user-defined Priority value '%s'"), + controlfile, pkg->otherpriority); + + free(controlfile); + + return pkg; +} + +/** + * Perform some sanity checks on the to-be-built package control area. + * + * @param ctrldir The directory from where to build the binary package. + * @return The pkginfo struct from the parsed control file. + */ +static struct pkginfo * +check_control_area(const char *ctrldir, const char *rootdir) +{ + struct pkginfo *pkg; + int warns; + + /* Start by reading in the control file so we can check its contents. */ + pkg = check_control_file(ctrldir); + check_file_perms(ctrldir); + check_conffiles(ctrldir, rootdir); + + warns = warning_get_count(); + if (warns) + warning(P_("ignoring %d warning about the control file(s)", + "ignoring %d warnings about the control file(s)", warns), + warns); + + return pkg; +} + +/** + * Generate the pathname for the destination binary package. + * + * If the pathname cannot be computed, because the destination is a directory, + * then NULL will be returned. + * + * @param dir The directory from where to build the binary package. + * @param dest The destination name, either a file or directory name. + * @return The pathname for the package being built. + */ +static char * +gen_dest_pathname(const char *dir, const char *dest) +{ + if (dest) { + struct stat dest_stab; + + if (stat(dest, &dest_stab)) { + if (errno != ENOENT) + ohshite(_("unable to check for existence of archive '%.250s'"), dest); + } else if (S_ISDIR(dest_stab.st_mode)) { + /* Need to compute the destination name from the package control file. */ + return NULL; + } + + return m_strdup(dest); + } else { + char *pathname; + + pathname = m_malloc(strlen(dir) + sizeof(DEBEXT)); + strcpy(pathname, dir); + path_trim_slash_slashdot(pathname); + strcat(pathname, DEBEXT); + + return pathname; + } +} + +/** + * Generate the pathname for the destination binary package from control file. + * + * @return The pathname for the package being built. + */ +static char * +gen_dest_pathname_from_pkg(const char *dir, struct pkginfo *pkg) +{ + return str_fmt("%s/%s_%s_%s%s", dir, pkg->set->name, + versiondescribe(&pkg->available.version, vdew_never), + pkg->available.arch->name, DEBEXT); +} + +typedef void filenames_feed_func(const char *dir, int fd_out); + +struct tar_pack_options { + intmax_t timestamp; + const char *mode; + bool root_owner_group; +}; + +/** + * Pack the contents of a directory into a tarball. + */ +static void +tarball_pack(const char *dir, filenames_feed_func *tar_filenames_feeder, + struct tar_pack_options *options, + struct compress_params *tar_compress_params, int fd_out) +{ + int pipe_filenames[2], pipe_tarball[2]; + pid_t pid_tar, pid_comp; + + /* Fork off a tar. We will feed it a list of filenames on stdin later. */ + m_pipe(pipe_filenames); + m_pipe(pipe_tarball); + pid_tar = subproc_fork(); + if (pid_tar == 0) { + struct command cmd; + char mtime[50]; + + m_dup2(pipe_filenames[0], 0); + close(pipe_filenames[0]); + close(pipe_filenames[1]); + m_dup2(pipe_tarball[1], 1); + close(pipe_tarball[0]); + close(pipe_tarball[1]); + + if (chdir(dir)) + ohshite(_("failed to chdir to '%.255s'"), dir); + + snprintf(mtime, sizeof(mtime), "@%jd", options->timestamp); + + command_init(&cmd, TAR, "tar -cf"); + command_add_args(&cmd, "tar", "-cf", "-", "--format=gnu", + "--mtime", mtime, "--clamp-mtime", NULL); + /* Mode might become a positional argument, pass it before -T. */ + if (options->mode) + command_add_args(&cmd, "--mode", options->mode, NULL); + if (options->root_owner_group) + command_add_args(&cmd, "--owner", "root:0", "--group", "root:0", NULL); + command_add_args(&cmd, "--null", "--no-unquote", "--no-recursion", + "-T", "-", NULL); + command_exec(&cmd); + } + close(pipe_filenames[0]); + close(pipe_tarball[1]); + + /* Of course we should not forget to compress the archive as well. */ + pid_comp = subproc_fork(); + if (pid_comp == 0) { + close(pipe_filenames[1]); + compress_filter(tar_compress_params, pipe_tarball[0], fd_out, + _("compressing tar member")); + exit(0); + } + close(pipe_tarball[0]); + + /* All the pipes are set, now lets start feeding filenames to tar. */ + tar_filenames_feeder(dir, pipe_filenames[1]); + + /* All done, clean up wait for tar and to finish their job. */ + close(pipe_filenames[1]); + subproc_reap(pid_comp, _(" from tar -cf"), 0); + subproc_reap(pid_tar, "tar -cf", 0); +} + +static intmax_t +parse_timestamp(const char *value) +{ + intmax_t timestamp; + char *end; + + errno = 0; + timestamp = strtoimax(value, &end, 10); + if (value == end || *end || errno != 0) + ohshite(_("unable to parse timestamp '%.255s'"), value); + + return timestamp; +} + +/** + * Overly complex function that builds a .deb file. + */ +int +do_build(const char *const *argv) +{ + struct compress_params control_compress_params; + struct tar_pack_options tar_options; + struct dpkg_error err; + struct dpkg_ar *ar; + intmax_t timestamp; + const char *timestamp_str; + const char *dir, *dest; + char *ctrldir; + char *debar; + char *tfbuf; + int gzfd; + + /* Decode our arguments. */ + dir = *argv++; + if (!dir) + badusage(_("--%s needs a argument"), cipaction->olong); + + dest = *argv++; + if (dest && *argv) + badusage(_("--%s takes at most two arguments"), cipaction->olong); + + debar = gen_dest_pathname(dir, dest); + ctrldir = str_fmt("%s/%s", dir, BUILDCONTROLDIR); + + /* Perform some sanity checks on the to-be-build package. */ + if (nocheckflag) { + if (debar == NULL) + ohshit(_("target is directory - cannot skip control file check")); + warning(_("not checking contents of control area")); + info(_("building an unknown package in '%s'."), debar); + } else { + struct pkginfo *pkg; + + pkg = check_control_area(ctrldir, dir); + if (debar == NULL) + debar = gen_dest_pathname_from_pkg(dest, pkg); + info(_("building package '%s' in '%s'."), pkg->set->name, debar); + } + m_output(stdout, _("")); + + timestamp_str = getenv("SOURCE_DATE_EPOCH"); + if (timestamp_str) + timestamp = parse_timestamp(timestamp_str); + else + timestamp = time(NULL); + + /* Now that we have verified everything it is time to actually + * build something. Let's start by making the ar-wrapper. */ + ar = dpkg_ar_create(debar, 0644); + + dpkg_ar_set_mtime(ar, timestamp); + + unsetenv("TAR_OPTIONS"); + + /* Create a temporary file to store the control data in. Immediately + * unlink our temporary file so others can't mess with it. */ + tfbuf = path_make_temp_template("dpkg-deb"); + gzfd = mkstemp(tfbuf); + if (gzfd == -1) + ohshite(_("failed to make temporary file (%s)"), _("control member")); + /* Make sure it's gone, the fd will remain until we close it. */ + if (unlink(tfbuf)) + ohshit(_("failed to unlink temporary file (%s), %s"), _("control member"), + tfbuf); + free(tfbuf); + + /* Select the compressor to use for our control archive. */ + if (opt_uniform_compression) { + control_compress_params = compress_params; + } else { + control_compress_params.type = COMPRESSOR_TYPE_GZIP; + control_compress_params.strategy = COMPRESSOR_STRATEGY_NONE; + control_compress_params.level = -1; + if (!compressor_check_params(&control_compress_params, &err)) + internerr("invalid control member compressor params: %s", err.str); + } + + /* Fork a tar to package the control-section of the package. */ + tar_options.mode = "u+rw,go=rX"; + tar_options.timestamp = timestamp; + tar_options.root_owner_group = true; + tarball_pack(ctrldir, control_treewalk_feed, &tar_options, + &control_compress_params, gzfd); + + free(ctrldir); + + if (lseek(gzfd, 0, SEEK_SET)) + ohshite(_("failed to rewind temporary file (%s)"), _("control member")); + + /* We have our first file for the ar-archive. Write a header for it + * to the package and insert it. */ + if (deb_format.major == 0) { + struct stat controlstab; + char versionbuf[40]; + + if (fstat(gzfd, &controlstab)) + ohshite(_("failed to stat temporary file (%s)"), _("control member")); + sprintf(versionbuf, "%-8s\n%jd\n", OLDARCHIVEVERSION, + (intmax_t)controlstab.st_size); + if (fd_write(ar->fd, versionbuf, strlen(versionbuf)) < 0) + ohshite(_("error writing '%s'"), debar); + if (fd_fd_copy(gzfd, ar->fd, -1, &err) < 0) + ohshit(_("cannot copy '%s' into archive '%s': %s"), _("control member"), + ar->name, err.str); + } else if (deb_format.major == 2) { + const char deb_magic[] = ARCHIVEVERSION "\n"; + char adminmember[16 + 1]; + + sprintf(adminmember, "%s%s", ADMINMEMBER, + compressor_get_extension(control_compress_params.type)); + + dpkg_ar_put_magic(ar); + dpkg_ar_member_put_mem(ar, DEBMAGIC, deb_magic, strlen(deb_magic)); + dpkg_ar_member_put_file(ar, adminmember, gzfd, -1); + } else { + internerr("unknown deb format version %d.%d", deb_format.major, deb_format.minor); + } + + close(gzfd); + + /* Control is done, now we need to archive the data. */ + if (deb_format.major == 0) { + /* In old format, the data member is just concatenated after the + * control member, so we do not need a temporary file and can use + * the compression file descriptor. */ + gzfd = ar->fd; + } else if (deb_format.major == 2) { + /* Start by creating a new temporary file. Immediately unlink the + * temporary file so others can't mess with it. */ + tfbuf = path_make_temp_template("dpkg-deb"); + gzfd = mkstemp(tfbuf); + if (gzfd == -1) + ohshite(_("failed to make temporary file (%s)"), _("data member")); + /* Make sure it's gone, the fd will remain until we close it. */ + if (unlink(tfbuf)) + ohshit(_("failed to unlink temporary file (%s), %s"), _("data member"), + tfbuf); + free(tfbuf); + } else { + internerr("unknown deb format version %d.%d", deb_format.major, deb_format.minor); + } + + /* Pack the directory into a tarball, feeding files from the callback. */ + tar_options.mode = NULL; + tar_options.timestamp = timestamp; + tar_options.root_owner_group = opt_root_owner_group; + tarball_pack(dir, file_treewalk_feed, &tar_options, &compress_params, gzfd); + + /* Okay, we have data.tar as well now, add it to the ar wrapper. */ + if (deb_format.major == 2) { + char datamember[16 + 1]; + + sprintf(datamember, "%s%s", DATAMEMBER, + compressor_get_extension(compress_params.type)); + + if (lseek(gzfd, 0, SEEK_SET)) + ohshite(_("failed to rewind temporary file (%s)"), _("data member")); + + dpkg_ar_member_put_file(ar, datamember, gzfd, -1); + + close(gzfd); + } + if (fsync(ar->fd)) + ohshite(_("unable to sync file '%s'"), ar->name); + + dpkg_ar_close(ar); + + free(debar); + + return 0; +} diff --git a/src/deb/dpkg-deb.h b/src/deb/dpkg-deb.h new file mode 100644 index 0000000..a5e8d39 --- /dev/null +++ b/src/deb/dpkg-deb.h @@ -0,0 +1,87 @@ +/* + * dpkg-deb - construction and deconstruction of *.deb archives + * dpkg-deb.h - external definitions for this program + * + * Copyright © 1994,1995 Ian Jackson + * Copyright © 2006-2012 Guillem Jover + * + * This is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#ifndef DPKG_DEB_H +#define DPKG_DEB_H + +#include + +action_func do_build; +action_func do_contents; +action_func do_control; +action_func do_showinfo; +action_func do_info; +action_func do_field; +action_func do_extract; +action_func do_vextract; +action_func do_raw_extract; +action_func do_ctrltarfile; +action_func do_fsystarfile; + +extern int opt_verbose; +extern int opt_root_owner_group; +extern int opt_uniform_compression; +extern int debugflag, nocheckflag; + +extern struct deb_version deb_format; + +enum dpkg_tar_options { + /** Output the tar file directly, without any processing. */ + DPKG_TAR_PASSTHROUGH = 0, + /** List tar files. */ + DPKG_TAR_LIST = DPKG_BIT(0), + /** Extract tar files. */ + DPKG_TAR_EXTRACT = DPKG_BIT(1), + /** Preserve tar permissions on extract. */ + DPKG_TAR_PERMS = DPKG_BIT(2), + /** Do not set tar mtime on extract. */ + DPKG_TAR_NOMTIME = DPKG_BIT(3), + /** Guarantee extraction into a new directory, abort if it exists. */ + DPKG_TAR_CREATE_DIR = DPKG_BIT(4), +}; + +void extracthalf(const char *debar, const char *dir, + enum dpkg_tar_options taroption, int admininfo); + +extern const char *showformat; +extern struct compress_params compress_params; + +#define ARCHIVEVERSION "2.0" + +#define BUILDCONTROLDIR "DEBIAN" +#define EXTRACTCONTROLDIR BUILDCONTROLDIR + +#define OLDARCHIVEVERSION "0.939000" + +#define OLDDEBDIR "DEBIAN" +#define OLDOLDDEBDIR ".DEBIAN" + +#define DEBMAGIC "debian-binary" +#define ADMINMEMBER "control.tar" +#define DATAMEMBER "data.tar" + +#ifdef PATH_MAX +# define INTERPRETER_MAX PATH_MAX +#else +# define INTERPRETER_MAX 1024 +#endif + +#endif /* DPKG_DEB_H */ diff --git a/src/deb/extract.c b/src/deb/extract.c new file mode 100644 index 0000000..73612a4 --- /dev/null +++ b/src/deb/extract.c @@ -0,0 +1,507 @@ +/* + * dpkg-deb - construction and deconstruction of *.deb archives + * extract.c - extracting archives + * + * Copyright © 1994,1995 Ian Jackson + * Copyright © 2006-2014 Guillem Jover + * + * This is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include +#include + +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "dpkg-deb.h" + +static void +movecontrolfiles(const char *dir, const char *thing) +{ + char *cmd; + pid_t pid; + + cmd = str_fmt("mv %s/%s/* %s/ && rmdir %s/%s", dir, thing, dir, dir, thing); + pid = subproc_fork(); + if (pid == 0) { + command_shell(cmd, _("shell command to move files")); + } + subproc_reap(pid, _("shell command to move files"), 0); + free(cmd); +} + +static void DPKG_ATTR_NORET +read_fail(int rc, const char *filename, const char *what) +{ + if (rc >= 0) + ohshit(_("unexpected end of file in %s in %.255s"),what,filename); + else + ohshite(_("error reading %s from file %.255s"), what, filename); +} + +static ssize_t +read_line(int fd, char *buf, size_t min_size, size_t max_size) +{ + ssize_t line_size = 0; + size_t n = min_size; + + while (line_size < (ssize_t)max_size) { + ssize_t r; + char *nl; + + r = fd_read(fd, buf + line_size, n); + if (r <= 0) + return r; + + nl = memchr(buf + line_size, '\n', r); + line_size += r; + + if (nl != NULL) { + nl[1] = '\0'; + return line_size; + } + + n = 1; + } + + buf[line_size] = '\0'; + return line_size; +} + +void +extracthalf(const char *debar, const char *dir, + enum dpkg_tar_options taroption, int admininfo) +{ + struct dpkg_error err; + const char *errstr; + struct dpkg_ar *ar; + char versionbuf[40]; + struct deb_version version; + off_t ctrllennum, memberlen = 0; + ssize_t r; + int dummy; + pid_t c1=0,c2,c3; + int p1[2], p2[2]; + int p2_out; + char nlc; + int adminmember = -1; + bool header_done; + struct compress_params decompress_params = { + .type = COMPRESSOR_TYPE_GZIP, + .threads_max = compress_params.threads_max, + }; + + ar = dpkg_ar_open(debar); + + r = read_line(ar->fd, versionbuf, strlen(DPKG_AR_MAGIC), sizeof(versionbuf) - 1); + if (r <= 0) + read_fail(r, debar, _("archive magic version number")); + + if (strcmp(versionbuf, DPKG_AR_MAGIC) == 0) { + ctrllennum= 0; + header_done = false; + for (;;) { + struct dpkg_ar_hdr arh; + + r = fd_read(ar->fd, &arh, sizeof(arh)); + if (r != sizeof(arh)) + read_fail(r, debar, _("archive member header")); + + if (dpkg_ar_member_is_illegal(&arh)) + ohshit(_("file '%.250s' is corrupt - bad archive header magic"), debar); + + dpkg_ar_normalize_name(&arh); + + memberlen = dpkg_ar_member_get_size(ar, &arh); + if (!header_done) { + char *infobuf; + + if (strncmp(arh.ar_name, DEBMAGIC, sizeof(arh.ar_name)) != 0) + ohshit(_("file '%.250s' is not a Debian binary archive (try dpkg-split?)"), + debar); + infobuf= m_malloc(memberlen+1); + r = fd_read(ar->fd, infobuf, memberlen + (memberlen & 1)); + if (r != (memberlen + (memberlen & 1))) + read_fail(r, debar, _("archive information header member")); + infobuf[memberlen] = '\0'; + + if (strchr(infobuf, '\n') == NULL) + ohshit(_("archive has no newlines in header")); + errstr = deb_version_parse(&version, infobuf); + if (errstr) + ohshit(_("archive has invalid format version: %s"), errstr); + if (version.major != 2) + ohshit(_("archive is format version %d.%d; get a newer dpkg-deb"), + version.major, version.minor); + + free(infobuf); + + header_done = true; + } else if (arh.ar_name[0] == '_') { + /* Members with ‘_’ are noncritical, and if we don't understand + * them we skip them. */ + if (fd_skip(ar->fd, memberlen + (memberlen & 1), &err) < 0) + ohshit(_("cannot skip archive member from '%s': %s"), ar->name, err.str); + } else { + if (strncmp(arh.ar_name, ADMINMEMBER, strlen(ADMINMEMBER)) == 0) { + const char *extension = arh.ar_name + strlen(ADMINMEMBER); + + adminmember = 1; + decompress_params.type = compressor_find_by_extension(extension); + if (decompress_params.type != COMPRESSOR_TYPE_NONE && + decompress_params.type != COMPRESSOR_TYPE_GZIP && + decompress_params.type != COMPRESSOR_TYPE_ZSTD && + decompress_params.type != COMPRESSOR_TYPE_XZ) + ohshit(_("archive '%s' uses unknown compression for member '%.*s', " + "giving up"), + debar, (int)sizeof(arh.ar_name), arh.ar_name); + + if (ctrllennum != 0) + ohshit(_("archive '%.250s' contains two control members, giving up"), + debar); + ctrllennum = memberlen; + } else { + if (adminmember != 1) + ohshit(_("archive '%s' has premature member '%.*s' before '%s', " + "giving up"), + debar, (int)sizeof(arh.ar_name), arh.ar_name, ADMINMEMBER); + + if (strncmp(arh.ar_name, DATAMEMBER, strlen(DATAMEMBER)) == 0) { + const char *extension = arh.ar_name + strlen(DATAMEMBER); + + adminmember= 0; + decompress_params.type = compressor_find_by_extension(extension); + if (decompress_params.type == COMPRESSOR_TYPE_UNKNOWN) + ohshit(_("archive '%s' uses unknown compression for member '%.*s', " + "giving up"), + debar, (int)sizeof(arh.ar_name), arh.ar_name); + } else { + ohshit(_("archive '%s' has premature member '%.*s' before '%s', " + "giving up"), + debar, (int)sizeof(arh.ar_name), arh.ar_name, DATAMEMBER); + } + } + if (!adminmember != !admininfo) { + if (fd_skip(ar->fd, memberlen + (memberlen & 1), &err) < 0) + ohshit(_("cannot skip archive member from '%s': %s"), ar->name, err.str); + } else { + /* Yes! - found it. */ + break; + } + } + } + + if (admininfo >= 2) { + printf(_(" new Debian package, version %d.%d.\n" + " size %jd bytes: control archive=%jd bytes.\n"), + version.major, version.minor, + (intmax_t)ar->size, (intmax_t)ctrllennum); + m_output(stdout, _("")); + } + } else if (strncmp(versionbuf, "0.93", 4) == 0) { + char ctrllenbuf[40]; + int l; + + l = strlen(versionbuf); + + if (strchr(versionbuf, '\n') == NULL) + ohshit(_("archive has no newlines in header")); + errstr = deb_version_parse(&version, versionbuf); + if (errstr) + ohshit(_("archive has invalid format version: %s"), errstr); + + r = read_line(ar->fd, ctrllenbuf, 1, sizeof(ctrllenbuf) - 1); + if (r <= 0) + read_fail(r, debar, _("archive control member size")); + if (sscanf(ctrllenbuf, "%jd%c%d", (intmax_t *)&ctrllennum, &nlc, &dummy) != 2 || + nlc != '\n') + ohshit(_("archive has malformed control member size '%s'"), ctrllenbuf); + + if (admininfo) { + memberlen = ctrllennum; + } else { + memberlen = ar->size - ctrllennum - strlen(ctrllenbuf) - l; + if (fd_skip(ar->fd, ctrllennum, &err) < 0) + ohshit(_("cannot skip archive control member from '%s': %s"), ar->name, + err.str); + } + + if (admininfo >= 2) { + printf(_(" old Debian package, version %d.%d.\n" + " size %jd bytes: control archive=%jd, main archive=%jd.\n"), + version.major, version.minor, + (intmax_t)ar->size, (intmax_t)ctrllennum, + (intmax_t)(ar->size - ctrllennum - strlen(ctrllenbuf) - l)); + m_output(stdout, _("")); + } + } else { + if (strncmp(versionbuf, "!", 7) == 0) { + notice(_("file looks like it might be an archive which has been\n" + " corrupted by being downloaded in ASCII mode")); + } + + ohshit(_("'%.255s' is not a Debian format archive"), debar); + } + + m_pipe(p1); + c1 = subproc_fork(); + if (!c1) { + close(p1[0]); + if (fd_fd_copy(ar->fd, p1[1], memberlen, &err) < 0) + ohshit(_("cannot copy archive member from '%s' to decompressor pipe: %s"), + ar->name, err.str); + if (close(p1[1])) + ohshite(_("cannot close decompressor pipe")); + exit(0); + } + close(p1[1]); + + if (taroption) { + m_pipe(p2); + p2_out = p2[1]; + } else { + p2_out = 1; + } + + c2 = subproc_fork(); + if (!c2) { + if (taroption) + close(p2[0]); + decompress_filter(&decompress_params, p1[0], p2_out, + _("decompressing archive '%s' (size=%jd) member '%s'"), + ar->name, (intmax_t)ar->size, + admininfo ? ADMINMEMBER : DATAMEMBER); + exit(0); + } + close(p1[0]); + dpkg_ar_close(ar); + + if (taroption) { + close(p2[1]); + + c3 = subproc_fork(); + if (!c3) { + struct command cmd; + + command_init(&cmd, TAR, "tar"); + command_add_arg(&cmd, "tar"); + + if ((taroption & DPKG_TAR_LIST) && (taroption & DPKG_TAR_EXTRACT)) + command_add_arg(&cmd, "-xv"); + else if (taroption & DPKG_TAR_EXTRACT) + command_add_arg(&cmd, "-x"); + else if (taroption & DPKG_TAR_LIST) + command_add_arg(&cmd, "-tv"); + else + internerr("unknown or missing tar action '%d'", taroption); + + if (taroption & DPKG_TAR_PERMS) + command_add_arg(&cmd, "-p"); + if (taroption & DPKG_TAR_NOMTIME) + command_add_arg(&cmd, "-m"); + + command_add_arg(&cmd, "-f"); + command_add_arg(&cmd, "-"); + command_add_arg(&cmd, "--warning=no-timestamp"); + + m_dup2(p2[0],0); + close(p2[0]); + + unsetenv("TAR_OPTIONS"); + + if (dir) { + if (mkdir(dir, 0777) != 0) { + if (errno != EEXIST) + ohshite(_("failed to create directory")); + + if (taroption & DPKG_TAR_CREATE_DIR) + ohshite(_("unexpected pre-existing pathname %s"), dir); + } + if (chdir(dir) != 0) + ohshite(_("failed to chdir to directory")); + } + + command_exec(&cmd); + } + close(p2[0]); + subproc_reap(c3, "tar", 0); + } + + subproc_reap(c2, _(""), SUBPROC_NOPIPE); + if (c1 != -1) + subproc_reap(c1, _("paste"), 0); + if (version.major == 0 && admininfo) { + /* Handle the version as a float to preserve the behaviour of old code, + * because even if the format is defined to be padded by 0's that might + * not have been always true for really ancient versions... */ + while (version.minor && (version.minor % 10) == 0) + version.minor /= 10; + + if (version.minor == 931) + movecontrolfiles(dir, OLDOLDDEBDIR); + else if (version.minor == 932 || version.minor == 933) + movecontrolfiles(dir, OLDDEBDIR); + } +} + +int +do_ctrltarfile(const char *const *argv) +{ + const char *debar; + + debar = *argv++; + if (debar == NULL) + badusage(_("--%s needs a .deb filename argument"), cipaction->olong); + if (*argv) + badusage(_("--%s takes only one argument (.deb filename)"), + cipaction->olong); + + extracthalf(debar, NULL, DPKG_TAR_PASSTHROUGH, 1); + + return 0; +} + +int +do_fsystarfile(const char *const *argv) +{ + const char *debar; + + debar = *argv++; + if (debar == NULL) + badusage(_("--%s needs a .deb filename argument"),cipaction->olong); + if (*argv) + badusage(_("--%s takes only one argument (.deb filename)"),cipaction->olong); + extracthalf(debar, NULL, DPKG_TAR_PASSTHROUGH, 0); + + return 0; +} + +int +do_control(const char *const *argv) +{ + const char *debar, *dir; + + debar = *argv++; + if (debar == NULL) + badusage(_("--%s needs a .deb filename argument"), cipaction->olong); + + dir = *argv++; + if (dir == NULL) + dir = EXTRACTCONTROLDIR; + else if (*argv) + badusage(_("--%s takes at most two arguments (.deb and directory)"), + cipaction->olong); + + extracthalf(debar, dir, DPKG_TAR_EXTRACT, 1); + + return 0; +} + +int +do_extract(const char *const *argv) +{ + const char *debar, *dir; + enum dpkg_tar_options options = DPKG_TAR_EXTRACT | DPKG_TAR_PERMS; + + if (opt_verbose) + options |= DPKG_TAR_LIST; + + debar = *argv++; + if (debar == NULL) + badusage(_("--%s needs .deb filename and directory arguments"), + cipaction->olong); + + dir = *argv++; + if (dir == NULL) + badusage(_("--%s needs a target directory.\n" + "Perhaps you should be using dpkg --install ?"), + cipaction->olong); + else if (*argv) + badusage(_("--%s takes at most two arguments (.deb and directory)"), + cipaction->olong); + + extracthalf(debar, dir, options, 0); + + return 0; +} + +int +do_vextract(const char *const *argv) +{ + /* XXX: Backward compatibility. */ + opt_verbose = 1; + return do_extract(argv); +} + +int +do_raw_extract(const char *const *argv) +{ + enum dpkg_tar_options data_options; + const char *debar, *dir; + char *control_dir; + + debar = *argv++; + if (debar == NULL) + badusage(_("--%s needs .deb filename and directory arguments"), + cipaction->olong); + else if (strcmp(debar, "-") == 0) + badusage(_("--%s does not support (yet) reading the .deb from standard input"), + cipaction->olong); + + dir = *argv++; + if (dir == NULL) + badusage(_("--%s needs a target directory.\n" + "Perhaps you should be using dpkg --install ?"), + cipaction->olong); + else if (*argv) + badusage(_("--%s takes at most two arguments (.deb and directory)"), + cipaction->olong); + + control_dir = str_fmt("%s/%s", dir, EXTRACTCONTROLDIR); + + data_options = DPKG_TAR_EXTRACT | DPKG_TAR_PERMS; + if (opt_verbose) + data_options |= DPKG_TAR_LIST; + + extracthalf(debar, dir, data_options, 0); + extracthalf(debar, control_dir, DPKG_TAR_EXTRACT | DPKG_TAR_CREATE_DIR, 1); + + free(control_dir); + + return 0; +} diff --git a/src/deb/info.c b/src/deb/info.c new file mode 100644 index 0000000..794eeb0 --- /dev/null +++ b/src/deb/info.c @@ -0,0 +1,305 @@ +/* + * dpkg-deb - construction and deconstruction of *.deb archives + * info.c - providing information + * + * Copyright © 1994,1995 Ian Jackson + * Copyright © 2001 Wichert Akkerman + * Copyright © 2007-2015 Guillem Jover + * + * This is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include +#include + +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "dpkg-deb.h" + +static void cu_info_prepare(int argc, void **argv) { + char *dir; + + dir = argv[0]; + path_remove_tree(dir); + free(dir); +} + +static void info_prepare(const char *const **argvp, + const char **debarp, + const char **dirp, + int admininfo) { + char *dbuf; + + *debarp= *(*argvp)++; + if (!*debarp) badusage(_("--%s needs a .deb filename argument"),cipaction->olong); + + dbuf = mkdtemp(path_make_temp_template("dpkg-deb")); + if (!dbuf) + ohshite(_("unable to create temporary directory")); + *dirp = dbuf; + + push_cleanup(cu_info_prepare, -1, 1, (void *)dbuf); + extracthalf(*debarp, dbuf, DPKG_TAR_EXTRACT | DPKG_TAR_NOMTIME, admininfo); +} + +static int ilist_select(const struct dirent *de) { + return strcmp(de->d_name,".") && strcmp(de->d_name,".."); +} + +static void +info_spew(const char *debar, const char *dir, const char *const *argv) +{ + struct dpkg_error err; + const char *component; + struct varbuf controlfile = VARBUF_INIT; + int fd; + int re= 0; + + while ((component = *argv++) != NULL) { + varbuf_reset(&controlfile); + varbuf_printf(&controlfile, "%s/%s", dir, component); + + fd = open(controlfile.buf, O_RDONLY); + if (fd >= 0) { + if (fd_fd_copy(fd, 1, -1, &err) < 0) + ohshit(_("cannot extract control file '%s' from '%s': %s"), + controlfile.buf, debar, err.str); + close(fd); + } else if (errno == ENOENT) { + notice(_("'%.255s' contains no control component '%.255s'"), + debar, component); + re++; + } else { + ohshite(_("open component '%.255s' (in %.255s) failed in an unexpected way"), + component, dir); + } + } + varbuf_destroy(&controlfile); + + if (re > 0) + ohshit(P_("%d requested control component is missing", + "%d requested control components are missing", re), re); +} + +static void +info_list(const char *debar, const char *dir) +{ + char interpreter[INTERPRETER_MAX+1], *p; + int il, lines; + struct varbuf controlfile = VARBUF_INIT; + struct dirent **cdlist, *cdep; + int cdn, n; + FILE *cc; + struct stat stab; + int c; + + cdn = scandir(dir, &cdlist, &ilist_select, alphasort); + if (cdn == -1) + ohshite(_("cannot scan directory '%.255s'"), dir); + + for (n = 0; n < cdn; n++) { + cdep = cdlist[n]; + + varbuf_reset(&controlfile); + varbuf_printf(&controlfile, "%s/%s", dir, cdep->d_name); + + if (stat(controlfile.buf, &stab)) + ohshite(_("cannot stat '%.255s' (in '%.255s')"), cdep->d_name, dir); + if (S_ISREG(stab.st_mode)) { + cc = fopen(controlfile.buf, "r"); + if (!cc) + ohshite(_("cannot open '%.255s' (in '%.255s')"), cdep->d_name, dir); + lines = 0; + interpreter[0] = '\0'; + if (getc(cc) == '#') { + if (getc(cc) == '!') { + while ((c= getc(cc))== ' '); + p=interpreter; *p++='#'; *p++='!'; il=2; + while (il < INTERPRETER_MAX && !c_isspace(c) && c != EOF) { + *p++= c; il++; c= getc(cc); + } + *p = '\0'; + if (c=='\n') lines++; + } + } + while ((c= getc(cc))!= EOF) { if (c == '\n') lines++; } + if (ferror(cc)) + ohshite(_("failed to read '%.255s' (in '%.255s')"), cdep->d_name, dir); + fclose(cc); + printf(_(" %7jd bytes, %5d lines %c %-20.127s %.127s\n"), + (intmax_t)stab.st_size, lines, + (S_IXUSR & stab.st_mode) ? '*' : ' ', + cdep->d_name, interpreter); + } else { + printf(_(" not a plain file %.255s\n"), cdep->d_name); + } + free(cdep); + } + free(cdlist); + + varbuf_reset(&controlfile); + varbuf_printf(&controlfile, "%s/%s", dir, CONTROLFILE); + cc = fopen(controlfile.buf, "r"); + if (!cc) { + if (errno != ENOENT) + ohshite(_("failed to read '%.255s' (in '%.255s')"), CONTROLFILE, dir); + warning(_("no 'control' file in control archive!")); + } else { + lines= 1; + while ((c= getc(cc))!= EOF) { + if (lines) + putc(' ', stdout); + putc(c, stdout); + lines= c=='\n'; + } + if (!lines) + putc('\n', stdout); + + if (ferror(cc)) + ohshite(_("failed to read '%.255s' (in '%.255s')"), CONTROLFILE, dir); + fclose(cc); + } + + m_output(stdout, _("")); + varbuf_destroy(&controlfile); +} + +static void +info_field(const char *debar, const char *dir, const char *const *fields, + enum fwriteflags fieldflags) +{ + char *controlfile; + struct varbuf str = VARBUF_INIT; + struct pkginfo *pkg; + int i; + + controlfile = str_fmt("%s/%s", dir, CONTROLFILE); + parsedb(controlfile, pdb_parse_binary | pdb_ignore_archives, &pkg); + free(controlfile); + + for (i = 0; fields[i]; i++) { + const struct fieldinfo *field; + const struct arbitraryfield *arbfield; + + varbuf_reset(&str); + field = find_field_info(fieldinfos, fields[i]); + if (field) { + field->wcall(&str, pkg, &pkg->available, fieldflags, field); + } else { + arbfield = find_arbfield_info(pkg->available.arbs, fields[i]); + if (arbfield) + varbuf_add_arbfield(&str, arbfield, fieldflags); + } + varbuf_end_str(&str); + + if (fieldflags & fw_printheader) + printf("%s", str.buf); + else + printf("%s\n", str.buf); + } + + m_output(stdout, _("")); + + varbuf_destroy(&str); +} + +int +do_showinfo(const char *const *argv) +{ + const char *debar, *dir; + char *controlfile; + struct dpkg_error err; + struct pkginfo *pkg; + struct pkg_format_node *fmt; + + fmt = pkg_format_parse(showformat, &err); + if (!fmt) + ohshit(_("error in show format: %s"), err.str); + + info_prepare(&argv, &debar, &dir, 1); + + controlfile = str_fmt("%s/%s", dir, CONTROLFILE); + parsedb(controlfile, pdb_parse_binary | pdb_ignore_archives, &pkg); + pkg_format_show(fmt, pkg, &pkg->available); + pkg_format_free(fmt); + free(controlfile); + + return 0; +} + +int +do_info(const char *const *argv) +{ + const char *debar, *dir; + + if (*argv && argv[1]) { + info_prepare(&argv, &debar, &dir, 1); + info_spew(debar, dir, argv); + } else { + info_prepare(&argv, &debar, &dir, 2); + info_list(debar, dir); + } + + return 0; +} + +int +do_field(const char *const *argv) +{ + const char *debar, *dir; + + info_prepare(&argv, &debar, &dir, 1); + if (*argv) { + info_field(debar, dir, argv, argv[1] != NULL ? fw_printheader : 0); + } else { + static const char *const controlonly[] = { CONTROLFILE, NULL }; + info_spew(debar, dir, controlonly); + } + + return 0; +} + +int +do_contents(const char *const *argv) +{ + const char *debar = *argv++; + + if (debar == NULL || *argv) + badusage(_("--%s takes exactly one argument"), cipaction->olong); + extracthalf(debar, NULL, DPKG_TAR_LIST, 0); + + return 0; +} diff --git a/src/deb/main.c b/src/deb/main.c new file mode 100644 index 0000000..4a16738 --- /dev/null +++ b/src/deb/main.c @@ -0,0 +1,311 @@ +/* + * dpkg-deb - construction and deconstruction of *.deb archives + * main.c - main program + * + * Copyright © 1994,1995 Ian Jackson + * Copyright © 2006-2014 Guillem Jover + * + * This is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include +#include + +#include +#include + +#include +#if HAVE_LOCALE_H +#include +#endif +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include + +#include "dpkg-deb.h" + +const char *showformat = "${Package}\t${Version}\n"; + +static int +printversion(const char *const *argv) +{ + printf(_("Debian '%s' package archive backend version %s.\n"), + BACKEND, PACKAGE_RELEASE); + printf(_( +"This is free software; see the GNU General Public License version 2 or\n" +"later for copying conditions. There is NO warranty.\n")); + + m_output(stdout, _("")); + + return 0; +} + +static int +usage(const char *const *argv) +{ + printf(_( +"Usage: %s [