coreboot-kgpe-d16/util/kconfig
Patrick Georgi 1cc6c54d9f build system: Exempt `make *config` from strict symbol checks
The "config" targets exist to edit the .config file, and so they
should be more forgiving with invalid configs (that they'll convert
into valid configs on save). They will still emit warnings about
invalid symbols, but not exit with an error.

The regular build process still fails if the .config looks unexpected
(for example when there's an unknown config flag).

Change-Id: If427e075766c68d493dd406609f21b6bb27d1d74
Signed-off-by: Patrick Georgi <patrick@coreboot.org>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/79298
Reviewed-by: Mike Banon <mikebdp2@gmail.com>
Reviewed-by: Felix Singer <service+coreboot-gerrit@felixsinger.de>
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Martin L Roth <gaumless@gmail.com>
2023-11-30 17:45:50 +00:00
..
lxdialog util/kconfig: Uprev to Linux 6.6's kconfig 2023-11-25 14:51:41 +00:00
patches util/kconfig: Uprev to Linux 6.6's kconfig 2023-11-25 14:51:41 +00:00
.gitignore util/kconfig: Uprev to Linux 6.2's kconfig 2023-11-24 16:50:00 +00:00
Makefile util/kconfig: Uprev to Linux 6.6's kconfig 2023-11-25 14:51:41 +00:00
Makefile.inc build system: Exempt `make *config` from strict symbol checks 2023-11-30 17:45:50 +00:00
README.md util/kconfig: Fix README.md formatting 2023-10-31 17:06:04 +00:00
conf.c util/kconfig: Uprev to Linux 6.6's kconfig 2023-11-25 14:51:41 +00:00
confdata.c util/kconfig: Uprev to Linux 6.6's kconfig 2023-11-25 14:51:41 +00:00
description.md
expr.c
expr.h util/kconfig: Uprev to Linux 6.6's kconfig 2023-11-25 14:51:41 +00:00
gconf-cfg.sh util/kconfig: Uprev to Linux 6.2's kconfig 2023-11-24 16:50:00 +00:00
gconf.c util/kconfig: Uprev to Linux 6.5's kconfig 2023-11-24 16:50:27 +00:00
gconf.glade
images.c
images.h
internal.h
lexer.l util/kconfig: Uprev to Linux 5.16's kconfig 2022-10-30 08:45:52 +00:00
lexer.lex.c_shipped
list.h
lkc.h util/kconfig: Uprev to Linux 6.6's kconfig 2023-11-25 14:51:41 +00:00
lkc_proto.h util/kconfig: Uprev to Linux 5.16's kconfig 2022-10-30 08:45:52 +00:00
mconf-cfg.sh util/kconfig: Uprev to Linux 6.2's kconfig 2023-11-24 16:50:00 +00:00
mconf.c util/kconfig: Uprev to Linux 6.6's kconfig 2023-11-25 14:51:41 +00:00
menu.c util/kconfig: Uprev to Linux 6.6's kconfig 2023-11-25 14:51:41 +00:00
merge_config.sh util/kconfig: Uprev to Linux 6.3's kconfig 2023-11-24 16:50:09 +00:00
nconf-cfg.sh util/kconfig: Uprev to Linux 6.2's kconfig 2023-11-24 16:50:00 +00:00
nconf.c util/kconfig: Uprev to Linux 6.6's kconfig 2023-11-25 14:51:41 +00:00
nconf.gui.c util/kconfig: Uprev to Linux 6.6's kconfig 2023-11-25 14:51:41 +00:00
nconf.h util/kconfig: Uprev to Linux 6.6's kconfig 2023-11-25 14:51:41 +00:00
parser.tab.c_shipped
parser.tab.h_shipped
parser.y
preprocess.c util/kconfig: Uprev to Linux 6.6's kconfig 2023-11-25 14:51:41 +00:00
qconf-cfg.sh util/kconfig: Uprev to Linux 6.6's kconfig 2023-11-25 14:51:41 +00:00
qconf.cc util/kconfig: Uprev to Linux 6.6's kconfig 2023-11-25 14:51:41 +00:00
qconf.h
regex.c
regex.h
streamline_config.pl util/kconfig: Uprev to Linux 6.5's kconfig 2023-11-24 16:50:27 +00:00
symbol.c util/kconfig: Uprev to Linux 6.6's kconfig 2023-11-25 14:51:41 +00:00
toada.c util/kconfig: Update toada to halt on errors 2023-08-27 11:23:28 +00:00
util.c util/kconfig: Uprev to Linux 6.2's kconfig 2023-11-24 16:50:00 +00:00

README.md

coreboot kconfig

This is coreboot's copy of kconfig which tracks Linux as upstream but comes with a few patches for portability but also a few semantic changes.

The patches that lead to this tree can be found in the patches/ subdirectory in a quilt friendly format that is also simple enough to manage manually with Unix tooling.

Updating kconfig

The first step is to unapply the patches. This can either be done with quilt in an already-configured tree (quilt pop -a should cleanly unapply them all) or manually if quilt doesn't have its tracking metadata around yet:

for i in $( ls patches/*.patch | tac ); do patch -p1 -R -i "$i"; done

The result should be a subtree that, apart from a few coreboot specific files on our side (e.g. documentation, integration in our build system) and a few files on the upstream end that we don't carry (e.g. the tests), is identical to the scripts/kconfig/ directory of Linux as of the most recent uprev we did. Check the uprev version by looking through git log util/kconfig output in our tree.

Assuming that you want to uprev from Linux 5.13 to 5.14, with a Linux git tree available in ~/linux

cd util/kconfig && (cd ~/linux/ && git diff v5.13..v5.14 scripts/kconfig) | patch -p2`

applies the changes to your local tree.

Then reapply our patch train, which might be as simple as quilt push -a --refresh but might also require some meddling with the patches to make them apply again with the changes you just imported from Linux.

Check that kconfig still works, git add and git commit the changes and write a meaningful commit message that documents what Linux kconfig version the tree has been upreved to.

Adding a new patch

The format of the patches to kconfig is a mix of the headers produced by git format-patch and the patch format of quilt. However neither git nor quilt seems to have any functionality to directly produce a file in such a format

To add a patch in this format:

  1. Add your changes to the sources and git commit them

  2. Generate a git patch for the commit:

    $ git format-patch HEAD~

  3. Reverse apply the newly created patch file to restore the tree back to the state quilt thinks it is in:

    $ git apply -R

  4. Import the patch info quilt:

    $ quilt import

  5. Force push the change to the top of quilt's patch stack (quilt won't like the git diff style and would normally refuse to apply the patch):

    $ quilt push -f

  6. Add the changed files to be tracked against the quilt:

    $ quilt add

  7. Re-apply your changes from the patch file:

    $ git apply

  8. Add the changes to quilt to regenerate the patch file in a quilt compatible format while keeping the git header:

    $ quilt refresh

  9. The new patch file and updated patches/series files can now be added to the git commit