Package: dpkg
Version: 1.20.0+nmu2~1.gbpcd9614
Severity: normal
Tags: patch
Dear Maintainer,
while building some of my packages, I noticed they were built without
patches applied. Further investigation in the code showed that it was
caused by dpkg-source --before-build carrying on silently if the first
patch could't be applied, eg. when the series was partially applied, or
the patch itself was somehow defective. It seems this behaviour was a
legacy from package format 2 and IMHO is totally unneeded with quilt. I
therefore suggest to apply this patch, which I've used for several
months now without problems. It relegates the issue of deciding when to
apply patches to quilt.
Regards
Jiri Palecek
From f489217e511c4ed5c78d63fcc7688a630b73bc67 Mon Sep 17 00:00:00 2001
From: =?iso8859-2?q?Ji=F8=ED=20Pale=E8ek?= <[email protected]>
Date: Sun, 27 Oct 2019 18:55:06 +0100
Subject: [PATCH] Don't pass before-build stage when first patch doesn't apply
with format V3-quilt
When the first patch doesn't apply, dpkg-source --before-build
silently continues. This behaviour is meant to allow it to continue
when the patch series has been applied, however, it also makes it
very prone to breakage. Particularly, if your first patch is applied
but the rest isn't (eg. has been applied upstream), or if it is
defective, you are going to get a package built with Debian patches
silently ignored. Quilt will safely apply all the patches, even if
some of them are already applied, and fail correctly when the patches
are defective. V2 doesn't offer any such functionality, so IMHO the
cleanest behaviour is to rely on quilt and fail if patches according
to its bookkeeping should be applied but can't.
---
scripts/Dpkg/Source/Package/V3/Quilt.pm | 4 ----
1 file changed, 4 deletions(-)
diff --git a/scripts/Dpkg/Source/Package/V3/Quilt.pm b/scripts/Dpkg/Source/Package/V3/Quilt.pm
index 45237d26a..25c5aab1b 100644
--- a/scripts/Dpkg/Source/Package/V3/Quilt.pm
+++ b/scripts/Dpkg/Source/Package/V3/Quilt.pm
@@ -235,10 +235,6 @@ sub check_patches_applied {
my $next = $quilt->next();
return if not defined $next;
- my $first_patch = File::Spec->catfile($dir, 'debian', 'patches', $next);
- my $patch_obj = Dpkg::Source::Patch->new(filename => $first_patch);
- return unless $patch_obj->check_apply($dir, fatal_dupes => 1);
-
$self->apply_patches($dir, usage => 'preparation', verbose => 1);
}
--
2.25.1
-- Package-specific info:
-- System Information:
Debian Release: 10.0
APT prefers testing
APT policy: (990, 'testing'), (500, 'unstable-debug'), (500,
'testing-debug'), (500, 'unstable'), (1, 'experimental-debug'), (1,
'experimental')
Architecture: i386 (i686)
Foreign Architectures: amd64
Kernel: Linux 5.5.0-rc5-686-pae (SMP w/2 CPU cores)
Kernel taint flags: TAINT_PROPRIETARY_MODULE, TAINT_OOT_MODULE,
TAINT_UNSIGNED_MODULE
Locale: LANG=cs_CZ, LC_CTYPE=cs_CZ (charmap=ISO-8859-2), LANGUAGE=cs_CZ
(charmap=ISO-8859-2)
Shell: /bin/sh linked to /bin/dash
Init: systemd (via /run/systemd/system)
Versions of packages dpkg depends on:
ii libbz2-1.0 1.0.8-2
ii libc6 2.30-4
ii liblzma5 5.2.4-1+b1
ii libselinux1 3.0-1+b1
ii tar 1.30+dfsg-6
ii zlib1g 1:1.2.11.dfsg-2
dpkg recommends no packages.
Versions of packages dpkg suggests:
ii apt 2.0.1
pn debsig-verify <none>
-- no debconf information