#!/bin/sh -eu mkdir "$AUTOPKGTEST_TMP"/foo cat >"$AUTOPKGTEST_TMP"/foo/foo.c < #include 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 <&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