58 lines
1.8 KiB
Bash
58 lines
1.8 KiB
Bash
#!/bin/sh -eu
|
|
|
|
mkdir "$AUTOPKGTEST_TMP"/foo
|
|
cat >"$AUTOPKGTEST_TMP"/foo/foo.c <<EOF
|
|
#include <linux/kernel.h>
|
|
#include <linux/module.h>
|
|
|
|
static int __init foo_init(void)
|
|
{
|
|
pr_info("foo initialised\n");
|
|
return 0;
|
|
}
|
|
module_init(foo_init);
|
|
|
|
static void __exit foo_exit(void)
|
|
{
|
|
}
|
|
module_exit(foo_exit);
|
|
|
|
MODULE_LICENSE("GPL");
|
|
EOF
|
|
cat >"$AUTOPKGTEST_TMP"/foo/Kbuild <<EOF
|
|
obj-m += foo.o
|
|
EOF
|
|
|
|
arch="$(dpkg --print-architecture)"
|
|
abiname="$(debian/bin/getconfig.py version abiname)"
|
|
if flavour="$(debian/bin/getconfig.py base $arch none quick-flavour)"; then
|
|
echo "I: Found quick flavour $flavour"
|
|
elif flavour="$(debian/bin/getconfig.py base $arch none default-flavour)"; then
|
|
echo "I: Found default flavour $flavour"
|
|
elif flavour="$(debian/bin/getconfig.py base $arch default-flavour)"; then
|
|
echo "I: Found default flavour $flavour"
|
|
else
|
|
echo >&2 "E: Failed to find quick or default flavour"
|
|
exit 1
|
|
fi
|
|
release="$abiname-$flavour"
|
|
|
|
echo "I: Build for $release"
|
|
# There are some warnings sent to stderr that we need to suppress,
|
|
# but any other output to stderr should be treated as a failure.
|
|
# We also want all stdout/stderr to appear in order in the log.
|
|
# First, duplicate stdout to fd 3
|
|
exec 3>&1
|
|
# Next, run the build with stdout sent to the original stdout and
|
|
# stderr sent through tee to both the original stdout and a file
|
|
make -C /lib/modules/"$release"/build M="$AUTOPKGTEST_TMP"/foo V=1 \
|
|
2>&1 1>&3 | tee "$AUTOPKGTEST_TMP"/foo/make.stderr
|
|
# Close fd 3
|
|
exec 3>&-
|
|
# Check for any stderr output that doesn't match the suppressions
|
|
if grep -q -v -E 'Skipping BTF generation .* due to unavailability of vmlinux' "$AUTOPKGTEST_TMP"/foo/make.stderr; then
|
|
echo >&2 "E: Unexpected warning/error messages"
|
|
fi
|
|
|
|
echo "I: Clean"
|
|
make -C /lib/modules/"$release"/build M="$AUTOPKGTEST_TMP"/foo V=1 clean
|