summaryrefslogtreecommitdiff
path: root/util/kconfig/patches/0007-kconfig-Allow-KCONFIG_STRICT-outside-of-confdata.c.patch
diff options
context:
space:
mode:
Diffstat (limited to 'util/kconfig/patches/0007-kconfig-Allow-KCONFIG_STRICT-outside-of-confdata.c.patch')
-rw-r--r--util/kconfig/patches/0007-kconfig-Allow-KCONFIG_STRICT-outside-of-confdata.c.patch189
1 files changed, 189 insertions, 0 deletions
diff --git a/util/kconfig/patches/0007-kconfig-Allow-KCONFIG_STRICT-outside-of-confdata.c.patch b/util/kconfig/patches/0007-kconfig-Allow-KCONFIG_STRICT-outside-of-confdata.c.patch
new file mode 100644
index 0000000000..1af5e0112b
--- /dev/null
+++ b/util/kconfig/patches/0007-kconfig-Allow-KCONFIG_STRICT-outside-of-confdata.c.patch
@@ -0,0 +1,189 @@
+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)