summaryrefslogtreecommitdiffstats
path: root/debian/tests/kbuild
blob: 18cbe214e8c81c477629a6795c3c0d6b2f7539a2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
#!/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