All of lore.kernel.org
 help / color / mirror / Atom feed
From: Nathan Chancellor <nathan@kernel.org>
To: Sam James <sam@gentoo.org>
Cc: "Masahiro Yamada" <masahiroy@kernel.org>,
	"Nicolas Schier" <nicolas.schier@linux.dev>,
	linux-kbuild@vger.kernel.org, "Michał Górny" <mgorny@gentoo.org>,
	linux-kernel@vger.kernel.org
Subject: Re: [PATCH v3] kheaders: make it possible to override TAR
Date: Sat, 19 Jul 2025 16:10:02 -0400	[thread overview]
Message-ID: <20250719201002.GA3285766@ax162> (raw)
In-Reply-To: <277557da458c5fa07eba7d785b4f527cc37a023f.1752938644.git.sam@gentoo.org>

On Sat, Jul 19, 2025 at 04:24:05PM +0100, Sam James wrote:
> From: Michał Górny <mgorny@gentoo.org>
> 
> 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.
> 
> Add a `TAR` make variable to make it possible to override the tar
> executable used, e.g. by specifying:
> 
>   make TAR=gtar
> 
> Link: https://bugs.gentoo.org/884061
> Reported-by: Sam James <sam@gentoo.org>
> Tested-by: Sam James <sam@gentoo.org>
> Co-developed-by: Masahiro Yamada <masahiroy@kernel.org>
> Signed-off-by: Michał Górny <mgorny@gentoo.org>
> Signed-off-by: Sam James <sam@gentoo.org>
> ---

Reviewed-by: Nathan Chancellor <nathan@kernel.org>

I assume that other places that call tar within the build process are
not problematic because they do not use GNU specific options, such as
scripts/Makefile.package and scripts/package/install-extmod-build, or
maybe that people just have not tried building those packages with
bsdtar?

> v3: Rebase, cover more tar instances.
> 
>  Makefile               | 3 ++-
>  kernel/gen_kheaders.sh | 6 +++---
>  2 files changed, 5 insertions(+), 4 deletions(-)
> 
> diff --git a/Makefile b/Makefile
> index c09766beb7eff..22d6037d738fe 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -543,6 +543,7 @@ LZMA		= lzma
>  LZ4		= lz4
>  XZ		= xz
>  ZSTD		= zstd
> +TAR		= tar
>  
>  CHECKFLAGS     := -D__linux__ -Dlinux -D__STDC__ -Dunix -D__unix__ \
>  		  -Wbitwise -Wno-return-void -Wno-unknown-attribute $(CF)
> @@ -622,7 +623,7 @@ export RUSTC RUSTDOC RUSTFMT RUSTC_OR_CLIPPY_QUIET RUSTC_OR_CLIPPY BINDGEN
>  export HOSTRUSTC KBUILD_HOSTRUSTFLAGS
>  export CPP AR NM STRIP OBJCOPY OBJDUMP READELF PAHOLE RESOLVE_BTFIDS LEX YACC AWK INSTALLKERNEL
>  export PERL PYTHON3 CHECK CHECKFLAGS MAKE UTS_MACHINE HOSTCXX
> -export KGZIP KBZIP2 KLZOP LZMA LZ4 XZ ZSTD
> +export KGZIP KBZIP2 KLZOP LZMA LZ4 XZ ZSTD TAR
>  export KBUILD_HOSTCXXFLAGS KBUILD_HOSTLDFLAGS KBUILD_HOSTLDLIBS KBUILD_PROCMACROLDFLAGS LDFLAGS_MODULE
>  export KBUILD_USERCFLAGS KBUILD_USERLDFLAGS
>  
> diff --git a/kernel/gen_kheaders.sh b/kernel/gen_kheaders.sh
> index c9e5dc068e854..bb609a9ed72b4 100755
> --- a/kernel/gen_kheaders.sh
> +++ b/kernel/gen_kheaders.sh
> @@ -66,13 +66,13 @@ if [ "$building_out_of_srctree" ]; then
>  		cd $srctree
>  		for f in $dir_list
>  			do find "$f" -name "*.h";
> -		done | tar -c -f - -T - | tar -xf - -C "${tmpdir}"
> +		done | ${TAR:-tar} -c -f - -T - | ${TAR:-tar} -xf - -C "${tmpdir}"
>  	)
>  fi
>  
>  for f in $dir_list;
>  	do find "$f" -name "*.h";
> -done | tar -c -f - -T - | tar -xf - -C "${tmpdir}"
> +done | ${TAR:-tar} -c -f - -T - | ${TAR:-tar} -xf - -C "${tmpdir}"
>  
>  # Always exclude include/generated/utsversion.h
>  # Otherwise, the contents of the tarball may vary depending on the build steps.
> @@ -88,7 +88,7 @@ xargs -0 -P8 -n1 \
>  rm -f "${tmpdir}.contents.txt"
>  
>  # Create archive and try to normalize metadata for reproducibility.
> -tar "${KBUILD_BUILD_TIMESTAMP:+--mtime=$KBUILD_BUILD_TIMESTAMP}" \
> +${TAR:-tar} "${KBUILD_BUILD_TIMESTAMP:+--mtime=$KBUILD_BUILD_TIMESTAMP}" \
>      --owner=0 --group=0 --sort=name --numeric-owner --mode=u=rw,go=r,a+X \
>      -I $XZ -cf $tarfile -C "${tmpdir}/" . > /dev/null
>  
> -- 
> 2.50.1
> 

  reply	other threads:[~2025-07-19 20:10 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
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 [this message]
2025-07-20 19:08                   ` Michał Górny
2025-07-20 19:59                     ` Nicolas Schier
2025-07-26  6:46                     ` Masahiro Yamada

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20250719201002.GA3285766@ax162 \
    --to=nathan@kernel.org \
    --cc=linux-kbuild@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=masahiroy@kernel.org \
    --cc=mgorny@gentoo.org \
    --cc=nicolas.schier@linux.dev \
    --cc=sam@gentoo.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.