On 15 Nov 2022, Luis Chamberlain uttered the following: > On Mon, Nov 14, 2022 at 05:49:58PM +0000, Nick Alcock wrote: >> On 11 Nov 2022, Luis Chamberlain outgrape: >> >> > On Fri, Nov 11, 2022 at 01:47:03PM +0000, Nick Alcock wrote: >> >> +arch/x86/crypto/libblake2s-x86_64.o: arch/x86/crypto/blake2s-core.o arch/x86/crypto/blake2s-glue.o >> >> >> >> But... >> >> >> >> obj-$(CONFIG_CRYPTO_BLAKE2S_X86) += libblake2s-x86_64.o >> >> libblake2s-x86_64-y := blake2s-core.o blake2s-glue.o >> >> >> >> config CRYPTO_BLAKE2S_X86 >> >> bool "Hash functions: BLAKE2s (SSSE3/AVX-512)" >> >> >> >> This cannot be built as a module. >> > >> > mcgrof@fulton ~/linux (git::modules-next)$ git grep MODULE_LICENSE arch/x86/crypto/blake2s-* >> > arch/x86/crypto/blake2s-glue.c:MODULE_LICENSE("GPL v2"); >> > >> > Try removing that. >> >> OK, that works! >> >> So if we're using the presence of MODULE_LICENSE to indicate that >> something is potentially modular, I guess this means I need to do a >> sweep through the kernel and find everywhere that cites a MODULE_LICENSE >> and cannot be built as a module before this will say things are modules >> that really are. > > Yes, make allyesconfig builds + a verifier for tristate would be nice. > scripts/kconfig/streamline_config.pl has an iterator over kconfig files > and also objects which you might find useful. > > At build time such a thing could nag about issues like the above. OK, I've got enough of this working now that weird edge cases are popping out and it's starting to become fun rather than frustrating! Some of them are bugs in the tristate-checker side of things, e.g. in net/bridge/Makefile we see bridge-$(subst m,y,$(CONFIG_BRIDGE_NETFILTER)) += br_nf_core.o and my code is tripping over because while it runs CONFIG_BRIDGE_NETFILTER comes from tristate.conf and has an uppercase value. This sort of thing is rare (a dozen cases at most across the tree) and easily fixable in the individual makefiles as part of the tristate checker commit, so I'll just do that. But some are I think obscure bugs in the new machinery. e.g. in security/keys/encrypted-keys/Makefile we have this wonderfully crazy thing: masterkey-$(CONFIG_TRUSTED_KEYS)-$(CONFIG_ENCRYPTED_KEYS) := masterkey_trusted.o This produces things that look like masterkey-y-y, which does not match $(modname)-y. I'll come up with a more complete list shortly (a make allyesconfig is spinning now). We can probably hack around these by also expanding $(modname)-y-y etc, for as many steps out as it seems people are actually doing in the tree right now. I can submit a patch that does that if you like. (If there's a less gross and fragile approach, I'd be happy to do that instead.) One question: do you think it's worthwhile me submitting patches to de-MODULE_* things that need it? It looks like I need to tear all the MODULE_ lines out before the .modinfo section goes away and this gives accurate results. This isn't actually deleting copyright lines, but it's making me a bit worried anyway: it feels morally equivalent somehow. Is it actually considered OK to just delete MODULE_LICENSE, MODULE_AUTHOR etc for non-modules when they were written by someone else? (Commenting them out, leaving them as documentation, is presumably less likely to anger people but might be considered ugly.)