kbuild: Abort build if SUBDIRS used
authorBen Hutchings <benh@debian.org>
Mon, 26 Apr 2021 16:27:16 +0000 (18:27 +0200)
committerSalvatore Bonaccorso <carnil@debian.org>
Fri, 25 Apr 2025 15:07:45 +0000 (17:07 +0200)
Forwarded: not-needed
Bug-Debian: https://bugs.debian.org/987575

DKMS and module-assistant both build OOT modules as root.  If they
build an old OOT module that still use SUBDIRS this causes Kbuild
to try building a full kernel, which obviously fails but not before
deleting files from the installed headers package.

To avoid such mishaps, detect this situation and abort the build.

The error message is based on that used in commit 0126be38d988
"kbuild: announce removal of SUBDIRS if used".

Gbp-Pq: Topic debian
Gbp-Pq: Name kbuild-abort-build-if-subdirs-used.patch

Makefile

index 7ef72e05653772e1a92f6f2ffeeab2f913b7d330..973f0a46c77421a6498d4290d4439ab4b1c40f2b 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -134,6 +134,18 @@ ifeq ("$(origin M)", "command line")
   KBUILD_EXTMOD := $(M)
 endif
 
+# Old syntax make ... SUBDIRS=$PWD should be rejected to avoid mishaps
+# (see Debian bugs #982334, #987575)
+ifndef KBUILD_EXTMOD
+  ifdef SUBDIRS
+    $(warning =============== ERROR ==============)
+    $(warning 'SUBDIRS' was removed in Linux 5.3)
+    $(warning Use 'M=' or 'KBUILD_EXTMOD=' instead)
+    $(warning ====================================)
+    $(error .)
+  endif
+endif
+
 $(if $(word 2, $(KBUILD_EXTMOD)), \
        $(error building multiple external modules is not supported))