Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
torvalds
GitHub Repository: torvalds/linux
Path: blob/master/kernel/gen_kheaders.sh
26243 views
1
#!/bin/sh
2
# SPDX-License-Identifier: GPL-2.0
3
4
# This script generates an archive consisting of kernel headers
5
# for CONFIG_IKHEADERS.
6
set -e
7
tarfile=$1
8
srclist=$2
9
objlist=$3
10
timestamp=$4
11
12
dir=$(dirname "${tarfile}")
13
tmpdir=${dir}/.tmp_dir
14
depfile=${dir}/.$(basename "${tarfile}").d
15
16
# generate dependency list.
17
{
18
echo
19
echo "deps_${tarfile} := \\"
20
sed 's:\(.*\): \1 \\:' "${srclist}"
21
sed -n '/^include\/generated\/autoconf\.h$/!s:\(.*\): \1 \\:p' "${objlist}"
22
echo
23
echo "${tarfile}: \$(deps_${tarfile})"
24
echo
25
echo "\$(deps_${tarfile}):"
26
27
} > "${depfile}"
28
29
rm -rf "${tmpdir}"
30
mkdir "${tmpdir}"
31
32
# shellcheck disable=SC2154 # srctree is passed as an env variable
33
sed "s:^${srctree}/::" "${srclist}" | ${TAR} -c -f - -C "${srctree}" -T - | ${TAR} -xf - -C "${tmpdir}"
34
${TAR} -c -f - -T "${objlist}" | ${TAR} -xf - -C "${tmpdir}"
35
36
# Remove comments except SDPX lines
37
# Use a temporary file to store directory contents to prevent find/xargs from
38
# seeing temporary files created by perl.
39
find "${tmpdir}" -type f -print0 > "${tmpdir}.contents.txt"
40
xargs -0 -P8 -n1 \
41
perl -pi -e 'BEGIN {undef $/;}; s/\/\*((?!SPDX).)*?\*\///smg;' \
42
< "${tmpdir}.contents.txt"
43
rm -f "${tmpdir}.contents.txt"
44
45
# Create archive and try to normalize metadata for reproducibility.
46
${TAR} "${timestamp:+--mtime=$timestamp}" \
47
--owner=0 --group=0 --sort=name --numeric-owner --mode=u=rw,go=r,a+X \
48
-I "${XZ}" -cf "${tarfile}" -C "${tmpdir}/" . > /dev/null
49
50
rm -rf "${tmpdir}"
51
52