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