From a7d6f6e407d617da7a3cda8865e593523eb6ee80 Mon Sep 17 00:00:00 2001 From: Peter Foley Date: Sat, 22 Oct 2011 13:19:02 -0400 Subject: kconfig: fix warnings by specifing format arguments Specify format arguments to fix warnings. HOSTCC scripts/kconfig/gconf.o /usr/src/lto/scripts/kconfig/gconf.c: In function 'on_introduction1_activate': /usr/src/lto/scripts/kconfig/gconf.c:686:6: warning: format not a string literal and no format arguments /usr/src/lto/scripts/kconfig/gconf.c: In function 'on_about1_activate': /usr/src/lto/scripts/kconfig/gconf.c:704:6: warning: format not a string literal and no format arguments /usr/src/lto/scripts/kconfig/gconf.c: In function 'on_license1_activate': /usr/src/lto/scripts/kconfig/gconf.c:723:6: warning: format not a string literal and no format arguments Signed-off-by: Peter Foley Signed-off-by: Michal Marek --- scripts/kconfig/gconf.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'scripts') diff --git a/scripts/kconfig/gconf.c b/scripts/kconfig/gconf.c index 9f4438027df4..b9e26a56c45d 100644 --- a/scripts/kconfig/gconf.c +++ b/scripts/kconfig/gconf.c @@ -683,7 +683,7 @@ void on_introduction1_activate(GtkMenuItem * menuitem, gpointer user_data) dialog = gtk_message_dialog_new(GTK_WINDOW(main_wnd), GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_INFO, - GTK_BUTTONS_CLOSE, intro_text); + GTK_BUTTONS_CLOSE, "%s", intro_text); g_signal_connect_swapped(GTK_OBJECT(dialog), "response", G_CALLBACK(gtk_widget_destroy), GTK_OBJECT(dialog)); @@ -701,7 +701,7 @@ void on_about1_activate(GtkMenuItem * menuitem, gpointer user_data) dialog = gtk_message_dialog_new(GTK_WINDOW(main_wnd), GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_INFO, - GTK_BUTTONS_CLOSE, about_text); + GTK_BUTTONS_CLOSE, "%s", about_text); g_signal_connect_swapped(GTK_OBJECT(dialog), "response", G_CALLBACK(gtk_widget_destroy), GTK_OBJECT(dialog)); @@ -720,7 +720,7 @@ void on_license1_activate(GtkMenuItem * menuitem, gpointer user_data) dialog = gtk_message_dialog_new(GTK_WINDOW(main_wnd), GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_INFO, - GTK_BUTTONS_CLOSE, license_text); + GTK_BUTTONS_CLOSE, "%s", license_text); g_signal_connect_swapped(GTK_OBJECT(dialog), "response", G_CALLBACK(gtk_widget_destroy), GTK_OBJECT(dialog)); -- cgit v1.2.3-58-ga151 From 4f0c28f77932c51ba7639a6174047ec8c6560116 Mon Sep 17 00:00:00 2001 From: Peter Foley Date: Sat, 22 Oct 2011 14:01:24 -0400 Subject: kconfig: fix set but not used warnings Remove set but not used variables to fix warnings. HOSTCC scripts/kconfig/gconf.o /usr/src/lto/scripts/kconfig/gconf.c: In function 'change_sym_value': /usr/src/lto/scripts/kconfig/gconf.c:833:11: warning: variable 'oldval' set but not used [-Wunused-but-set-variable] /usr/src/lto/scripts/kconfig/gconf.c: In function 'update_tree': /usr/src/lto/scripts/kconfig/gconf.c:1281:19: warning: variable 'prop' set but not used [-Wunused-but-set-variable] Signed-off-by: Peter Foley Signed-off-by: Michal Marek --- scripts/kconfig/gconf.c | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) (limited to 'scripts') diff --git a/scripts/kconfig/gconf.c b/scripts/kconfig/gconf.c index b9e26a56c45d..adc230638c5b 100644 --- a/scripts/kconfig/gconf.c +++ b/scripts/kconfig/gconf.c @@ -830,7 +830,7 @@ static void renderer_edited(GtkCellRendererText * cell, static void change_sym_value(struct menu *menu, gint col) { struct symbol *sym = menu->sym; - tristate oldval, newval; + tristate newval; if (!sym) return; @@ -847,7 +847,6 @@ static void change_sym_value(struct menu *menu, gint col) switch (sym_get_type(sym)) { case S_BOOLEAN: case S_TRISTATE: - oldval = sym_get_tristate_value(sym); if (!sym_tristate_within_range(sym, newval)) newval = yes; sym_set_tristate_value(sym, newval); @@ -1278,7 +1277,6 @@ static void update_tree(struct menu *src, GtkTreeIter * dst) gboolean valid; GtkTreeIter *sibling; struct symbol *sym; - struct property *prop; struct menu *menu1, *menu2; if (src == &rootmenu) @@ -1287,7 +1285,6 @@ static void update_tree(struct menu *src, GtkTreeIter * dst) valid = gtk_tree_model_iter_children(model2, child2, dst); for (child1 = src->list; child1; child1 = child1->next) { - prop = child1->prompt; sym = child1->sym; reparse: -- cgit v1.2.3-58-ga151 From 70cc01e7579cdb71f42f3f7085ab457be7808783 Mon Sep 17 00:00:00 2001 From: Peter Foley Date: Sat, 22 Oct 2011 10:48:49 -0400 Subject: kconfig: use xfwrite wrapper function to silence warnings Use the xfwrite wrapper function defined in lkc.h to check the return value of fwrite and silence these warnings. HOSTCC scripts/kconfig/zconf.tab.o scripts/kconfig/zconf.tab.c: In function 'header_print_comment': /usr/src/lto/scripts/kconfig/confdata.c:551:10: warning: ignoring return value of 'fwrite', declared with attribute warn_unused_result scripts/kconfig/zconf.tab.c: In function 'kconfig_print_comment': /usr/src/lto/scripts/kconfig/confdata.c:467:10: warning: ignoring return value of 'fwrite', declared with attribute warn_unused_result Signed-off-by: Peter Foley Signed-off-by: Michal Marek --- scripts/kconfig/confdata.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'scripts') diff --git a/scripts/kconfig/confdata.c b/scripts/kconfig/confdata.c index 5a58965d8800..7c7a5a6cc3f5 100644 --- a/scripts/kconfig/confdata.c +++ b/scripts/kconfig/confdata.c @@ -464,7 +464,7 @@ kconfig_print_comment(FILE *fp, const char *value, void *arg) fprintf(fp, "#"); if (l) { fprintf(fp, " "); - fwrite(p, l, 1, fp); + xfwrite(p, l, 1, fp); p += l; } fprintf(fp, "\n"); @@ -537,7 +537,7 @@ header_print_comment(FILE *fp, const char *value, void *arg) fprintf(fp, " *"); if (l) { fprintf(fp, " "); - fwrite(p, l, 1, fp); + xfwrite(p, l, 1, fp); p += l; } fprintf(fp, "\n"); -- cgit v1.2.3-58-ga151 From 4b5f72145e3ba85e38240dba844ebe1fcbb73713 Mon Sep 17 00:00:00 2001 From: john stultz Date: Tue, 10 Jan 2012 15:41:08 -0800 Subject: kconfig: add merge_config.sh script After noticing almost every distro has their own method of managing config fragments, I went looking at some best practices, and wanted to try to consolidate some of the different approaches so this fairly simple infrastructure can be shared (and new distros/build systems don't have to implement yet another config fragment merge script). This script is most influenced by the Windriver tools used in the Yocto Project, reusing some portions found there. This script merges multiple config fragments, warning on any overridden values. It then sets any unspecified values to their default, then finally checks to make sure no specified value was dropped due to unsatisfied dependencies. I'm sure this implementation won't work for everyone, and I expect it will need to evolve to adapt for various use cases. But I think its a reasonable starting point. Cc: Sam Ravnborg Cc: Greg Thelen Cc: Reinhard Tartler Cc: Dmitry Fink Cc: Darren Hart Cc: Eric B Munson Cc: Bruce Ashfield Cc: Michal Marek Signed-off-by: John Stultz Signed-off-by: Andrew Morton Signed-off-by: Michal Marek --- scripts/kconfig/merge_config.sh | 117 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 117 insertions(+) create mode 100644 scripts/kconfig/merge_config.sh (limited to 'scripts') diff --git a/scripts/kconfig/merge_config.sh b/scripts/kconfig/merge_config.sh new file mode 100644 index 000000000000..890276bd1e67 --- /dev/null +++ b/scripts/kconfig/merge_config.sh @@ -0,0 +1,117 @@ +#!/bin/sh +# merge_config.sh - Takes a list of config fragment values, and merges +# them one by one. Provides warnings on overridden values, and specified +# values that did not make it to the resulting .config file (due to missed +# dependencies or config symbol removal). +# +# Portions reused from kconf_check and generate_cfg: +# http://git.yoctoproject.org/cgit/cgit.cgi/yocto-kernel-tools/tree/tools/kconf_check +# http://git.yoctoproject.org/cgit/cgit.cgi/yocto-kernel-tools/tree/tools/generate_cfg +# +# Copyright (c) 2009-2010 Wind River Systems, Inc. +# Copyright 2011 Linaro +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License version 2 as +# published by the Free Software Foundation. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License for more details. + +clean_up() { + rm -f $TMP_FILE + exit +} +trap clean_up SIGHUP SIGINT SIGTERM + +usage() { + echo "Usage: $0 [OPTIONS] [CONFIG [...]]" + echo " -h display this help text" + echo " -m only merge the fragments, do not execute the make command" + echo " -n use allnoconfig instead of alldefconfig" +} + +MAKE=true +ALLTARGET=alldefconfig + +while true; do + case $1 in + "-n") + ALLTARGET=allnoconfig + shift + continue + ;; + "-m") + MAKE=false + shift + continue + ;; + "-h") + usage + exit + ;; + *) + break + ;; + esac +done + + + +MERGE_LIST=$* +SED_CONFIG_EXP="s/^\(# \)\{0,1\}\(CONFIG_[a-zA-Z0-9_]*\)[= ].*/\2/p" +TMP_FILE=$(mktemp ./.tmp.config.XXXXXXXXXX) + +# Merge files, printing warnings on overrided values +for MERGE_FILE in $MERGE_LIST ; do + echo "Merging $MERGE_FILE" + CFG_LIST=$(sed -n "$SED_CONFIG_EXP" $MERGE_FILE) + + for CFG in $CFG_LIST ; do + grep -q -w $CFG $TMP_FILE + if [ $? -eq 0 ] ; then + PREV_VAL=$(grep -w $CFG $TMP_FILE) + NEW_VAL=$(grep -w $CFG $MERGE_FILE) + if [ "x$PREV_VAL" != "x$NEW_VAL" ] ; then + echo Value of $CFG is redefined by fragment $MERGE_FILE: + echo Previous value: $PREV_VAL + echo New value: $NEW_VAL + echo + fi + sed -i "/$CFG[ =]/d" $TMP_FILE + fi + done + cat $MERGE_FILE >> $TMP_FILE +done + +if [ "$MAKE" = "false" ]; then + cp $TMP_FILE .config + echo "#" + echo "# merged configuration written to .config (needs make)" + echo "#" + clean_up + exit +fi + +# Use the merged file as the starting point for: +# alldefconfig: Fills in any missing symbols with Kconfig default +# allnoconfig: Fills in any missing symbols with # CONFIG_* is not set +make KCONFIG_ALLCONFIG=$TMP_FILE $ALLTARGET + + +# Check all specified config values took (might have missed-dependency issues) +for CFG in $(sed -n "$SED_CONFIG_EXP" $TMP_FILE); do + + REQUESTED_VAL=$(sed -n "$SED_CONFIG_EXP" $TMP_FILE | grep -w -e "$CFG") + ACTUAL_VAL=$(sed -n "$SED_CONFIG_EXP" .config | grep -w -e "$CFG") + if [ "x$REQUESTED_VAL" != "x$ACTUAL_VAL" ] ; then + echo "Value requested for $CFG not in final .config" + echo "Requested value: $REQUESTED_VAL" + echo "Actual value: $ACTUAL_VAL" + echo "" + fi +done + +clean_up -- cgit v1.2.3-58-ga151 From 041b78c89b1fe68f44c45e8b6cc6c9f8ea8f0e4c Mon Sep 17 00:00:00 2001 From: Darren Hart Date: Tue, 10 Jan 2012 15:41:10 -0800 Subject: merge_config.sh: use signal names compatible with dash and bash The SIGHUP SIGINT and SIGTERM names caused failures when running merge_config.sh with the dash shell. Dropping the "SIG" component makes the script work in both bash and dash. Signed-off-by: Darren Hart Acked-by: John Stultz Cc: Michal Marek Signed-off-by: Andrew Morton Signed-off-by: Michal Marek --- scripts/kconfig/merge_config.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'scripts') diff --git a/scripts/kconfig/merge_config.sh b/scripts/kconfig/merge_config.sh index 890276bd1e67..b91015df96aa 100644 --- a/scripts/kconfig/merge_config.sh +++ b/scripts/kconfig/merge_config.sh @@ -24,7 +24,7 @@ clean_up() { rm -f $TMP_FILE exit } -trap clean_up SIGHUP SIGINT SIGTERM +trap clean_up HUP INT TERM usage() { echo "Usage: $0 [OPTIONS] [CONFIG [...]]" -- cgit v1.2.3-58-ga151 From c0c0cda276b796e9c9710672b3bb4a737dbb4900 Mon Sep 17 00:00:00 2001 From: Darren Hart Date: Tue, 10 Jan 2012 15:41:12 -0800 Subject: merge_config.sh: whitespace cleanup Fix whitespace usage in the clean_up routine. Signed-off-by: Darren Hart Acked-by: John Stultz Cc: Michal Marek Signed-off-by: Andrew Morton Signed-off-by: Michal Marek --- scripts/kconfig/merge_config.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'scripts') diff --git a/scripts/kconfig/merge_config.sh b/scripts/kconfig/merge_config.sh index b91015df96aa..07bb8863577b 100644 --- a/scripts/kconfig/merge_config.sh +++ b/scripts/kconfig/merge_config.sh @@ -21,8 +21,8 @@ # See the GNU General Public License for more details. clean_up() { - rm -f $TMP_FILE - exit + rm -f $TMP_FILE + exit } trap clean_up HUP INT TERM -- cgit v1.2.3-58-ga151 From 320d41bb1597799669bab28a047f9868dd754aca Mon Sep 17 00:00:00 2001 From: John Stultz Date: Tue, 10 Jan 2012 15:41:15 -0800 Subject: merge_config.sh: fix bug in final check Arnaud Lacombe pointed out the final checking that the requested configs were included in the final .config was broken. The example was that if you had a fragment that disabled CONFIG_DECOMPRESS_GZIP applied to a normal defconfig, there would be no final warning that CONFIG_DECOMPRESS_GZIP was acutally set in the final .config. This bug was introduced by me in v3 of the original patch, and the following patch reverts the invalid change. Signed-off-by: John Stultz Reported-by: Arnaud Lacombe Cc: Darren Hart Cc: Michal Marek Cc: Arnaud Lacombe Signed-off-by: Andrew Morton Signed-off-by: Michal Marek --- scripts/kconfig/merge_config.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'scripts') diff --git a/scripts/kconfig/merge_config.sh b/scripts/kconfig/merge_config.sh index 07bb8863577b..ceadf0e150cf 100644 --- a/scripts/kconfig/merge_config.sh +++ b/scripts/kconfig/merge_config.sh @@ -104,8 +104,8 @@ make KCONFIG_ALLCONFIG=$TMP_FILE $ALLTARGET # Check all specified config values took (might have missed-dependency issues) for CFG in $(sed -n "$SED_CONFIG_EXP" $TMP_FILE); do - REQUESTED_VAL=$(sed -n "$SED_CONFIG_EXP" $TMP_FILE | grep -w -e "$CFG") - ACTUAL_VAL=$(sed -n "$SED_CONFIG_EXP" .config | grep -w -e "$CFG") + REQUESTED_VAL=$(grep -w -e "$CFG" $TMP_FILE) + ACTUAL_VAL=$(grep -w -e "$CFG" .config) if [ "x$REQUESTED_VAL" != "x$ACTUAL_VAL" ] ; then echo "Value requested for $CFG not in final .config" echo "Requested value: $REQUESTED_VAL" -- cgit v1.2.3-58-ga151 From c55ac154019f628b42316bc21545ee1b2bee3db6 Mon Sep 17 00:00:00 2001 From: Wang YanQing Date: Thu, 12 Jan 2012 11:31:32 +0800 Subject: menuconfig: let make not report error when not save configuration I find every time when I choice the 'NO' button at the dialog which let me choice whether to save the configuration before exit menuconfig, it always report the blow: " GEN /mnt/sda7/home/build/test/Makefile HOSTCC scripts/kconfig/mconf.o HOSTLD scripts/kconfig/mconf scripts/kconfig/mconf Kconfig Your configuration changes were NOT saved. make[2]: *** [menuconfig] Error 1 make[1]: *** [menuconfig] Error 2 make: *** [sub-make] Error 2 " This patch repair it. Signed-off-by: Wang YanQing Acked-by: Davidlohr Bueso Signed-off-by: Michal Marek --- scripts/kconfig/mconf.c | 1 + 1 file changed, 1 insertion(+) (limited to 'scripts') diff --git a/scripts/kconfig/mconf.c b/scripts/kconfig/mconf.c index 19e200d91120..86cd1ea35579 100644 --- a/scripts/kconfig/mconf.c +++ b/scripts/kconfig/mconf.c @@ -830,6 +830,7 @@ static int handle_exit(void) fprintf(stderr, _("\n\n" "Your configuration changes were NOT saved." "\n\n")); + res = 0; } return res; -- cgit v1.2.3-58-ga151 From e2aef4d33ac43ec45e4fc2903288030d7f464832 Mon Sep 17 00:00:00 2001 From: Peter Foley Date: Sun, 18 Dec 2011 18:15:16 -0500 Subject: Improve update-po-config output Make the V=0 output from update-po-config be aligned correctly. Also remove an outdated comment and add a "GEN" statement. Signed-off-by: Peter Foley Signed-off-by: Michal Marek --- scripts/kconfig/Makefile | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'scripts') diff --git a/scripts/kconfig/Makefile b/scripts/kconfig/Makefile index ba573fe7c74d..4dba0b8f1f02 100644 --- a/scripts/kconfig/Makefile +++ b/scripts/kconfig/Makefile @@ -50,9 +50,8 @@ localyesconfig localmodconfig: $(obj)/streamline_config.pl $(obj)/conf # Create new linux.pot file # Adjust charset to UTF-8 in .po file to accept UTF-8 in Kconfig files -# The symlink is used to repair a deficiency in arch/um update-po-config: $(obj)/kxgettext $(obj)/gconf.glade.h - $(Q)echo " GEN config" + $(Q)echo " GEN config.pot" $(Q)xgettext --default-domain=linux \ --add-comments --keyword=_ --keyword=N_ \ --from-code=UTF-8 \ @@ -63,10 +62,11 @@ update-po-config: $(obj)/kxgettext $(obj)/gconf.glade.h $(Q)ln -fs Kconfig.x86 arch/um/Kconfig $(Q)(for i in `ls $(srctree)/arch/*/Kconfig`; \ do \ - echo " GEN $$i"; \ + echo " GEN $$i"; \ $(obj)/kxgettext $$i \ >> $(obj)/config.pot; \ done ) + $(Q)echo " GEN linux.pot" $(Q)msguniq --sort-by-file --to-code=UTF-8 $(obj)/config.pot \ --output $(obj)/linux.pot $(Q)rm -f $(srctree)/arch/um/Kconfig -- cgit v1.2.3-58-ga151 From 37ae2d5998aa29d8bf52f124199a21341bc6d18d Mon Sep 17 00:00:00 2001 From: Arnaud Lacombe Date: Wed, 23 Nov 2011 13:05:53 -0500 Subject: kbuild: Fix compiler warning with assertion when calling 'fwrite' Reinhard Tartler discovered a corner case of calling xfwrite() where the length of the string is zero. Arnaud Lacombe suggested to use assertion for the corner case, as fwrite(3) is currently used: 1) in comment printers. Empty comment are not allowed. 2) in a callback passed to expr_print(), where the string printed is either NULL OR non-empty. 3) in the lexer, auto-generated, and unused. I feel using assertion is a good solution: 1) It cleanly takes care of the above-mentioned corner case. 2) It can be easily disabled by defining NDEBUG. 3) It asserts xfwrite() is simply a wrapper for fwrite(). Reported-by: Reinhard Tartler Signed-off-by: Arnaud Lacombe Signed-off-by: Jean Sacren Signed-off-by: Michal Marek --- scripts/kconfig/expr.h | 1 + scripts/kconfig/lkc.h | 6 ++++-- 2 files changed, 5 insertions(+), 2 deletions(-) (limited to 'scripts') diff --git a/scripts/kconfig/expr.h b/scripts/kconfig/expr.h index 80fce57080cc..d4ecce8bc3a6 100644 --- a/scripts/kconfig/expr.h +++ b/scripts/kconfig/expr.h @@ -10,6 +10,7 @@ extern "C" { #endif +#include #include #ifndef __cplusplus #include diff --git a/scripts/kconfig/lkc.h b/scripts/kconfig/lkc.h index b633bdb9f3d4..c18f2bd9c095 100644 --- a/scripts/kconfig/lkc.h +++ b/scripts/kconfig/lkc.h @@ -90,8 +90,10 @@ struct conf_printer { /* confdata.c and expr.c */ static inline void xfwrite(const void *str, size_t len, size_t count, FILE *out) { - if (fwrite(str, len, count, out) < count) - fprintf(stderr, "\nError in writing or end of file.\n"); + assert(len != 0); + + if (fwrite(str, len, count, out) != count) + fprintf(stderr, "Error in writing or end of file.\n"); } /* menu.c */ -- cgit v1.2.3-58-ga151 From 30c4eaafac80cc110efa66d2dfc551386eefdf53 Mon Sep 17 00:00:00 2001 From: Li Zefan Date: Mon, 16 Jan 2012 15:57:39 +0800 Subject: menuconfig: fix a regression when canceling the prompt dialog at exit This commit fixes a bug, while introducing a new one.. commit 7203ddbd4be9720649e47d756a001e0c7d7f8ae2 Author: Wang YanQing Date: Thu Jan 12 11:31:32 2012 +0800 menuconfig: let make not report error when not save configuration Pressing ESC should cancel the yes/no dialog and return back to the main menu, but not exit from menuconfig. Signed-off-by: Li Zefan Acked-by: Wang YanQing Signed-off-by: Michal Marek --- scripts/kconfig/mconf.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'scripts') diff --git a/scripts/kconfig/mconf.c b/scripts/kconfig/mconf.c index 86cd1ea35579..2c6286c0bc1a 100644 --- a/scripts/kconfig/mconf.c +++ b/scripts/kconfig/mconf.c @@ -830,7 +830,8 @@ static int handle_exit(void) fprintf(stderr, _("\n\n" "Your configuration changes were NOT saved." "\n\n")); - res = 0; + if (res != KEY_ESC) + res = 0; } return res; -- cgit v1.2.3-58-ga151