[PATCH] kbuld: Implement oldmodconfig

From: Eric W. Biederman
Date: Mon Apr 23 2012 - 20:55:47 EST

While verifying that my user namespace patches are as complete as I
expect them to be I came a came across the need to build kernel
configurations with a few choice settings disabled and everything else
enabled. Adding a make oldmodconfig made generating those
configurations straight forward, as now I can set the options I care
about and the oldmodconfig can answering everything else for me in a
consistent way.

Respond with mod/yes/default to every question for every unset symbol
depending if the symbol is tristate, boolean or something else.

Signed-off-by: Eric W. Biederman <ebiederm@xxxxxxxxxxxx>
scripts/kconfig/Makefile | 5 +++--
scripts/kconfig/conf.c | 8 ++++++++
2 files changed, 11 insertions(+), 2 deletions(-)

diff --git a/scripts/kconfig/Makefile b/scripts/kconfig/Makefile
index 7966265..4de07d4 100644
--- a/scripts/kconfig/Makefile
+++ b/scripts/kconfig/Makefile
@@ -76,9 +76,9 @@ PHONY += allnoconfig allyesconfig allmodconfig alldefconfig randconfig
allnoconfig allyesconfig allmodconfig alldefconfig randconfig: $(obj)/conf
$< --$@ $(Kconfig)

-PHONY += listnewconfig oldnoconfig savedefconfig defconfig
+PHONY += listnewconfig oldnoconfig oldmodconfig savedefconfig defconfig

-listnewconfig oldnoconfig: $(obj)/conf
+listnewconfig oldnoconfig oldmodconfig: $(obj)/conf
$< --$@ $(Kconfig)

savedefconfig: $(obj)/conf
@@ -115,6 +115,7 @@ help:
@echo ' randconfig - New config with random answer to all options'
@echo ' listnewconfig - List new options'
@echo ' oldnoconfig - Same as silentoldconfig but set new symbols to n (unset)'
+ @echo ' oldmodconfig - Same as silentoldconfig but set new symbols to m (module)'

# lxdialog stuff
check-lxdialog := $(srctree)/$(src)/lxdialog/check-lxdialog.sh
diff --git a/scripts/kconfig/conf.c b/scripts/kconfig/conf.c
index f208f90..28910ea 100644
--- a/scripts/kconfig/conf.c
+++ b/scripts/kconfig/conf.c
@@ -33,6 +33,7 @@ enum input_mode {
+ oldmodconfig,
} input_mode = oldaskconfig;

static int indent = 1;
@@ -455,6 +456,7 @@ static struct option long_opts[] = {
{"randconfig", no_argument, NULL, randconfig},
{"listnewconfig", no_argument, NULL, listnewconfig},
{"oldnoconfig", no_argument, NULL, oldnoconfig},
+ {"oldmodconfig", no_argument, NULL, oldmodconfig},
{NULL, 0, NULL, 0}

@@ -468,6 +470,7 @@ static void conf_usage(const char *progname)
printf(" --oldconfig Update a configuration using a provided .config as base\n");
printf(" --silentoldconfig Same as oldconfig, but quietly, additionally update deps\n");
printf(" --oldnoconfig Same as silentoldconfig but set new symbols to no\n");
+ printf(" --oldmodconfig Same as silentoldconfig but set new symbols to mod\n");
printf(" --defconfig <file> New config with default defined in <file>\n");
printf(" --savedefconfig <file> Save the minimal current configuration to <file>\n");
printf(" --allnoconfig New config where all options are answered with no\n");
@@ -521,6 +524,7 @@ int main(int ac, char **av)
case alldefconfig:
case listnewconfig:
case oldnoconfig:
+ case oldmodconfig:
case '?':
@@ -566,6 +570,7 @@ int main(int ac, char **av)
case oldconfig:
case listnewconfig:
case oldnoconfig:
+ case oldmodconfig:
case allnoconfig:
@@ -626,6 +631,9 @@ int main(int ac, char **av)
case defconfig:
+ case oldmodconfig:
+ conf_set_all_new_symbols(def_mod);
+ break;
case savedefconfig:
case oldaskconfig:

To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/