A utility for finding, recording and checking required kernel symbols are set when configuring Linux kernels.
The drive behind this project is that, as a Gentoo user, I am often configuring or reconfiguring my system kernel, whether it be for upgrades, switching kernel sources, or on new machines. In doing this, there are various kernel symbols that I know I will need, however with a memory as sieve-like as mine, their names often elude me, and finding what is required can be a difficult task. Therefore, rather than trying to remember what I need to include, or having scraps of paper floating around with random scribbles on them, or even littering my filesystem with notes on this symbol and that, I decided to write a tool to keep them all together and tell me when I've forgotten something.
The concept is pretty simple: a single configuration file contains a list of all the kernel symbols I should have enabled, from things like CONFIG_USB_XHCI_HCI for USB support, to CONFIG_USB_PRINTER for printing. Along with each symbol, I note what state it needs to be in - whether built-in, built as a module, or not built (or, if I don't care, simply "enabled"). It then, on demand, checks the kernel configuration for whether those symbols are set to the value(s) I have noted they should be.
As a bonus to this, and as an ongoing development, on Gentoo Linux systems using Portage as the package manager, it can have a look at the installed packages on your system and find any that check for specific symbols - such as net-print/cups checking that CONFIG_USB_PRINTER is enabled. It will record these symbols into a config file, along with a note of which ebuild they came from, to be included in the main configuration file and checked later. This integration is at a very basic stage, however I intend to make it a little more thorough in its checking.
Support for similar functions for other package managers may come along as well, should there be a need for it.
Lastly, and as something that seems to be surprisingly lacking in the from-source Linux community, I hope to include functionality to assist in finding which kernel symbols may need to be enabled for your specific hardware - no more "fail booting, boot the old kernel, change an option and rebuild the new kernel, reboot, rinse and repeat", no more "just build everything", simply "what drivers do I need for this system". This is inspired by the Debian HCL List which performs similar functionality online.
For more information about the package, instructions on how to use it, or to browse (and, possibly, contribute to) the code, check out the repository linked below.