Skip to contentSkip to conversation

RH's noninteractive config patch

PATCH Christoph Hellwig 2 participants 2 messages May 31, 2004 – Jun 1, 2004 Kconfig

lore
Share & tools
lore
#0 lore raw

Hi Roman,

Arjan said you some objections against RH's current noninteractive config patch? I'd really love to see something like it included because it greatly helps packagaing the kernel. Patch from their current RPM is below:

scripts/kconfig/conf.c +20 -3
diff -urNp linux-1/scripts/kconfig/conf.c linux-500/scripts/kconfig/conf.c
@@ -20,6 +20,7 @@ enum {
 	ask_all,
 	ask_new,
 	ask_silent,
+	dont_ask,
 	set_default,
 	set_yes,
 	set_mod,
@@ -36,6 +37,8 @@ static struct menu *rootEntry;
 
 static char nohelp_text[] = "Sorry, no help available for this option yet.\n";
 
+static int return_value = 0;
+
 static void strip(char *str)
 {
 	char *p = str;
@@ -93,6 +96,12 @@ static void conf_askvalue(struct symbol 
 		fflush(stdout);
 		fgets(line, 128, stdin);
 		return;
+	case dont_ask:
+		if (!sym_has_value(sym)) {
+			fprintf(stderr,"CONFIG_%s\n",sym->name);
+			return_value++;
+		}
+		return;
 	case set_default:
 		printf("%s\n", def);
 		return;
@@ -339,6 +348,7 @@ static int conf_choice(struct menu *menu
 		switch (input_mode) {
 		case ask_new:
 		case ask_silent:
+		case dont_ask:
 			if (!is_new) {
 				cnt = def;
 				printf("%d\n", cnt);
@@ -472,7 +482,10 @@ static void check_conf(struct menu *menu
 			if (!conf_cnt++)
 				printf("*\n* Restart config...\n*\n");
 			rootEntry = menu_get_parent_menu(menu);
-			conf(rootEntry);
+			if (input_mode == dont_ask)
+				fprintf(stderr,"CONFIG_%s\n",sym->name);
+			else
+				conf(rootEntry);
 		}
 		if (sym_is_choice(sym) && sym_get_tristate_value(sym) != mod)
 			return;
@@ -493,6 +506,9 @@ int main(int ac, char **av)
 		case 'o':
 			input_mode = ask_new;
 			break;
+		case 'b':
+			input_mode = dont_ask;
+			break;
 		case 's':
 			input_mode = ask_silent;
 			valid_stdin = isatty(0) && isatty(1) && isatty(2);
@@ -557,6 +573,7 @@ int main(int ac, char **av)
 		}
 	case ask_all:
 	case ask_new:
+	case dont_ask:
 		conf_read(NULL);
 		break;
 	default:
@@ -574,10 +591,10 @@ int main(int ac, char **av)
 	do {
 		conf_cnt = 0;
 		check_conf(&rootmenu);
-	} while (conf_cnt);
+	} while ((conf_cnt) && (input_mode != dont_ask));
 	if (conf_write(NULL)) {
 		fprintf(stderr, "\n*** Error during writing of the kernel configuration.\n\n");
 		return 1;
 	}
-	return 0;
+	return return_value;
 }
scripts/kconfig/Makefile renamed from scripts/kconfig/Makefile.orig +8 -2
@@ -23,6 +23,10 @@
 silentoldconfig: $(obj)/conf
 	$< -s arch/$(ARCH)/Kconfig
 
+nonint_oldconfig: scripts/kconfig/conf
+	./scripts/kconfig/conf -b arch/$(ARCH)/Kconfig
+
+
 .PHONY: randconfig allyesconfig allnoconfig allmodconfig defconfig
 
 randconfig: $(obj)/conf
@@ -68,7 +72,7 @@
 libkconfig-objs := zconf.tab.o
 
 host-progs	:= conf mconf qconf gconf
-conf-objs	:= conf.o  libkconfig.so
+conf-objs	:= conf.o
 mconf-objs	:= mconf.o libkconfig.so
 
 ifeq ($(MAKECMDGOALS),xconfig)
@@ -95,13 +99,15 @@
 HOSTCFLAGS_lex.zconf.o	:= -I$(src)
 HOSTCFLAGS_zconf.tab.o	:= -I$(src)
 
+HOSTLOADLIBES_conf     = -Wl,-rpath,\$$ORIGIN -Lscripts/kconfig -lkconfig
+
 HOSTLOADLIBES_qconf	= -L$(QTLIBPATH) -Wl,-rpath,$(QTLIBPATH) -l$(QTLIB) -ldl
 HOSTCXXFLAGS_qconf.o	= -I$(QTDIR)/include 
 
 HOSTLOADLIBES_gconf	= `pkg-config gtk+-2.0 gmodule-2.0 libglade-2.0 --libs`
 HOSTCFLAGS_gconf.o	= `pkg-config gtk+-2.0 gmodule-2.0 libglade-2.0 --cflags`
 
-$(obj)/conf.o $(obj)/mconf.o $(obj)/qconf.o $(obj)/gconf.o: $(obj)/zconf.tab.h
+$(obj)/conf.o $(obj)/mconf.o $(obj)/qconf.o $(obj)/gconf.o: $(obj)/zconf.tab.h $(obj)/libkconfig.so
 
 $(obj)/qconf.o: $(obj)/.tmp_qtcheck
 
#1 lore raw

Hi,

Quoted 4 lines · Christoph Hellwig

Arjan said you some objections against RH's current noninteractive config patch? I'd really love to see something like it included because it greatly helps packagaing the kernel. Patch from their current RPM is below:

conf.c is already heavy overloaded and I'd rather add a separate querytool (which could also answer such burning questions as "what keeps that damn config symbol selected?"). IIRC the RH build first checks, whether the .config is valid, which can basically be done with "make silentoldconfig

Quoted 1 line

& /dev/null" and printing the config symbols can be done with a separate

tool. The Kconfig back end is a library to make this as simple as possible.

bye, Roman