Package: release.debian.org Severity: normal Tags: jessie User: [email protected] Usertags: pu
Hi! Here's a proposed dpkg 1.17.27, with cherry picked fixes from master (already in unstable). These include fixes for regressions, memory leaks, portability, interaction with tools such as GNU tar or the system shell, install-info transition, and a sync of the architectures supported (in case some of these end up accepted in the archive). The change for Config-Version should be safe, as at worst it will have no effect, otherwise packages relying on the correct behavior will start to work now, it will also make upgrades easier, for example for systemd, which I'm aware suffered from this problem. The «git log» fix is not yet in master though, but it should also be safe, otherwise the build would simply fail. And I've just realized it's not documented in debian/changelog, it will be in the ChangeLog, but I could add it to debian/changelog too. The changes have passed all unit tests which are part of the build, and all functional test in the dpkg-tests git repo. Attached a diff with translation updates filtered. Thanks, Guillem
diff --git a/Makefile.am b/Makefile.am index aa13270..c9f63d3 100644 --- a/Makefile.am +++ b/Makefile.am @@ -172,6 +172,7 @@ dist-hook: exit 1 ; \ fi ; \ done ; \ + XDG_CONFIG_HOME= HOME= \ git log -C --stat 1.15.0.. >$(distdir)/ChangeLog; \ fi diff --git a/check.am b/check.am index 458214d..5e0d3cf 100644 --- a/check.am +++ b/check.am @@ -30,6 +30,7 @@ check-local: $(test_data) $(test_programs) $(test_scripts) $(TEST_ENV_VARS) \ srcdir=$(srcdir) builddir=$(builddir) \ PERL_DL_NONLAZY=1 \ + PERL5LIB=$(abs_top_srcdir)/scripts:$(abs_top_srcdir)/dselect/methods \ PERL5OPT=$(TEST_COVERAGE) \ $(PERL) -MTAP::Harness -e $(TEST_RUNNER) \ $(addprefix $(builddir)/,$(test_programs)) \ diff --git a/cputable b/cputable index b8b2da2..b376aa0 100644 --- a/cputable +++ b/cputable @@ -29,6 +29,7 @@ mips mips mips(eb)? 32 big mipsel mipsel mipsel 32 little mips64 mips64 mips64 64 big mips64el mips64el mips64el 64 little +nios2 nios2 nios2 32 little or1k or1k or1k 32 big powerpc powerpc (powerpc|ppc) 32 big powerpcel powerpcle powerpcle 32 little diff --git a/debian/changelog b/debian/changelog index 8b2a4d0..eca2d78 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,45 @@ +dpkg (1.17.27) jessie; urgency=medium + + [ Guillem Jover ] + * Add more Conflicts for removed packages expecting dpkg to ship + install-info. Namely ada-mode and octave2.1-info. Closes: #783657 + Thanks to Andreas Beckmann <[email protected]>. + * Remove trailing space before handling blank line dot-separator in + Dpkg::Control::HashCore. Regression introduced in dpkg 1.17.25. + Reported by Jakub Wilk <[email protected]>. Closes: #789580 + * Only use the SHELL environment variable for interactive shells. + Closes: #788819 + * Move tar option --no-recursion before -T in dpkg-deb. With tar > 1.28 the + --no-recursion option is now positional, and needs to be passed before + the -T option, otherwise the tarball will end up with duplicated entries. + Thanks to Richard Purdie <[email protected]>. + Closes: #807940 + * Initialize Config-Version also for packages previously in triggers-pending + state, otherwise we end up not passing the previously configured version + to «postinst configure», which might consider this a first install instead + of an upgrade. Closes: #801156 + * Fix memory leak in dpkg infodb format upgrade logic. + * Fix physical file offset comparison in dpkg. Closes: #808912 + Thanks to Yuri Gribov <[email protected]>. + * Add kfreebsd-armhf support to ostable and triplettable. Closes: #796283 + Thanks to Steven Chamberlain <[email protected]>. + * Add NIOS2 support to cputable. Thanks to Marek Vasut <[email protected]>. + * Build system: + - Set PERL5LIB globally for the test suite to the local modules directory, + to avoid using the system modules. Regression introduced in dpkg 1.17.8. + Reported by Jérémy Bobbio <[email protected]>. Closes: #801329 + - When sys_siglist is defined in the system, try to use NSIG as we cannot + compute the array size with sizeof(). If NSIG is missing fallback to 32 + items. Prompted by Igor Pashev <[email protected]>. + + [ Updated scripts translations ] + * German (Helge Kreutzmann). (Various fixes) + + [ Updated manpages translations ] + * German (Helge Kreutzmann). (Various fixes) + + -- Guillem Jover <[email protected]> Sun, 20 Mar 2016 11:40:28 +0100 + dpkg (1.17.26) jessie-security; urgency=high [ Guillem Jover ] diff --git a/debian/control b/debian/control index ade9839..97f06d2 100644 --- a/debian/control +++ b/debian/control @@ -80,11 +80,13 @@ Conflicts: gcc-4.2-doc (<< 4.2.4.nf1-4~), gcj-4.2-doc (<< 4.2.4.nf1-4~), gfortran-4.2-doc (<< 4.2.4.nf1-4~), gnat-4.2-doc (<< 4.2.4.nf1-4~), # These packages have been removed after lenny: + ada-mode (<< 3.6-3+rm), ada-reference-manual (<< 20021112web-4~), asn1-mode (<< 2.7-7~), bogosort (<< 0.4.2-3~), cl-yacc (<< 0.3-3~), libgtk1.2-doc (<< 1.2.10-19~), libnettle-dev (<< 2~), liborbit-dev (<< 0.5.17-12~), libreadline5-dev (<< 5.2-8~), librep-doc (<< 0.90~), mmucl (<< 1.5.2-3~), nxml-mode (<< 20041004-9~), + octave2.1-info (<< 1:2.1.73-19+rm), octave3.0-info (<< 1:3.0.5-7+rm), serveez-doc (<< 0.1.5-3~), slat (<< 2.0-6~), texlive-base-bin-doc (<< 2007.dfsg.2-9~), ttcn-el (<< 0.6.9-2~), diff --git a/dpkg-deb/build.c b/dpkg-deb/build.c index 442298d..61511de 100644 --- a/dpkg-deb/build.c +++ b/dpkg-deb/build.c @@ -560,7 +560,7 @@ do_build(const char *const *argv) if (chdir(dir)) ohshite(_("failed to chdir to `%.255s'"), dir); execlp(TAR, "tar", "-cf", "-", "--format=gnu", "--null", "--no-unquote", - "-T", "-", "--no-recursion", NULL); + "--no-recursion", "-T", "-", NULL); ohshite(_("unable to execute %s (%s)"), "tar -cf", TAR); } close(p1[0]); diff --git a/lib/compat/strsignal.c b/lib/compat/strsignal.c index 265feb4..a5d6d53 100644 --- a/lib/compat/strsignal.c +++ b/lib/compat/strsignal.c @@ -54,7 +54,12 @@ const char *const sys_siglist[] = { "SIGTTIN", /* 21 */ "SIGTTOU", /* 22 */ }; +# define COMPAT_NSIGLIST (int)(sizeof(sys_siglist) / sizeof(sys_siglist[0])) #else +# ifndef NSIG +# define NSIG 32 +# endif +# define COMPAT_NSIGLIST NSIG extern const char *const sys_siglist[]; #endif @@ -63,7 +68,7 @@ strsignal(int s) { static char buf[100]; - if (s > 0 && s < (int)(sizeof(sys_siglist) / sizeof(sys_siglist[0]))) + if (s > 0 && s < COMPAT_NSIGLIST) return sys_siglist[s]; sprintf(buf, _("Unknown signal %d"), s); diff --git a/lib/dpkg/command.c b/lib/dpkg/command.c index d378ad2..b6a79d7 100644 --- a/lib/dpkg/command.c +++ b/lib/dpkg/command.c @@ -216,14 +216,16 @@ command_shell(const char *cmd, const char *name) const char *shell; const char *mode; - shell = getenv("SHELL"); - if (str_is_unset(shell)) - shell = DEFAULTSHELL; - - if (cmd == NULL) + if (cmd == NULL) { mode = "-i"; - else + shell = getenv("SHELL"); + } else { mode = "-c"; + shell = NULL; + } + + if (str_is_unset(shell)) + shell = DEFAULTSHELL; execlp(shell, shell, mode, cmd, NULL); ohshite(_("unable to execute %s (%s)"), name, cmd); diff --git a/lib/dpkg/parse.c b/lib/dpkg/parse.c index d70d3f0..1e69b2f 100644 --- a/lib/dpkg/parse.c +++ b/lib/dpkg/parse.c @@ -225,19 +225,24 @@ pkg_parse_verify(struct parsedb_state *ps, if (!dop->arch) dop->arch = pkgbin->arch; - /* Check the Config-Version information: - * If there is a Config-Version it is definitely to be used, but - * there shouldn't be one if the package is ‘installed’ (in which case - * the Version and/or Revision will be copied) or if the package is - * ‘not-installed’ (in which case there is no Config-Version). */ + /* + * Check the Config-Version information: + * + * If there is a Config-Version it is definitely to be used, but there + * should not be one if the package is ‘installed’ or ‘triggers-pending’ + * (in which case the Version will be copied) or if the package is + * ‘not-installed’ (in which case there is no Config-Version). + */ if (!(ps->flags & pdb_recordavailable)) { if (pkg->configversion.version) { if (pkg->status == PKG_STAT_INSTALLED || - pkg->status == PKG_STAT_NOTINSTALLED) + pkg->status == PKG_STAT_NOTINSTALLED || + pkg->status == PKG_STAT_TRIGGERSPENDING) parse_error(ps, _("Config-Version for package with inappropriate Status")); } else { - if (pkg->status == PKG_STAT_INSTALLED) + if (pkg->status == PKG_STAT_INSTALLED || + pkg->status == PKG_STAT_TRIGGERSPENDING) pkg->configversion = pkgbin->version; } } diff --git a/man/dpkg.1 b/man/dpkg.1 index 4e9f7a3..fb6c43e 100644 --- a/man/dpkg.1 +++ b/man/dpkg.1 @@ -694,8 +694,9 @@ Sent just before a processing stage starts. \fIstage\fR is one of .TP \fB\-\-status\-logger\fR=\fIcommand\fR Send machine-readable package status and progress information to the -shell \fIcommand\fR's standard input. This option can be specified -multiple times. The output format used is the same as in \fB\-\-status\-fd. +shell \fIcommand\fR's standard input, to be run via \*(lqsh \-c\*(rq. +This option can be specified multiple times. +The output format used is the same as in \fB\-\-status\-fd. .RE .TP \fB\-\-log=\fP\fIfilename\fP @@ -739,7 +740,7 @@ temporary files and directories. The program \fBdpkg\fP will execute when displaying the conffiles. .TP .B SHELL -The program \fBdpkg\fP will execute when starting a new shell. +The program \fBdpkg\fP will execute when starting a new interactive shell. .TP .B COLUMNS Sets the number of columns \fBdpkg\fP should use when displaying formatted diff --git a/ostable b/ostable index 3bb6819..10e0d3a 100644 --- a/ostable +++ b/ostable @@ -23,6 +23,7 @@ gnuabi64-linux linux-gnuabi64 linux[^-]*-gnuabi64 gnuspe-linux linux-gnuspe linux[^-]*-gnuspe gnux32-linux linux-gnux32 linux[^-]*-gnux32 gnu-linux linux-gnu linux[^-]*(-gnu.*)? +gnueabihf-kfreebsd kfreebsd-gnueabihf kfreebsd[^-]*-gnueabihf gnu-kfreebsd kfreebsd-gnu kfreebsd[^-]*(-gnu.*)? gnu-knetbsd knetbsd-gnu knetbsd[^-]*(-gnu.*)? gnu-kopensolaris kopensolaris-gnu kopensolaris[^-]*(-gnu.*)? diff --git a/scripts/Dpkg/Control/HashCore.pm b/scripts/Dpkg/Control/HashCore.pm index d9e0373..6ed6b40 100644 --- a/scripts/Dpkg/Control/HashCore.pm +++ b/scripts/Dpkg/Control/HashCore.pm @@ -219,10 +219,10 @@ sub parse { unless (defined($cf)) { $self->parse_error($desc, _g('continued value line not in field')); } + $line =~ s/\s*$//; if ($line =~ /^\.+$/) { $line = substr $line, 1; } - $line =~ s/\s*$//; $self->{$cf} .= "\n$line"; } elsif (m/^-----BEGIN PGP SIGNED MESSAGE-----[\r\t ]*$/) { $expect_pgp_sig = 1; diff --git a/scripts/t/Dpkg_Control.t b/scripts/t/Dpkg_Control.t index 1507678..07a3fb8 100644 --- a/scripts/t/Dpkg_Control.t +++ b/scripts/t/Dpkg_Control.t @@ -52,6 +52,7 @@ Long-Field: line1 line 2 line 2 line 2 . line 3 line 3 line 3 + . .. line 4 Empty-Field: @@ -82,6 +83,7 @@ is($src->{'long-field'}, line 2 line 2 line 2 line 3 line 3 line 3 + . line 4', 'Get multi-line field'); is($src->{'Empty-field'}, '', 'Get empty field'); diff --git a/scripts/t/Dpkg_Control/control-1 b/scripts/t/Dpkg_Control/control-1 index afe618e..0c70533 100644 --- a/scripts/t/Dpkg_Control/control-1 +++ b/scripts/t/Dpkg_Control/control-1 @@ -7,6 +7,7 @@ long-field: line1 line 2 line 2 line 2 . line 3 line 3 line 3 + . .. line 4 empty-field: diff --git a/src/filesdb.c b/src/filesdb.c index 759fe9a..47d77a4 100644 --- a/src/filesdb.c +++ b/src/filesdb.c @@ -312,8 +312,10 @@ pkg_sorter_by_listfile_phys_offs(const void *a, const void *b) * INT_MAX. */ if (pa->clientdata->listfile_phys_offs < pb->clientdata->listfile_phys_offs) return -1; - else + else if (pa->clientdata->listfile_phys_offs > pb->clientdata->listfile_phys_offs) return 1; + else + return 0; } static void diff --git a/src/infodb-upgrade.c b/src/infodb-upgrade.c index 68f9431..2360c9b 100644 --- a/src/infodb-upgrade.c +++ b/src/infodb-upgrade.c @@ -149,6 +149,7 @@ pkg_infodb_link_multiarch_files(void) } pop_cleanup(ehflag_normaltidy); /* closedir */ + varbuf_destroy(&pkgname); varbuf_destroy(&newname); varbuf_destroy(&oldname); } diff --git a/triplettable b/triplettable index 7257744..568a6b9 100644 --- a/triplettable +++ b/triplettable @@ -16,6 +16,7 @@ gnuabi64-linux-mips64 mips64 gnuspe-linux-powerpc powerpcspe gnux32-linux-amd64 x32 gnu-linux-<cpu> <cpu> +gnueabihf-kfreebsd-arm kfreebsd-armhf gnu-kfreebsd-<cpu> kfreebsd-<cpu> gnu-knetbsd-<cpu> knetbsd-<cpu> gnu-kopensolaris-<cpu> kopensolaris-<cpu>

