summaryrefslogtreecommitdiffstats
path: root/meta/recipes-devtools/dpkg
diff options
context:
space:
mode:
authorPaul Eggleton <paul.eggleton@linux.microsoft.com>2020-06-17 20:44:09 -0700
committerRichard Purdie <richard.purdie@linuxfoundation.org>2020-06-23 12:31:02 +0100
commit514494152a8c7c5373ea4c299f058246e88a7fb6 (patch)
tree458622b00c28372b3f143d8d35da4b98bbd041a1 /meta/recipes-devtools/dpkg
parent89bf9f6e61aae97f8c7876ec38b362f841e0374a (diff)
downloadpoky-514494152a8c7c5373ea4c299f058246e88a7fb6.tar.gz
dpkg-native: rebase and reinstate fix for "tar: file changed as we read it"
In OE-Core rev 8ee36a5f2f9367550d28bf271afc53bca6ff3d5f a patch was added for dpkg to ignore a return of 1 from dpkg's calls to tar (which indicates that files changed in some way while tar was operating) we were observing failures on the autobuilder due to changes to link counts in hard-linked file trees. The patch was subsequently rebased and then later removed during an upgrade in 3812f58b3a438ae533c282170416cdd1681868e0 on the assumption that the fix had been applied upstream, however that was not the case. I am now occasionally seeing these errors in my builds without any apparent material change to the files, so rebase and reinstate the patch. Fixes [YOCTO #13913]. (From OE-Core rev: 3f871fae96e72afa49b9d6a05c96af49173b8a60) Signed-off-by: Paul Eggleton <paul.eggleton@linux.microsoft.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'meta/recipes-devtools/dpkg')
-rw-r--r--meta/recipes-devtools/dpkg/dpkg/0001-build.c-ignore-return-of-1-from-tar-cf.patch52
-rw-r--r--meta/recipes-devtools/dpkg/dpkg_1.20.0.bb2
2 files changed, 54 insertions, 0 deletions
diff --git a/meta/recipes-devtools/dpkg/dpkg/0001-build.c-ignore-return-of-1-from-tar-cf.patch b/meta/recipes-devtools/dpkg/dpkg/0001-build.c-ignore-return-of-1-from-tar-cf.patch
new file mode 100644
index 0000000000..7c35407364
--- /dev/null
+++ b/meta/recipes-devtools/dpkg/dpkg/0001-build.c-ignore-return-of-1-from-tar-cf.patch
@@ -0,0 +1,52 @@
1From 450fece894fce750502be8accabfd88c585bda4c Mon Sep 17 00:00:00 2001
2From: Paul Eggleton <paul.eggleton@linux.microsoft.com>
3Date: Tue, 16 Jun 2020 03:57:25 +0000
4Subject: [PATCH] build.c: ignore return of 1 from tar -cf
5
6When running do_package_write_deb, we have trees of hardlinked files
7such as the dbg source files in ${PN}-dbg. If something makes another
8copy of one of those files (or deletes one), the number of links a file
9has changes and tar can notice this, e.g.:
10
11| DEBUG: Executing python function do_package_deb
12| dpkg-deb: building package `sed-ptest' in `/media/build1/poky/build/tmp/work/i586-poky-linux/sed/4.2.2-r0/deploy-debs/i586/sed-ptest_4.2.2-r0.3_i386.deb'.
13| tar: ./usr/lib/sed/ptest/testsuite/tst-regex2: file changed as we read it
14| dpkg-deb: error: subprocess tar -cf returned error exit status 1
15
16Tar returns an error of 1 when files 'change' and other errors codes
17in other error cases. We tweak dpkg-deb here so that it ignores an exit
18code of 1 from tar. The files don't really change (and we have locking in
19place to avoid that kind of issue).
20
21Upstream-Status: Inappropriate [OE specific]
22
23Original patch by RP 2015/3/27, rebased by Paul Eggleton
24
25Signed-off-by: Paul Eggleton <paul.eggleton@microsoft.com>
26---
27 dpkg-deb/build.c | 5 ++++-
28 1 file changed, 4 insertions(+), 1 deletion(-)
29
30diff --git a/dpkg-deb/build.c b/dpkg-deb/build.c
31index a3d1912..1de7f9c 100644
32--- a/dpkg-deb/build.c
33+++ b/dpkg-deb/build.c
34@@ -427,6 +427,7 @@ tarball_pack(const char *dir, filenames_feed_func *tar_filenames_feeder,
35 {
36 int pipe_filenames[2], pipe_tarball[2];
37 pid_t pid_tar, pid_comp;
38+ int rc;
39
40 /* Fork off a tar. We will feed it a list of filenames on stdin later. */
41 m_pipe(pipe_filenames);
42@@ -477,7 +478,9 @@ tarball_pack(const char *dir, filenames_feed_func *tar_filenames_feeder,
43 /* All done, clean up wait for tar and <compress> to finish their job. */
44 close(pipe_filenames[1]);
45 subproc_reap(pid_comp, _("<compress> from tar -cf"), 0);
46- subproc_reap(pid_tar, "tar -cf", 0);
47+ rc = subproc_reap(pid_tar, "tar -cf", SUBPROC_RETERROR);
48+ if (rc && rc != 1)
49+ ohshite(_("subprocess %s returned error exit status %d"), "tar -cf", rc);
50 }
51
52 static time_t
diff --git a/meta/recipes-devtools/dpkg/dpkg_1.20.0.bb b/meta/recipes-devtools/dpkg/dpkg_1.20.0.bb
index d539c57522..c98a9e58e2 100644
--- a/meta/recipes-devtools/dpkg/dpkg_1.20.0.bb
+++ b/meta/recipes-devtools/dpkg/dpkg_1.20.0.bb
@@ -16,5 +16,7 @@ SRC_URI = "${DEBIAN_MIRROR}/main/d/${BPN}/${BPN}_${PV}.tar.xz \
16 file://0001-Add-support-for-riscv32-CPU.patch \ 16 file://0001-Add-support-for-riscv32-CPU.patch \
17 " 17 "
18 18
19SRC_URI_append_class-native = " file://0001-build.c-ignore-return-of-1-from-tar-cf.patch"
20
19SRC_URI[md5sum] = "f88f077236a3ff3decae3b25c989893d" 21SRC_URI[md5sum] = "f88f077236a3ff3decae3b25c989893d"
20SRC_URI[sha256sum] = "b633cc2b0e030efb61e11029d8a3fb1123f719864c9992da2e52b471c96d0900" 22SRC_URI[sha256sum] = "b633cc2b0e030efb61e11029d8a3fb1123f719864c9992da2e52b471c96d0900"