Kernel build system broken in 5.8?

From: Martin Burnicki
Date: Tue Aug 18 2020 - 12:14:36 EST


Hi,

I'm the maintainer of a driver package for some PCI cards (GPS receiver
cards, etc.). A read-only git repo of the driver package can be found here:
https://git.meinbergglobal.com/mbgtools-lx.git

The kernel driver from that package is compiled as out-of-tree module,
and runs fine on kernels 2.6, 3.x, 4.x, and 5.x up to 5.7, actually
5.7.15 on Ubuntu.

However, if I try this on kernel 5.8.1, I get strange errors related to
autoconf.h, which make it impossible to compile or install the kernel
module.

I usually build the kernel module as standard user, and only install the
new module as root, e.g.:

git checkout devel # The 'devel' branch is appropriate for testing
cd mbgclock # the subdirectory of the kernel module
git clean -fd; make # or make V=1 for verbose output
sudo make install

Also, I was under the impression that the kernel source tree should be
read-only, and kept clean, but this doesn't seem to be the case anymore.


For example:

On Ubuntu 19.10 with kernel 5.8.1-050801-generic from
https://kernel.ubuntu.com/~kernel-ppa/mainline/v5.8.1/

'make' completes without error, even if run as normal user without write
permissions in the kernel source tree.

'sudo insmod ./mbgclock.ko' loads the module successfully, and the PCI
card can be accessed as usually, e.g. using the 'mbgstatus' program, so
the compiled kernel module is OK.

BUT: Once I run 'sudo make install', which calls the kernel build system
to make 'modules_install', I immediately get an error:

-------------------------------------------------------------------------
Calling kernel build system to make "modules_install"
make[1]: Entering directory '/usr/src/linux-headers-5.8.1-050801-generic'

ERROR: Kernel configuration is invalid.
include/generated/autoconf.h or include/config/auto.conf are
missing.
Run 'make oldconfig && make prepare' on kernel src to fix it.

make[1]: *** [Makefile:719: include/config/auto.conf] Error 1
make[1]: Leaving directory '/usr/src/linux-headers-5.8.1-050801-generic'
make: *** [/home/martin/projects/mbgtools-lx/mbgclock/../Makefile:834:
install_module] Error 2
-------------------------------------------------------------------------

And once this has happened, this problem persists, i.e., if I run the
same commands

git clean -fd; make

once more, as normal user as mentioned above, I get the error above
every time.

Also, If I initially try to build the kernel kernel module as root, with
'sudo':

git clean -fd; sudo make

I immediately get this error, and the module is not built. Only after I
have re-installed the kernel headers package, I can compile the module
again.


A diff between the kernel header files before and after the kernel build
system has been messed up shows that the following files have changed:

include/generated/autoconf.h
scripts/basic/.fixdep.cmd
scripts/basic/fixdep
scripts/kconfig/.conf.o.cmd
scripts/kconfig/.confdata.o.cmd
scripts/kconfig/.expr.o.cmd
scripts/kconfig/.lexer.lex.c.cmd
scripts/kconfig/conf.o
scripts/kconfig/confdata.o
scripts/kconfig/expr.o
scripts/kconfig/lexer.lex.c
scripts/kconfig/parser.tab.c

Specifically, autoconf.h has been deleted even though some script
obviously still requires that the file is available.


With openSUSE Leap 15.2 and kernel 5.8.1 from
https://download.opensuse.org/repositories/Kernel:/stable/standard/

I've encountered similar problems because include/generated/autoconf.h
is not even available after installation of the kernel headers package.

Only on Arch Linux with kernel 5.8.1-arch1-1 I can build and install the
module as root or standard user, as it was possible with earlier kernel
versions.

Can someone please shed some light on what's going on here?


Thanks,

Martin
--
Martin Burnicki

Senior Software Engineer

MEINBERG Funkuhren GmbH & Co. KG
Email: martin.burnicki@xxxxxxxxxxx
Phone: +49 5281 9309-414
Linkedin: https://www.linkedin.com/in/martinburnicki/

Lange Wand 9, 31812 Bad Pyrmont, Germany
Amtsgericht Hannover 17HRA 100322
Geschäftsführer/Managing Directors: Günter Meinberg, Werner Meinberg,
Andre Hartmann, Heiko Gerstung
Websites: https://www.meinberg.de https://www.meinbergglobal.com
Training: https://www.meinberg.academy