Skip to content

Commit 9cd6f16

Browse files
1582130940t-8ch
andauthored
tools/patch: apply patch for EACCES on xattr copy (coolsnowwolf#10469)
When compiling OpenWRT on a compressed btrfs volume the build fails in libtool. The file `libltdl/config/ltmain.m4sh` from `libtool-2.4.2.tar.xz` is missing write permissions, therefore patch falls back to copying the file and patching that. During this patch tries to preserve all file attribute on the new copy. However the attribute `btrfs.compression` is privileged and btrfs return EACCES. While patch ignores multiple other error codes during the copy of xattr copy it is not prepared for EACCES and aborts. EACCES should be ignored the same way as the other errors. Build log: ``` ... Applying ./patches/000-relocatable.patch using plaintext: patching file libltdl/config/general.m4sh patching file libtoolize.in patching file libtoolize.m4sh patching file libltdl/m4/libtool.m4 Applying ./patches/100-libdir-fixes.patch using plaintext: patching file libltdl/config/ltmain.m4sh File libltdl/config/ltmain.sh is read-only; trying to patch anyway patching file libltdl/config/ltmain.sh patch: setting attribute btrfs.compression for btrfs.compression: Permission denied Patch failed! Please fix ./patches/100-libdir-fixes.patch! ``` Link: https://lists.gnu.org/archive/html/bug-patch/2022-11/msg00000.html Co-authored-by: Thomas Weißschuh <[email protected]> Signed-off-by: Thomas Weißschuh <[email protected]>
1 parent 58692d5 commit 9cd6f16

File tree

2 files changed

+34
-1
lines changed

2 files changed

+34
-1
lines changed

tools/patch/Makefile

+1-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ include $(TOPDIR)/rules.mk
88

99
PKG_NAME:=patch
1010
PKG_VERSION:=2.7.6
11-
PKG_RELEASE:=6
11+
PKG_RELEASE:=7
1212
PKG_CPE_ID:=cpe:/a:gnu:patch
1313

1414
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
From f42cbe1a91a3a6f79d1eec594ce7c72aec79179b Mon Sep 17 00:00:00 2001
2+
From: =?UTF-8?q?Thomas=20Wei=C3=9Fschuh?= <[email protected]>
3+
Date: Wed, 9 Nov 2022 05:08:22 +0100
4+
Subject: [PATCH] don't fail hard on EACCES when copying xattrs
5+
6+
On btrfs the xattr "btrfs.compressed" requires privileges to set,
7+
otherwise EACCES is returned.
8+
When patch tries to do copy this attribute it receives the error and
9+
aborts.
10+
---
11+
src/util.c | 4 ++--
12+
1 file changed, 2 insertions(+), 2 deletions(-)
13+
14+
--- a/src/util.c
15+
+++ b/src/util.c
16+
@@ -182,7 +182,7 @@ copy_attr_error (struct error_context *c
17+
int err = errno;
18+
va_list ap;
19+
20+
- if (err != ENOSYS && err != ENOTSUP && err != EPERM)
21+
+ if (err != ENOSYS && err != ENOTSUP && err != EPERM && err != EACCES)
22+
{
23+
/* use verror module to print error message */
24+
va_start (ap, fmt);
25+
@@ -284,7 +284,7 @@ set_file_attributes (char const *to, enu
26+
}
27+
if (attr & FA_XATTRS)
28+
if (copy_attr (from, to) != 0
29+
- && errno != ENOSYS && errno != ENOTSUP && errno != EPERM)
30+
+ && errno != ENOSYS && errno != ENOTSUP && errno != EPERM && errno != EACCES)
31+
fatal_exit (0);
32+
if (attr & FA_MODE)
33+
{

0 commit comments

Comments
 (0)