coreboot-kgpe-d16/util/kconfig/patches/0007-kconfig-Allow-KCONFIG_STRICT-outside-of-confdata.c.patch
Patrick Georgi 53ea1d44f0 util/kconfig: Uprev to Linux 5.13's kconfig
This was originally several commits that had to be squashed into one
because the intermediate states weren't able to build coreboot:

 - one to remove everything that wasn't our own code, leaving only
   regex.[ch], toada.c, description.md and Makefile.inc.
 - one to copy in Linux 5.13's scripts/kconfig and adapt Makefile.inc
   to make the original Makefile work again.
 - adapt abuild to use olddefconfig, simplifying matters.
 - apply patches in util/kconfig/patches.
 - Some more adaptations to the libpayload build system.

The patches are now in util/kconfig/patches/, reverse applying them
should lead to a util/kconfig/ tree that contains exactly the Linux
version + our own 5 files.

Change-Id: Ia0e8fe4e9022b278f34ab113a433ef4d45e5c355
Signed-off-by: Patrick Georgi <pgeorgi@google.com>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/37152
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Raul Rangel <rrangel@chromium.org>
2021-07-13 20:28:14 +00:00

189 lines
4.8 KiB
Diff

From af6c23be63d14860c8c1f0d9fcbc020f7c11d84d Mon Sep 17 00:00:00 2001
From: Stefan Reinauer <reinauer@chromium.org>
Date: Thu, 20 Aug 2015 11:19:34 -0700
Subject: [PATCH] kconfig: Allow KCONFIG_STRICT outside of confdata.c
To catch dependency errors in symbol.c (such as the ones
fixed by I51b4ee326f082c6a656a813ee5772e9c34f5c343) we need
to check for global kconfig warnings before saving config
files.
This patch will produce errors for wrong dependencies and
add catching of errors to conf, nconf and mconf. Sorry,
gconf users, you will have to wait.
Signed-off-by: Stefan Reinauer <stefan.reinauer@coreboot.org>
---
util/kconfig/conf.c | 10 ++++++++++
util/kconfig/confdata.c | 6 +-----
util/kconfig/lkc.h | 3 +++
util/kconfig/mconf.c | 10 ++++++++++
util/kconfig/nconf.c | 13 +++++++++++++
util/kconfig/qconf.cc | 2 ++
util/kconfig/symbol.c | 1 +
7 files changed, 40 insertions(+), 5 deletions(-)
Index: kconfig/conf.c
===================================================================
--- kconfig.orig/conf.c
+++ kconfig/conf.c
@@ -16,6 +16,8 @@
#include "lkc.h"
+int kconfig_warnings = 0;
+
static void conf(struct menu *menu);
static void check_conf(struct menu *menu);
@@ -732,6 +734,7 @@ int main(int ac, char **av)
const char *progname = av[0];
int opt;
const char *name, *defconfig_file = NULL /* gcc uninit */;
+ char *env;
int no_conf_write = 0;
tty_stdio = isatty(0) && isatty(1);
@@ -838,6 +841,13 @@ int main(int ac, char **av)
break;
}
+ env = getenv("KCONFIG_STRICT");
+ if (env && *env && kconfig_warnings) {
+ fprintf(stderr, "\n*** ERROR: %d warnings encountered, and "
+ "warnings are errors.\n\n", kconfig_warnings);
+ exit(1);
+ }
+
if (sync_kconfig) {
name = getenv("KCONFIG_NOSILENTUPDATE");
if (name && *name) {
Index: kconfig/confdata.c
===================================================================
--- kconfig.orig/confdata.c
+++ kconfig/confdata.c
@@ -539,11 +539,7 @@ load:
free(line);
fclose(in);
- name = getenv("KCONFIG_STRICT");
- if (name && *name && conf_warnings) {
- fprintf(stderr, "\nERROR: %d warnings encountered, and warnings are errors.\n\n", conf_warnings);
- return 1;
- }
+ kconfig_warnings += conf_warnings;
return 0;
}
Index: kconfig/lkc.h
===================================================================
--- kconfig.orig/lkc.h
+++ kconfig/lkc.h
@@ -39,6 +39,9 @@ void zconf_nextfile(const char *name);
int zconf_lineno(void);
const char *zconf_curname(void);
+/* conf.c */
+extern int kconfig_warnings;
+
/* confdata.c */
const char *conf_get_configname(void);
void set_all_choice_values(struct symbol *csym);
Index: kconfig/mconf.c
===================================================================
--- kconfig.orig/mconf.c
+++ kconfig/mconf.c
@@ -24,6 +24,8 @@
#define JUMP_NB 9
+int kconfig_warnings = 0;
+
static const char mconf_readme[] =
"Overview\n"
"--------\n"
@@ -948,6 +950,7 @@ static void conf_save(void)
static int handle_exit(void)
{
int res;
+ char *env;
save_and_exit = 1;
reset_subtitle();
@@ -962,6 +965,13 @@ static int handle_exit(void)
end_dialog(saved_x, saved_y);
+ env = getenv("KCONFIG_STRICT");
+ if (env && *env && kconfig_warnings) {
+ fprintf(stderr, "\n*** ERROR: %d warnings encountered, and "
+ "warnings are errors.\n\n", kconfig_warnings);
+ res = 2;
+ }
+
switch (res) {
case 0:
if (conf_write(filename)) {
Index: kconfig/nconf.c
===================================================================
--- kconfig.orig/nconf.c
+++ kconfig/nconf.c
@@ -15,6 +15,8 @@
#include "nconf.h"
#include <ctype.h>
+int kconfig_warnings = 0;
+
static const char nconf_global_help[] =
"Help windows\n"
"------------\n"
@@ -645,6 +647,8 @@ static void set_config_filename(const ch
static int do_exit(void)
{
int res;
+ char *env;
+
if (!conf_get_changed()) {
global_exit = 1;
return 0;
@@ -660,6 +664,15 @@ static int do_exit(void)
return -1;
}
+ env = getenv("KCONFIG_STRICT");
+ if (env && *env && kconfig_warnings) {
+ btn_dialog(main_window,
+ "\nWarnings encountered, and warnings are errors.\n\n",
+ 1,
+ "<OK>");
+ res = 2;
+ }
+
/* if we got here, the user really wants to exit */
switch (res) {
case 0:
Index: kconfig/qconf.cc
===================================================================
--- kconfig.orig/qconf.cc
+++ kconfig/qconf.cc
@@ -26,6 +26,8 @@
#include "images.h"
+int kconfig_warnings = 0;
+
static QApplication *configApp;
static ConfigSettings *configSettings;
Index: kconfig/symbol.c
===================================================================
--- kconfig.orig/symbol.c
+++ kconfig/symbol.c
@@ -319,6 +319,7 @@ static void sym_warn_unmet_dep(struct sy
" Selected by [m]:\n");
fputs(str_get(&gs), stderr);
+ kconfig_warnings++;
}
void sym_calc_value(struct symbol *sym)