[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#986835: [pre-approval] unblock: dpkg/1.20.8



Package: release.debian.org
Severity: normal
User: release.debian.org@packages.debian.org
Usertags: unblock

This is a pre-approval unblock request for dpkg.

[ Reason ]

This includes an RC bug fix, and an old regression affecting apt
with auto-deconfiguring during upgrades for Protected/Essential
packages, a regression in the perl code ignoring exceptions, and a
couple of recent regressions in start-stop-daemon and dpkg-realpath.
Then a few fixes to the test suite, affecting mostly CPAN.

[ Impact ]

The ones affecting the code would not be good to let as is. The test
suite ones even though not affecting Debian directly should be safe,
otherwise they'd not pass. :)

[ Tests ]

The unit tests and the recently merged functional test suite all pass.
Not all the above are covered by these, but they have been tested
manually otherwise. I have tests for the exception trapping, but it
was too invasive so I've queued it for 1.21.x instead.

[ Risks ]

The changes either affect new features (s-s-d), new features breaking
other parts of the code (dpkg-realpath), or behavior that would
currently fail anyway (auto-deconfigure for Protected/Essential),
and that apt will need to workaround for now via --force options.

There should be no behavior changes during source package building,
except for restoring some error failures that were currently being
partially ignored (for dpkg-source, but then trapped by dpkg-buildpackage
f.ex.).

All changes are fairly minimal.

[ Checklist ]

  [~] all changes are documented in the d/changelog
      (except a silent indentation fix in one of the man pages,
      covered in the ChangeLog file)
  [√] I reviewed all changes and I approve them
  [~] attach debdiff against the package in testing
      (debdiff against 1.20.7 which is what's in git's master, instead
       of 1.20.7.1 which was a source rebuild due to a botched tarball
       and lived in the sid branch)

[ Other info ]

The other remaining RC I need to downgrade, as it looks like a wishlist
now, if I've understood the reopen reason correctly.

The debdiff includes lots of noise due to the po and generated translated
man pages, that's why I've included the relevant split patches  excluding
translation updates. And the git branch is at:

  https://git.hadrons.org/cgit/debian/dpkg/dpkg.git/log/?h=next/1.20.8

unblock dpkg/1.20.8

Thanks,
Guillem

Attachment: dpkg-1.20.7--1.20.8.debdiff.xz
Description: application/xz

From 09b0b3ab99ba197a4fc5abf9363de32b472d9b61 Mon Sep 17 00:00:00 2001
From: Guillem Jover <guillem@debian.org>
Date: Sat, 16 Jan 2021 13:34:34 +0100
Subject: [PATCH 01/15] Test::Dpkg: Fix test data path fetching on CPAN
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

There is no guarantee that the perl used will have «.» in INC, so we
need to add an explicit «./» prefix, which we were already doing for
the autotools case. Unify the handling for autotools and CPAN, which
should fix the latter.
---
 scripts/Test/Dpkg.pm | 10 ++++------
 1 file changed, 4 insertions(+), 6 deletions(-)

diff --git a/scripts/Test/Dpkg.pm b/scripts/Test/Dpkg.pm
index 937f333ba..a30168975 100644
--- a/scripts/Test/Dpkg.pm
+++ b/scripts/Test/Dpkg.pm
@@ -79,12 +79,10 @@ sub test_get_data_path
     my $path = shift;
 
     if (defined $path) {
-        if ($test_mode eq 'cpan') {
-            return $path;
-        } else {
-            my $srcdir = $ENV{srcdir} || '.';
-            return "$srcdir/$path";
-        }
+        my $srcdir;
+        $srcdir = $ENV{srcdir} if $test_mode ne 'cpan';
+        $srcdir ||= '.';
+        return "$srcdir/$path";
     } else {
         return _test_get_caller_dir();
     }
-- 
2.31.0

From 1974f18a184a7425ffa75b70f0d24852ef61ecd1 Mon Sep 17 00:00:00 2001
From: Guillem Jover <guillem@debian.org>
Date: Sat, 16 Jan 2021 13:25:14 +0100
Subject: [PATCH 02/15] test: Set PERL in the perl test suite

There is no guarantee that the PERL environment variable will contain
the perl executable path or name. When running the test suite from the
autotools build system we always set the PERL environment variable,
but on CPAN we were not doing that, and some CPAN testers have PERL
set to its version.
---
 scripts/Build.PL.in | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/scripts/Build.PL.in b/scripts/Build.PL.in
index 9846ffc91..c6be8c36a 100644
--- a/scripts/Build.PL.in
+++ b/scripts/Build.PL.in
@@ -17,6 +17,7 @@ if (-e 'Build.PL.in') {
 my $class = Module::Build->subclass(
     class => 'Module::Build::Dpkg',
     code => q{
+        require Config;
         require IPC::Cmd;
 
         sub find_command {
@@ -70,6 +71,7 @@ my $class = Module::Build->subclass(
 
             local $ENV{LANG} = 'C';
             local $ENV{LC_ALL} = 'C';
+            local $ENV{PERL} = $Config{perlpath};
             local $ENV{DPKG_TEST_MODE} = 'cpan';
             local $ENV{DPKG_DATADIR} = 'data';
             local $ENV{DPKG_ORIGINS_DIR} = 't/origins';
-- 
2.31.0

From 3844c38302396772f78a670bb8b4f678437600d5 Mon Sep 17 00:00:00 2001
From: Guillem Jover <guillem@debian.org>
Date: Sat, 16 Jan 2021 13:37:28 +0100
Subject: [PATCH 03/15] test: Use gunzip instead of zcat and assume it might
 not be present

On Solaris CPAN testing systems, zcat(1) is an alias for the traditional
uncompress(1), so it does not work as gunzip(1). Use the latter
explicitly to avoid portability issues, and do not assume it will always
be present, when we will skip the unit test.
---
 scripts/t/Dpkg_Compression.t | 13 ++++++++++---
 1 file changed, 10 insertions(+), 3 deletions(-)

diff --git a/scripts/t/Dpkg_Compression.t b/scripts/t/Dpkg_Compression.t
index 3babe5fca..c0db331a7 100644
--- a/scripts/t/Dpkg_Compression.t
+++ b/scripts/t/Dpkg_Compression.t
@@ -19,12 +19,15 @@ use warnings;
 use Test::More tests => 13;
 use Test::Dpkg qw(:paths);
 
+use IPC::Cmd qw(can_run);
+
 use_ok('Dpkg::Compression');
 use_ok('Dpkg::Compression::FileHandle');
 
 my $tmpdir = test_get_temp_path();
 my @lines = ("One\n", "Two\n", "Three\n");
 my $fh;
+my $have_gunzip = can_run('gunzip');
 
 sub test_write {
     my ($filename, $check_result) = @_;
@@ -60,7 +63,7 @@ sub check_uncompressed {
 
 sub check_compressed {
     my ($filename, $method) = @_;
-    open my $read_fh, '-|', 'zcat', "$tmpdir/myfile.gz"
+    open my $read_fh, '-|', 'gunzip', '-c', "$tmpdir/myfile.gz"
         or die 'cannot fork zcat';
     my @read = <$read_fh>;
     close $read_fh or die 'cannot close';
@@ -98,8 +101,12 @@ is(compression_get_default_level(), $old_level, 'reset default compression level
 # Test write on uncompressed file
 test_write("$tmpdir/myfile", \&check_uncompressed);
 
-# Test write on compressed file
-test_write("$tmpdir/myfile.gz", \&check_compressed);
+SKIP: {
+    skip 'gunzip not available', 1 if not $have_gunzip;
+
+    # Test write on compressed file
+    test_write("$tmpdir/myfile.gz", \&check_compressed);
+}
 
 # Test read on uncompressed file
 test_read("$tmpdir/myfile");
-- 
2.31.0

From 0e2ae4e706e816a9ce200bb506674d19af25a55f Mon Sep 17 00:00:00 2001
From: Guillem Jover <guillem@debian.org>
Date: Tue, 19 Jan 2021 04:25:38 +0100
Subject: [PATCH 04/15] test: Mock dpkg and gcc for architecture detection code

We should not expect dpkg to be present on the system, which can happen
during bootstrapping, or on non-dpkg based systems. We should not expect
gcc to be present on the system, which can happen with the Dpkg perl
distribution which otherwise does not need a C compiler.
---
 scripts/Makefile.am           |  2 ++
 scripts/t/dpkg_buildpackage.t |  3 +++
 scripts/t/mk.t                |  5 ++++-
 scripts/t/mock-bin/dpkg       | 20 ++++++++++++++++++++
 scripts/t/mock-bin/gcc        | 20 ++++++++++++++++++++
 5 files changed, 49 insertions(+), 1 deletion(-)
 create mode 100755 scripts/t/mock-bin/dpkg
 create mode 100755 scripts/t/mock-bin/gcc

diff --git a/scripts/Makefile.am b/scripts/Makefile.am
index f36f0c5c8..0afba01c5 100644
--- a/scripts/Makefile.am
+++ b/scripts/Makefile.am
@@ -380,6 +380,8 @@ test_data = \
 	t/mk/vendor-v0.mk \
 	t/mk/vendor-v1.mk \
 	t/mk/vendor.mk \
+	t/mock-bin/dpkg \
+	t/mock-bin/gcc \
 	t/origins/debian \
 	t/origins/default \
 	t/origins/gnewsense \
diff --git a/scripts/t/dpkg_buildpackage.t b/scripts/t/dpkg_buildpackage.t
index dd4f67a6f..d529eb69c 100644
--- a/scripts/t/dpkg_buildpackage.t
+++ b/scripts/t/dpkg_buildpackage.t
@@ -48,6 +48,9 @@ delete $ENV{SOURCE_DATE_EPOCH};
 # Delete other variables that can affect the tests.
 delete $ENV{$_} foreach grep { m/^DEB_/ } keys %ENV;
 
+# Set architecture variables to not require dpkg nor gcc.
+$ENV{PATH} = "$srcdir/t/mock-bin:$ENV{PATH}";
+
 chdir $tmpdir;
 
 my $tmpl_format = <<'TMPL_FORMAT';
diff --git a/scripts/t/mk.t b/scripts/t/mk.t
index 766aa82e0..269052fa6 100644
--- a/scripts/t/mk.t
+++ b/scripts/t/mk.t
@@ -26,7 +26,7 @@ use Dpkg::ErrorHandling;
 use Dpkg::IPC;
 use Dpkg::Vendor;
 
-my $srcdir = $ENV{srcdir} || '.';
+my $srcdir = rel2abs($ENV{srcdir} || '.');
 my $datadir = test_get_data_path();
 
 # Turn these into absolute names so that we can safely switch to the test
@@ -40,6 +40,9 @@ delete $ENV{MAKEFLAGS};
 # Delete other variables that can affect the tests.
 delete $ENV{$_} foreach grep { m/^DEB_/ } keys %ENV;
 
+# Set architecture variables to not require dpkg nor gcc.
+$ENV{PATH} = "$srcdir/t/mock-bin:$ENV{PATH}";
+
 $ENV{DEB_BUILD_PATH} = rel2abs($datadir);
 
 sub test_makefile {
diff --git a/scripts/t/mock-bin/dpkg b/scripts/t/mock-bin/dpkg
new file mode 100755
index 000000000..fbfba35aa
--- /dev/null
+++ b/scripts/t/mock-bin/dpkg
@@ -0,0 +1,20 @@
+#!/bin/sh
+
+set -e
+
+args="$@"
+
+while [ $# -gt 0 ]; do
+  opt="$1"
+  shift
+
+  case "$opt" in
+  --print-architecture)
+    echo amd64
+    exit 0
+  esac
+done
+
+# Otherwise fail hard.
+echo "$0: unsupported command ($args) in mock wrapper"
+exit 1
diff --git a/scripts/t/mock-bin/gcc b/scripts/t/mock-bin/gcc
new file mode 100755
index 000000000..0174f17bb
--- /dev/null
+++ b/scripts/t/mock-bin/gcc
@@ -0,0 +1,20 @@
+#!/bin/sh
+
+set -e
+
+args="$@"
+
+while [ $# -gt 0 ]; do
+  opt="$1"
+  shift
+
+  case "$opt" in
+  -dumpmachine)
+    echo x86_64-linux-gnu
+    exit 0
+  esac
+done
+
+# Otherwise fail hard.
+echo "$0: unsupported command ($args) in mock wrapper"
+exit 1
-- 
2.31.0

From 6c59231daeb7776a58d196a3b18650cf408874c3 Mon Sep 17 00:00:00 2001
From: Guillem Jover <guillem@debian.org>
Date: Tue, 19 Jan 2021 04:26:11 +0100
Subject: [PATCH 05/15] test: Initialize DEB_BUILD_ARCH and DEB_HOST_ARCH to
 avoid computing them

These require dpkg and gcc to be available, which is not guaranteed on
non-Debian systems, or on systems without a compiler, such as the ones
using the CPAN distribution. Or when we are bootstrapping from scratch.
---
 scripts/t/Dpkg_BuildFlags.t | 2 ++
 scripts/t/Dpkg_Deps.t       | 3 +++
 scripts/t/Dpkg_Shlibs.t     | 3 +++
 scripts/t/Dpkg_Substvars.t  | 3 +++
 4 files changed, 11 insertions(+)

diff --git a/scripts/t/Dpkg_BuildFlags.t b/scripts/t/Dpkg_BuildFlags.t
index b087e0ab2..9faf19146 100644
--- a/scripts/t/Dpkg_BuildFlags.t
+++ b/scripts/t/Dpkg_BuildFlags.t
@@ -19,6 +19,8 @@ use warnings;
 use Test::More tests => 26;
 
 BEGIN {
+    $ENV{DEB_BUILD_ARCH} = 'amd64';
+    $ENV{DEB_HOST_ARCH} = 'amd64';
     use_ok('Dpkg::BuildFlags');
 }
 
diff --git a/scripts/t/Dpkg_Deps.t b/scripts/t/Dpkg_Deps.t
index 14fe4e014..3bad94d6b 100644
--- a/scripts/t/Dpkg_Deps.t
+++ b/scripts/t/Dpkg_Deps.t
@@ -21,6 +21,9 @@ use Test::More tests => 82;
 use Dpkg::Arch qw(get_host_arch);
 use Dpkg::Version;
 
+$ENV{DEB_BUILD_ARCH} = 'amd64';
+$ENV{DEB_HOST_ARCH} = 'amd64';
+
 use_ok('Dpkg::Deps');
 
 is(deps_concat(), '', 'Concatenate an empty list');
diff --git a/scripts/t/Dpkg_Shlibs.t b/scripts/t/Dpkg_Shlibs.t
index c1d24d3e7..c3f9d7359 100644
--- a/scripts/t/Dpkg_Shlibs.t
+++ b/scripts/t/Dpkg_Shlibs.t
@@ -25,6 +25,9 @@ plan tests => 150;
 
 use Dpkg::Path qw(find_command);
 
+$ENV{DEB_BUILD_ARCH} = 'amd64';
+$ENV{DEB_HOST_ARCH} = 'amd64';
+
 use_ok('Dpkg::Shlibs');
 
 my $tmp;
diff --git a/scripts/t/Dpkg_Substvars.t b/scripts/t/Dpkg_Substvars.t
index a9ddc2a90..31d66b16c 100644
--- a/scripts/t/Dpkg_Substvars.t
+++ b/scripts/t/Dpkg_Substvars.t
@@ -22,6 +22,9 @@ use Test::Dpkg qw(:paths);
 use Dpkg ();
 use Dpkg::Arch qw(get_host_arch);
 
+$ENV{DEB_BUILD_ARCH} = 'amd64';
+$ENV{DEB_HOST_ARCH} = 'amd64';
+
 use_ok('Dpkg::Substvars');
 
 my $datadir = test_get_data_path();
-- 
2.31.0

From 8152ee53f33a967966e294c60377e72f0ff8f0da Mon Sep 17 00:00:00 2001
From: Guillem Jover <guillem@debian.org>
Date: Sat, 30 Jan 2021 07:23:43 +0100
Subject: [PATCH 06/15] Dpkg::Exit: Preserve exit code in END block

Otherwise we can exit programs with an arbitrary exit code if we call
other commands during the exit hooks.

This was affecting for example a failing dpkg-source invoked from
dpkg-buildpackage.
---
 scripts/Dpkg/Exit.pm | 1 +
 1 file changed, 1 insertion(+)

diff --git a/scripts/Dpkg/Exit.pm b/scripts/Dpkg/Exit.pm
index 07f122fab..460b4eec1 100644
--- a/scripts/Dpkg/Exit.pm
+++ b/scripts/Dpkg/Exit.pm
@@ -105,6 +105,7 @@ sub _reset_exit_handlers
 }
 
 END {
+    local $?;
     run_exit_handlers();
 }
 
-- 
2.31.0

From 163b6f14040b601d85e3a588f175d9c013e08ab2 Mon Sep 17 00:00:00 2001
From: Guillem Jover <guillem@debian.org>
Date: Mon, 1 Feb 2021 01:14:05 +0100
Subject: [PATCH 07/15] debian: Run autotest test suites in verbose mode

Otherwise we cannot see what went wrong.
---
 debian/tests/test-not-root | 2 +-
 debian/tests/test-root     | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/debian/tests/test-not-root b/debian/tests/test-not-root
index 13ce78922..e1ca6db3f 100644
--- a/debian/tests/test-not-root
+++ b/debian/tests/test-not-root
@@ -11,4 +11,4 @@ srcdir="$(pwd)"
 
 cd $AUTOPKGTEST_TMP
 "$srcdir/configure" --disable-nls --disable-dselect
-make installcheck
+make installcheck TESTSUITEFLAGS=--verbose
diff --git a/debian/tests/test-root b/debian/tests/test-root
index 02dcaccfe..d4c658f03 100644
--- a/debian/tests/test-root
+++ b/debian/tests/test-root
@@ -11,4 +11,4 @@ srcdir="$(pwd)"
 
 cd $AUTOPKGTEST_TMP
 "$srcdir/configure" --disable-nls --disable-dselect
-make installcheck
+make installcheck TESTSUITEFLAGS=--verbose
-- 
2.31.0

From e6f5102b3ad8baba40e9979a712a9d6796b49afc Mon Sep 17 00:00:00 2001
From: Guillem Jover <guillem@debian.org>
Date: Mon, 22 Feb 2021 18:12:18 +0100
Subject: [PATCH 08/15] dpkg: Fix --auto-deconfigure for essential and
 protected during installation

Only apply the --force-remove-essential and --force-remove-protected
during package removals, which can only happen due to Conflicts,
otherwise we cannot solve auto-deconfigurations due to Breaks on essential
or protected packages during installations or upgrades.

This is a regression when the Breaks field got introduced, as the same
function that had been used for Conflicts was refactored to be used for
Breaks, but without taking into account the removal case.

Fixes: commit b301c0e71a5314bb4560111c6cf1602269f6f672
Reported-by: Julian Andres Klode <jak@debian.org>
---
 src/archives.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/archives.c b/src/archives.c
index 96079ab1f..aa56e9e9c 100644
--- a/src/archives.c
+++ b/src/archives.c
@@ -1239,7 +1239,7 @@ try_deconfigure_can(bool (*force_p)(struct deppossi *), struct pkginfo *pkg,
     warning(_("ignoring dependency problem with %s:\n%s"), action, why);
     return 2;
   } else if (f_autodeconf) {
-    if (pkg->installed.essential) {
+    if (removal && pkg->installed.essential) {
       if (in_force(FORCE_REMOVE_ESSENTIAL)) {
         warning(_("considering deconfiguration of essential\n"
                   " package %s, to enable %s"),
@@ -1251,7 +1251,7 @@ try_deconfigure_can(bool (*force_p)(struct deppossi *), struct pkginfo *pkg,
         return 0;
       }
     }
-    if (pkg->installed.is_protected) {
+    if (removal && pkg->installed.is_protected) {
       if (in_force(FORCE_REMOVE_PROTECTED)) {
         warning(_("considering deconfiguration of protected\n"
                   " package %s, to enable %s"),
-- 
2.31.0

From 2a15ac6b34e08e58a1b1af117e7cf205d73be928 Mon Sep 17 00:00:00 2001
From: Guillem Jover <guillem@debian.org>
Date: Thu, 21 Jan 2021 10:47:43 +0100
Subject: [PATCH 09/15] s-s-d: Open the --output file in append mode

Otherwise we will overwrite any pre-existing log file.

Fixes: commit 2eb9e88858e7991c293008f5252e6ee7693e3ce2
---
 utils/start-stop-daemon.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/utils/start-stop-daemon.c b/utils/start-stop-daemon.c
index d16f0ed26..98494b86d 100644
--- a/utils/start-stop-daemon.c
+++ b/utils/start-stop-daemon.c
@@ -2593,7 +2593,7 @@ do_start(int argc, char **argv)
 			fatale("unable to open '%s'", "/dev/null");
 	}
 	if (background && output_io) {
-		output_fd = open(output_io, O_CREAT | O_WRONLY, 0664);
+		output_fd = open(output_io, O_CREAT | O_WRONLY | O_APPEND, 0664);
 		if (output_fd < 0)
 			fatale("unable to open '%s'", output_io);
 	}
-- 
2.31.0

From 5bb44001d47ec2913cb93dd210dd897fe05846d6 Mon Sep 17 00:00:00 2001
From: Guillem Jover <guillem@debian.org>
Date: Wed, 3 Mar 2021 00:09:28 +0100
Subject: [PATCH 10/15] =?UTF-8?q?dpkg-realpath:=20Fix=20resolution=20for?=
 =?UTF-8?q?=20absolute=20symlinks=20on=20=C2=AB/=C2=BB?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

We should not reset the resulting pathname to be the root directory when
the root directory is empty, as that will happen to always match.

Closes: #983855
---
 scripts/dpkg-realpath.sh | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/scripts/dpkg-realpath.sh b/scripts/dpkg-realpath.sh
index 5636ab3c7..21b0f20d9 100755
--- a/scripts/dpkg-realpath.sh
+++ b/scripts/dpkg-realpath.sh
@@ -88,7 +88,7 @@ canonicalize() {
     elif [ "$prefix" = .. ]; then
       # Go up one directory.
       result=${result%/*}
-      if [ "${result#"$root"}" = "$result" ]; then
+      if [ -n "$root" ] && [ "${result#"$root"}" = "$result" ]; then
         result="$root"
       fi
     elif [ -h "$result/$prefix" ]; then
-- 
2.31.0

From 3258688b7fb4f4e45eb629b988b2e49ffb4476a4 Mon Sep 17 00:00:00 2001
From: Guillem Jover <guillem@debian.org>
Date: Wed, 3 Mar 2021 00:09:28 +0100
Subject: [PATCH 11/15] dpkg-realpath: Fix symlink loop tracker

We need to move the symlink tracking from the general loop, which would
limit the depth of the pathname to the case that handles symlinks in the
pathname.
---
 scripts/dpkg-realpath.sh | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/scripts/dpkg-realpath.sh b/scripts/dpkg-realpath.sh
index 21b0f20d9..bb7861038 100755
--- a/scripts/dpkg-realpath.sh
+++ b/scripts/dpkg-realpath.sh
@@ -69,10 +69,6 @@ canonicalize() {
      src=${src#/}
   done
   while [ -n "$src" ]; do
-    loop=$((loop + 1))
-    if [ "$loop" -gt 25 ]; then
-      error "too many levels of symbolic links"
-    fi
     # Get the first directory component.
     prefix=${src%%/*}
     # Remove the first directory component from src.
@@ -92,6 +88,10 @@ canonicalize() {
         result="$root"
       fi
     elif [ -h "$result/$prefix" ]; then
+      loop=$((loop + 1))
+      if [ "$loop" -gt 25 ]; then
+        error "too many levels of symbolic links"
+      fi
       # Resolve the symlink within $result.
       dst=$(readlink "$result/$prefix")
       case "$dst" in
-- 
2.31.0

From 44894a8ec0b8407a985117e29a0239f3a85f1236 Mon Sep 17 00:00:00 2001
From: Guillem Jover <guillem@debian.org>
Date: Thu, 8 Apr 2021 04:14:31 +0200
Subject: [PATCH 12/15] =?UTF-8?q?build:=20Group=20Test::Dpkg=20changelog?=
 =?UTF-8?q?=20entries=20into=20=E2=80=9CPerl=20modules=E2=80=9D=20section?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 gen-changelog | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/gen-changelog b/gen-changelog
index 58637e0de..a09d5a5df 100755
--- a/gen-changelog
+++ b/gen-changelog
@@ -72,7 +72,7 @@ my %sections = (
     },
     'perl-mod' => {
         title => 'Perl modules',
-        match => qr/^Dpkg.*[,:] /,
+        match => qr/^(Test|Dpkg).*[,:] /,
         keep => 1,
     },
     doc => {
-- 
2.31.0

From 26e56b5ee8b76e57811c17d0ccb7c3d00f232802 Mon Sep 17 00:00:00 2001
From: Guillem Jover <guillem@debian.org>
Date: Thu, 8 Apr 2021 04:28:06 +0200
Subject: [PATCH 13/15] test: Update suppressions for cppcheck 2.4

---
 t/cppcheck/cppcheck.supp | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/t/cppcheck/cppcheck.supp b/t/cppcheck/cppcheck.supp
index 1dba7a48a..fbe17ddaa 100644
--- a/t/cppcheck/cppcheck.supp
+++ b/t/cppcheck/cppcheck.supp
@@ -58,3 +58,6 @@ va_end_missing:lib/dpkg/parsehelp.c:68
 
 // BUG: False positive, due to our local va_copy().
 va_list_usedBeforeStarted:lib/compat/vasprintf.c
+
+// BUG: False positive, SIGWINCH is not a fatal signal.
+unreachableCode:dselect/basecmds.cc:130
-- 
2.31.0

From dc10e06ef88cb230a7a59f3b321976945f280fe7 Mon Sep 17 00:00:00 2001
From: Guillem Jover <guillem@debian.org>
Date: Fri, 9 Apr 2021 19:45:09 +0200
Subject: [PATCH 15/15] Release 1.20.8

---
 debian/changelog | 36 +++++++++++++++++++++++++++++++++---
 1 file changed, 33 insertions(+), 3 deletions(-)

diff --git a/debian/changelog b/debian/changelog
index a8131b6ca..a0c28fa00 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,8 +1,38 @@
-dpkg (1.20.8) UNRELEASED; urgency=medium
+dpkg (1.20.8) unstable; urgency=medium
 
-  *
+  [ Guillem Jover ]
+  * dpkg: Fix --auto-deconfigure for essential and protected during
+    installation. Reported by Julian Andres Klode <jak@debian.org>.
+  * start-stop-daemon: Open the --output file in append mode.
+  * dpkg-realpath: Fix resolution for absolute symlinks on «/».
+    Closes: #983855
+  * dpkg-realpath: Fix symlink loop tracker.
+  * Perl modules:
+    - Test::Dpkg: Fix test data path fetching on CPAN.
+    - Dpkg::Exit: Preserve exit code in END block.
+  * Build system:
+    - Group Test::Dpkg changelog entries into “Perl modules” section.
+  * Packaging:
+    - Run autotest test suites in verbose mode.
+  * Test suite:
+    - Set PERL in the perl test suite.
+    - Use gunzip instead of zcat and assume it might not be present.
+    - Mock dpkg and gcc for architecture detection code.
+    - Initialize DEB_BUILD_ARCH and DEB_HOST_ARCH to avoid computing them.
+    - Update suppressions for cppcheck 2.4.
+
+  [ Update man pages translations ]
+  * Dutch (Frans Spiesschaert). Closes: #981884
+  * German (Helge Kreutzmann).
+  * Portuguese (Américo Monteiro). Closes: #980018
+
+  [ Update programs translations ]
+  * Dutch (Frans Spiesschaert). Closes: #981882
+
+  [ Update scripts translations ]
+  * German (Helge Kreutzmann). Closes: #983865
 
- -- Guillem Jover <guillem@debian.org>  Sat, 09 Jan 2021 01:11:05 +0100
+ -- Guillem Jover <guillem@debian.org>  Fri, 09 Apr 2021 19:44:30 +0200
 
 dpkg (1.20.7) unstable; urgency=medium
 
-- 
2.31.0


Reply to: