Commit 82a1978d authored by Masahiro Yamada's avatar Masahiro Yamada
Browse files

kheaders: use 'tar' instead of 'cpio' for copying files



The 'cpio' command is used solely for copying header files to the
temporary directory. However, there is no strong reason to use 'cpio'
for this purpose. For example, scripts/package/install-extmod-build
uses the 'tar' command to copy files.

This commit replaces the use of 'cpio' with 'tar' because 'tar' is
already used in this script to generate kheaders_data.tar.xz anyway.

Performance-wide, there is no significant difference between 'cpio'
and 'tar'.

[Before]

  $ rm -fr kheaders; mkdir kheaders
  $ time sh -c '
  for f in include arch/x86/include
  do
          find "$f" -name "*.h"
  done | cpio --quiet -pd kheaders
  '
  real    0m0.148s
  user    0m0.021s
  sys     0m0.140s

[After]

  $ rm -fr kheaders; mkdir kheaders
  $ time sh -c '
  for f in include arch/x86/include
  do
          find "$f" -name "*.h"
  done | tar -c -f - -T - | tar -xf - -C kheaders
  '
  real    0m0.098s
  user    0m0.024s
  sys     0m0.131s

Revert commit 69ef0920 ("Docs: Add cpio requirement to changes.rst")
because 'cpio' is not used anywhere else during the kernel build.
Please note that the built-in initramfs is created by the in-tree tool,
usr/gen_init_cpio, so it does not rely on the external 'cpio' command
at all.

Remove 'cpio' from the package build dependencies as well.

Signed-off-by: default avatarMasahiro Yamada <masahiroy@kernel.org>
parent fd2a118c
Loading
Loading
Loading
Loading
+0 −6
Original line number Diff line number Diff line
@@ -59,7 +59,6 @@ iptables 1.4.2 iptables -V
openssl & libcrypto    1.0.0            openssl version
bc                     1.06.95          bc --version
Sphinx\ [#f1]_         2.4.4            sphinx-build --version
cpio                   any              cpio --version
GNU tar                1.28             tar --version
gtags (optional)       6.6.5            gtags --version
mkimage (optional)     2017.01          mkimage --version
@@ -536,11 +535,6 @@ mcelog

- <https://www.mcelog.org/>

cpio
----

- <https://www.gnu.org/software/cpio/>

Networking
**********

+2 −11
Original line number Diff line number Diff line
@@ -14,13 +14,6 @@ include/
arch/$SRCARCH/include/
"

if ! command -v cpio >/dev/null; then
	echo >&2 "***"
	echo >&2 "*** 'cpio' could not be found."
	echo >&2 "***"
	exit 1
fi

# Support incremental builds by skipping archive generation
# if timestamps of files being archived are not changed.

@@ -73,15 +66,13 @@ if [ "$building_out_of_srctree" ]; then
		cd $srctree
		for f in $dir_list
			do find "$f" -name "*.h";
		done | cpio --quiet -pd "${tmpdir}"
		done | tar -c -f - -T - | tar -xf - -C "${tmpdir}"
	)
fi

# The second CPIO can complain if files already exist which can happen with out
# of tree builds having stale headers in srctree. Just silence CPIO for now.
for f in $dir_list;
	do find "$f" -name "*.h";
done | cpio --quiet -pdu "${tmpdir}" >/dev/null 2>&1
done | tar -c -f - -T - | tar -xf - -C "${tmpdir}"

# Always exclude include/generated/utsversion.h
# Otherwise, the contents of the tarball may vary depending on the build steps.
+0 −1
Original line number Diff line number Diff line
@@ -22,7 +22,6 @@ license=(GPL-2.0-only)
makedepends=(
	bc
	bison
	cpio
	flex
	gettext
	kmod
+1 −1
Original line number Diff line number Diff line
@@ -205,7 +205,7 @@ Priority: optional
Maintainer: $maintainer
Rules-Requires-Root: no
Build-Depends: debhelper-compat (= 12)
Build-Depends-Arch: bc, bison, cpio, flex,
Build-Depends-Arch: bc, bison, flex,
 gcc-${host_gnu} <!pkg.${sourcename}.nokernelheaders>,
 kmod, libelf-dev:native,
 libssl-dev:native, libssl-dev <!pkg.${sourcename}.nokernelheaders>,