mirror of
https://git.kernel.org/pub/scm/network/iproute2/iproute2.git
synced 2026-01-28 23:14:09 +00:00
Add a script to automate importing Linux UAPI headers from kernel source.
The script handles dependency resolution and creates a commit with proper
attribution, similar to the ethtool project approach.
Usage:
$ LINUX_GIT="$LINUX_PATH" iproute2-import-uapi [commit]
Signed-off-by: Kory Maincent <kory.maincent@bootlin.com>
Signed-off-by: David Ahern <dsahern@kernel.org>
68 lines
1.7 KiB
Bash
Executable File
68 lines
1.7 KiB
Bash
Executable File
#!/bin/bash -e
|
|
#
|
|
# iproute2-import-uapi [commit]
|
|
#
|
|
# Imports sanitized copies of kernel uapi headers from <commit> (can be
|
|
# a commit id, a tag or a branch name). If the argument is omitted,
|
|
# commit currently checked out in the kernel repository is used.
|
|
|
|
sn="${0##*/}"
|
|
export ARCH="x86_64"
|
|
mkopt="-j$(nproc)" || mkopt=''
|
|
|
|
if [ ! -d "$LINUX_GIT" ]; then
|
|
echo "${sn}: please set LINUX_GIT to the location of kernel git" >&2
|
|
exit 1
|
|
fi
|
|
|
|
pushd "$LINUX_GIT"
|
|
if [ -n "$1" ]; then
|
|
git checkout "$1"
|
|
fi
|
|
desc=$(git describe --exact-match 2>/dev/null \
|
|
|| git show -s --abbrev=12 --pretty='%h: ("%s")')
|
|
kobj=$(mktemp -d)
|
|
make $mkopt O="$kobj" allmodconfig
|
|
make $mkopt O="$kobj" prepare
|
|
make $mkopt O="$kobj" INSTALL_HDR_PATH="${kobj}/hdr" headers_install
|
|
popd
|
|
|
|
pushd include/uapi
|
|
find . -type f -name '*.h' -exec cp -v "${kobj}/hdr/include/{}" {} \;
|
|
|
|
go_on=true
|
|
while $go_on; do
|
|
go_on=false
|
|
while read f; do
|
|
if [ "${f#asm/}" != "$f" ]; then
|
|
# skip architecture dependent asm/ headers
|
|
continue
|
|
fi
|
|
if [ -f "$f" ]; then
|
|
# already present
|
|
continue
|
|
fi
|
|
if [ ! -f "${kobj}/hdr/include/${f}" ]; then
|
|
# not a kernel header
|
|
continue
|
|
fi
|
|
echo "+ add $f"
|
|
go_on=true
|
|
mkdir -p "${f%/*}"
|
|
cp "${kobj}/hdr/include/${f}" "${f}"
|
|
done < <(
|
|
find . -type f -name '*.[ch]' -exec sed -nre '\_^[[:blank:]]*#include[[:blank:]]<.+>_ { s_^[[:blank:]]*#include[[:blank:]]<([^>]*)>.*$_\1_ ; p }' {} \; \
|
|
| LC_ALL=C sort -u
|
|
)
|
|
done
|
|
popd
|
|
rm -rf "$kobj"
|
|
|
|
git add include/uapi
|
|
git commit -s -F - <<EOT
|
|
Update kernel headers
|
|
|
|
Update kernel headers to commit:
|
|
${desc}
|
|
EOT
|