All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] kconfig: introduce nonint_oldconfig and loose_nonint_oldconfig
@ 2010-04-13 19:47 Aristeu Rozanski
  2010-04-13 20:00 ` Randy Dunlap
  2010-04-13 20:43 ` [PATCH] kconfig: introduce nonint_oldconfig and loose_nonint_oldconfig Arjan van de Ven
  0 siblings, 2 replies; 14+ messages in thread
From: Aristeu Rozanski @ 2010-04-13 19:47 UTC (permalink / raw)
  To: linux-kernel; +Cc: davej, kyle, vgoyal, arjan

This patch has been around for a long time in Fedora and Red Hat Enterprise
Linux kernels and it may be useful for others. The nonint_oldconfig target
will fail and print the unset config options while loose_nonint_oldconfig will
simply let the config option unset. They're useful in distro kernel packages
where the config files are built using a combination of smaller config files.
The patch's author AFAIK is Arjan van de Ven. Arjan, please add a Signed-off-by
if you're the original author.

Signed-off-by: Aristeu Rozanski <aris@redhat.com> 

--- linus-2.6.orig/scripts/kconfig/Makefile	2010-04-13 15:15:10.000000000 -0400
+++ linus-2.6/scripts/kconfig/Makefile	2010-04-13 15:15:23.000000000 -0400
@@ -69,6 +69,11 @@ localyesconfig: $(obj)/streamline_config
 	fi
 	$(Q)rm -f .tmp.config
 
+nonint_oldconfig: $(obj)/conf
+	$< -b $(Kconfig)
+loose_nonint_oldconfig: $(obj)/conf
+	$< -B $(Kconfig)
+
 # 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
--- linus-2.6.orig/scripts/kconfig/conf.c	2010-04-13 15:15:10.000000000 -0400
+++ linus-2.6/scripts/kconfig/conf.c	2010-04-13 15:15:54.000000000 -0400
@@ -23,6 +23,8 @@ enum {
 	ask_all,
 	ask_new,
 	ask_silent,
+	dont_ask,
+	dont_ask_dont_tell,
 	set_default,
 	set_yes,
 	set_mod,
@@ -360,7 +362,10 @@ static void conf(struct menu *menu)
 
 		switch (prop->type) {
 		case P_MENU:
-			if (input_mode == ask_silent && rootEntry != menu) {
+			if ((input_mode == ask_silent ||
+			     input_mode == dont_ask ||
+			     input_mode == dont_ask_dont_tell) &&
+			    rootEntry != menu) {
 				check_conf(menu);
 				return;
 			}
@@ -406,6 +411,8 @@ conf_childs:
 		indent -= 2;
 }
 
+static int return_value;
+
 static void check_conf(struct menu *menu)
 {
 	struct symbol *sym;
@@ -418,10 +425,19 @@ static void check_conf(struct menu *menu
 	if (sym && !sym_has_value(sym)) {
 		if (sym_is_changable(sym) ||
 		    (sym_is_choice(sym) && sym_get_tristate_value(sym) == yes)) {
-			if (!conf_cnt++)
-				printf(_("*\n* Restart config...\n*\n"));
-			rootEntry = menu_get_parent_menu(menu);
-			conf(rootEntry);
+			if (input_mode == dont_ask ||
+			    input_mode == dont_ask_dont_tell) {
+				if (input_mode == dont_ask &&
+				    sym->name && !sym_is_choice_value(sym)) {
+					fprintf(stderr,"CONFIG_%s\n",sym->name);
+					++return_value;
+				}
+			} else {
+				if (!conf_cnt++)
+					printf(_("*\n* Restart config...\n*\n"));
+				rootEntry = menu_get_parent_menu(menu);
+				conf(rootEntry);
+			}
 		}
 	}
 
@@ -439,7 +455,7 @@ int main(int ac, char **av)
 	bindtextdomain(PACKAGE, LOCALEDIR);
 	textdomain(PACKAGE);
 
-	while ((opt = getopt(ac, av, "osdD:nmyrh")) != -1) {
+ 	while ((opt = getopt(ac, av, "osbBdD:nmyrh")) != -1) {
 		switch (opt) {
 		case 'o':
 			input_mode = ask_silent;
@@ -448,6 +464,12 @@ int main(int ac, char **av)
 			input_mode = ask_silent;
 			sync_kconfig = 1;
 			break;
+		case 'b':
+			input_mode = dont_ask;
+			break;
+		case 'B':
+			input_mode = dont_ask_dont_tell;
+			break;
 		case 'd':
 			input_mode = set_default;
 			break;
@@ -525,6 +547,8 @@ int main(int ac, char **av)
 	case ask_silent:
 	case ask_all:
 	case ask_new:
+	case dont_ask:
+	case dont_ask_dont_tell:
 		conf_read(NULL);
 		break;
 	case set_no:
@@ -586,12 +610,16 @@ int main(int ac, char **av)
 		conf(&rootmenu);
 		input_mode = ask_silent;
 		/* fall through */
+	case dont_ask:
+	case dont_ask_dont_tell:
 	case ask_silent:
 		/* Update until a loop caused no more changes */
 		do {
 			conf_cnt = 0;
 			check_conf(&rootmenu);
-		} while (conf_cnt);
+		} while (conf_cnt &&
+			 (input_mode != dont_ask &&
+			  input_mode != dont_ask_dont_tell));
 		break;
 	}
 
@@ -613,5 +641,5 @@ int main(int ac, char **av)
 			exit(1);
 		}
 	}
-	return 0;
+	return return_value;
 }

^ permalink raw reply	[flat|nested] 14+ messages in thread

end of thread, other threads:[~2010-06-02 12:44 UTC | newest]

Thread overview: 14+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-04-13 19:47 [PATCH] kconfig: introduce nonint_oldconfig and loose_nonint_oldconfig Aristeu Rozanski
2010-04-13 20:00 ` Randy Dunlap
2010-04-13 20:18   ` Aristeu Rozanski
2010-04-13 20:24     ` Randy Dunlap
2010-04-13 20:44       ` Aristeu Rozanski
2010-04-13 21:03       ` [PATCH] kconfig: introduce nonint_oldconfig and loose_nonint_oldconfig (v2) Aristeu Rozanski
2010-04-13 21:26         ` Kyle McMartin
2010-04-14 13:22         ` Michal Marek
2010-05-06 16:48           ` [PATCH] kconfig: introduce nonint_oldconfig and loose_nonint_oldconfig (v3) Aristeu Rozanski
2010-05-07  7:02             ` Américo Wang
2010-05-07 14:28               ` Randy Dunlap
2010-05-12  6:12                 ` Américo Wang
2010-06-02 12:44             ` Michal Marek
2010-04-13 20:43 ` [PATCH] kconfig: introduce nonint_oldconfig and loose_nonint_oldconfig Arjan van de Ven

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.