Commit Graph

8 Commits

Author SHA1 Message Date
Xi Ruoyao
7ebdf4e9f5
firmware: Use new kernel configuration rendering 2023-07-31 21:44:37 +08:00
Xi Ruoyao
4e37f01a45
kernel-config: Do not include kernel version in every generated file
This is stupid and it will cause meaningless diffs in version control
(like this commit does :( ).

Remove the kernel version from the generated XML files.  Add
kernel.version file into git to track the kernel version.
2023-07-31 21:44:37 +08:00
Xi Ruoyao
d67d543479
filesystems: Convert the remaining kernel configurations to use new rendering
I don't know these FS very well so I did not change things, except:

- "SCSI_LOW_LEVEL" should be "SCSI_LOWLEVEL" (without the "_" between
  "LOW" and "LEVEL").
- RAID append mode is deprecated, so I removed it.

And I've fixed some issues in kernel-config.py as well.
2023-07-31 21:44:36 +08:00
Xi Ruoyao
185ffd913f
kernel-config: Allow specifying non-module style forcing for tristate
instead of relying on unsound heuristic.
2023-07-31 21:44:36 +08:00
Xi Ruoyao
6af847b8dd
uefi: Use new kernel config
Fix an issue causing kernel-config.py not to process indented "source"
directive in Kconfig for this.
2023-07-31 21:44:36 +08:00
Xi Ruoyao
831ba20acd
kernel-config: Handle if/endif pairs in Kconfig, and allow to set "forced" attribute for options
For example, CONFIG_INPUT is forced w/o CONFIG_EXPERT.

libevdev kernel section needs these features to be rendered
successfully.
2023-07-31 21:44:36 +08:00
Xi Ruoyao
5ca8d70839
kernel-config: Allow setting comments for options, and convert Mesa 2023-07-31 21:44:35 +08:00
Xi Ruoyao
604355989a
Add kernel-config infrastructure
The kernel-config.py script takes a toml file containing a set of
kernel configuration key-value pairs.  Then it parses the Kconfig files
in a kernel source tree and render the given configuration as a
LFS-style <screen> in a separate XML file.  The XML file can be used in
the book with xinclude.

Some "features":

1. The lines are limited to 80 columns.
   If the text of the configuration option is too long, it will be
   trimmed; if the symbolic name of the option cannot fit in this line,
   a separate line will be used for it.
2. If a configuration option is given but it does not exist in Kconfig
   files, the script will abort immediately.  This helps catching
   removed options.
3. The script also aborts immediately if a configuration option is
   illegal, for example setting an option to 'M' while it cannot be a
   module.
4. The infrastructure is not wired into the main Makefile.  It's because
   not all editors have the latest kernel tree, and even if they do the
   locations of the kernel tree are still different.  To update the
   generated XML files, use
   "make -C kernel-config KERNEL_TREE=/sources/linux-x.y.z".

Backword incompatible change:

The script no longer outputs "CONFIG_" prefix for the symbolic name.  It
really does not make too much sense to waste 7 characters here because
it's a common prefix for all options!

A limitation:

The script does not really validate the configuration.  Generally
validating the configuration requires to solve the 3-CNF-SAT problem,
which is NP-complete.
2023-07-31 21:44:35 +08:00