On Mon, May 05, 2008 at 08:45:38PM +0200, Ingo Molnar wrote: > > * Sergio Luis <sergio@xxxxxxx> wrote: > > > > In latest kbuild.git I've added a new feature. > > > > > > make K=.config alldefconfig > > > > > > would give you eaxtly what you request here. > > > K= is used to say where to locate the base-configuration. > > > Can I specify /proc/config.gz (gzipped) in the K parameter? > > -sergio > > i think the 'natural' script behavior would be for this to do the right > thing: > > zcat /proc/config.gz | make K=- alldefconfig > > or something like that - so that it can be scripted in a pipe. I like this ;-) So I implemented support for stdin - see attached. It is also in kbuild.git. Sam commit 95ee7b97051dcc4b61d1dbf626e9b32266cb402d Author: Sam Ravnborg <sam@xxxxxxxxxxxx> Date: Mon May 5 21:44:21 2008 +0200 kconfig: add support for stdin (make K=- ...) With support for stdin we can now say: zcat /proc/config.gz | make K=- alldefconfig Which will give us a configuration based on the running kernel with all new values set to default. Signed-off-by: Sam Ravnborg <sam@xxxxxxxxxxxx> diff --git a/scripts/kconfig/aconf.c b/scripts/kconfig/aconf.c index cf05861..54ffd72 100644 --- a/scripts/kconfig/aconf.c +++ b/scripts/kconfig/aconf.c @@ -248,6 +248,7 @@ static void usage(void) int main(int ac, char **av) { + char *config_filename; char *config_file = NULL; char *kconfig_file = NULL; struct stat tmpstat; @@ -287,19 +288,26 @@ int main(int ac, char **av) } conf_parse(kconfig_file); /* debug: zconfdump(stdout); */ - if (config_file && stat(config_file, &tmpstat)) { - fprintf(stderr, _("%s: failed to open %s\n"), - av[0], config_file); - exit(1); + if (strcmp(config_file, "-")) { + if (config_file && stat(config_file, &tmpstat)) { + fprintf(stderr, _("%s: failed to open %s\n"), + av[0], config_file); + exit(1); + } + config_filename = config_file; + } else { + config_filename = "stdin"; } + if (config_file && conf_read_simple(config_file, S_DEF_USER)) { fprintf(stderr, _("%s: failed to read %s\n"), - av[0], config_file); + av[0], config_filename); exit(1); } if (config_file) { printf("#\n"); - printf(_("# configuration is based on '%s'\n"), config_file); + printf(_("# configuration is based on '%s'\n"), + config_filename); } /* generate the config */ do { diff --git a/scripts/kconfig/lex.zconf.c_shipped b/scripts/kconfig/lex.zconf.c_shipped index 6a61cee..7bd00d3 100644 --- a/scripts/kconfig/lex.zconf.c_shipped +++ b/scripts/kconfig/lex.zconf.c_shipped @@ -2268,13 +2268,17 @@ FILE *zconf_fopen(const char *name) char *env, fullname[PATH_MAX+1]; FILE *f; - f = fopen(name, "r"); - if (!f && name != NULL && name[0] != '/') { - env = getenv(SRCTREE); - if (env) { - sprintf(fullname, "%s/%s", env, name); - f = fopen(fullname, "r"); + if (strcmp(name, "-")) { + f = fopen(name, "r"); + if (!f && name != NULL && name[0] != '/') { + env = getenv(SRCTREE); + if (env) { + sprintf(fullname, "%s/%s", env, name); + f = fopen(fullname, "r"); + } } + } else { + f = stdin; } return f; } diff --git a/scripts/kconfig/zconf.l b/scripts/kconfig/zconf.l index 4cea5c8..a268d88 100644 --- a/scripts/kconfig/zconf.l +++ b/scripts/kconfig/zconf.l @@ -269,13 +269,17 @@ FILE *zconf_fopen(const char *name) char *env, fullname[PATH_MAX+1]; FILE *f; - f = fopen(name, "r"); - if (!f && name != NULL && name[0] != '/') { - env = getenv(SRCTREE); - if (env) { - sprintf(fullname, "%s/%s", env, name); - f = fopen(fullname, "r"); + if (strcmp(name, "-")) { + f = fopen(name, "r"); + if (!f && name != NULL && name[0] != '/') { + env = getenv(SRCTREE); + if (env) { + sprintf(fullname, "%s/%s", env, name); + f = fopen(fullname, "r"); + } } + } else { + f = stdin; } return f; } -- To unsubscribe from this list: send the line "unsubscribe linux-kbuild" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html