On Thu, Feb 23, 2023 at 03:31:50PM +0000, Nick Alcock wrote: > On 22 Feb 2023, Luis Chamberlain spake thusly: > > Then we look for an optimal way to address the final step: > > > > * remove all MODULE_LICENSE() and autogenerate them from SPDX > > Ooh that would be nice! > > > The difficulty in this will be that we want to upkeep existing build > > heuristics and avoid to have to traverse the tree twice (see details > > on commit 8b41fc4454e). I can't think of an easy way to do this that > > does not involve using kconfig tristate somehow. > > Nor can I -- and more generally I can't figure out a way to get from the > Kconfig symbols to the source files that constitute them without > retraversing the tree, since the only place the relationship is recorded > is in makefiles, and those makefiles use a lot of make functionality > (including more or less arbitrary make functions). $ grep "_MODULE 1" ./include/generated/autoconf.h| wc -l 560 $ grep "_MODULE 1" ./include/generated/autoconf.h| grep XFS #define CONFIG_XFS_FS_MODULE 1 I *think* the trick will likely be to have new a possibilities.h or just agument autoconf.h with POSSIBLE_MODULE for each module. The next complexity lies in inferring the license and doing the license output given a combination. I *think* you already figured out the objs from the module, and in fact your new kallsyms extension I think prints these out right (which I find highly useful)? If so then we use these as input source for an SPDX license lookup. Instead of having this relationship grep'd after at build time, I wonder if might be good to just collect all license associates to all files in a header file similar to _MODULE prefix so maybe SPDX_$(file_path)_LICENSE_$license which creates a header file 1-1 mapping. Not sure if that's too much noise. Just a thought, to get the wheels spinning. Luis