mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
* [PATCH] kheaders: prefer gtar over tar for better compatibility
@ 2022-12-17  8:41 Michał Górny
  2022-12-24 16:45 ` Masahiro Yamada
  0 siblings, 1 reply; 13+ messages in thread
From: Michał Górny @ 2022-12-17  8:41 UTC (permalink / raw)
  To: Dmitry Goldin
  Cc: Masahiro Yamada, linux-kernel, Michał Górny, Sam James

Commit 86cdd2fdc4e39c388d39c7ba2396d1a9dfd66226 ("kheaders: make headers
archive reproducible") introduced a number of options specific to GNU
tar to the `tar` invocation in `gen_kheaders.sh` script.  This causes
the script to fail to work on systems where `tar` is not GNU tar.  This
can occur e.g. on recent Gentoo Linux installations that support using
bsdtar from libarchive instead.

To achieve better portability, try using `gtar` over `tar` if the former
is available.  This is the name frequently used on systems featuring
support for installing GNU tar alongside another tar implementation.
If `gtar` is not present, `tar` is used for compatibility with regular
systems.

Link: https://bugs.gentoo.org/884061
Reported-by: Sam James <sam@gentoo.org>
Tested-by: Sam James <sam@gentoo.org>
Signed-off-by: Michał Górny <mgorny@gentoo.org>
---
 kernel/gen_kheaders.sh | 11 ++++++++++-
 1 file changed, 10 insertions(+), 1 deletion(-)

diff --git a/kernel/gen_kheaders.sh b/kernel/gen_kheaders.sh
index 473036b43..d2445af7f 100755
--- a/kernel/gen_kheaders.sh
+++ b/kernel/gen_kheaders.sh
@@ -80,11 +80,20 @@ done | cpio --quiet -pdu $cpio_dir >/dev/null 2>&1
 find $cpio_dir -type f -print0 |
 	xargs -0 -P8 -n1 perl -pi -e 'BEGIN {undef $/;}; s/\/\*((?!SPDX).)*?\*\///smg;'
 
+# The following tar invocations use options specific to GNU tar. On some
+# systems (e.g. Gentoo), `tar` can be a different tool (e.g. bsdtar), and GNU
+# tar can be found as `gtar`.
+if [ -x "$(command -v gtar)" ]; then
+	tar=gtar
+else
+	tar=tar
+fi
+
 # Create archive and try to normalize metadata for reproducibility.
 # For compatibility with older versions of tar, files are fed to tar
 # pre-sorted, as --sort=name might not be available.
 find $cpio_dir -printf "./%P\n" | LC_ALL=C sort | \
-    tar "${KBUILD_BUILD_TIMESTAMP:+--mtime=$KBUILD_BUILD_TIMESTAMP}" \
+    $tar "${KBUILD_BUILD_TIMESTAMP:+--mtime=$KBUILD_BUILD_TIMESTAMP}" \
     --owner=0 --group=0 --numeric-owner --no-recursion \
     -I $XZ -cf $tarfile -C $cpio_dir/ -T - > /dev/null
 
-- 
2.39.0


^ permalink raw reply	[flat|nested] 13+ messages in thread

end of thread, other threads:[~2025-07-26  6:47 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-12-17  8:41 [PATCH] kheaders: prefer gtar over tar for better compatibility Michał Górny
2022-12-24 16:45 ` Masahiro Yamada
2022-12-25 16:33   ` Michał Górny
2023-01-17 19:01     ` Sam James
2023-02-04 16:39       ` Sam James
2023-03-17  0:04         ` Sam James
2023-03-19  7:43           ` Masahiro Yamada
2023-04-12  8:27             ` [PATCH v2] kheaders: make it possible to override TAR Michał Górny
2025-07-19 15:24               ` [PATCH v3] " Sam James
2025-07-19 20:10                 ` Nathan Chancellor
2025-07-20 19:08                   ` Michał Górny
2025-07-20 19:59                     ` Nicolas Schier
2025-07-26  6:46                     ` Masahiro Yamada

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®