add possibility to set default .config values
SVN-Revision: 9300
This commit is contained in:
parent
3568f0c247
commit
1a3c4d1090
6 changed files with 100 additions and 59 deletions
|
@ -144,8 +144,17 @@ config SOURCE_FEEDS_REV
|
||||||
|
|
||||||
|
|
||||||
source "toolchain/Config.in"
|
source "toolchain/Config.in"
|
||||||
|
menuconfig BUILDSYSTEM_SETTINGS
|
||||||
|
bool "Buildsystem settings"
|
||||||
|
|
||||||
|
config DOWNLOAD_FOLDER
|
||||||
|
string
|
||||||
|
prompt "Download folder"
|
||||||
|
default ""
|
||||||
|
depends BUILDSYSTEM_SETTINGS
|
||||||
source "target/imagebuilder/Config.in"
|
source "target/imagebuilder/Config.in"
|
||||||
source "target/sdk/Config.in"
|
source "target/sdk/Config.in"
|
||||||
|
|
||||||
source "tmp/.config-package.in"
|
source "tmp/.config-package.in"
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -52,6 +52,8 @@ prepare-tmpinfo: FORCE
|
||||||
scripts/config/mconf:
|
scripts/config/mconf:
|
||||||
@+$(MAKE) -C scripts/config all
|
@+$(MAKE) -C scripts/config all
|
||||||
|
|
||||||
|
$(call rdep,scripts/config,scripts/config/mconf)
|
||||||
|
|
||||||
scripts/config/conf:
|
scripts/config/conf:
|
||||||
@+$(MAKE) -C scripts/config conf
|
@+$(MAKE) -C scripts/config conf
|
||||||
|
|
||||||
|
|
2
rules.mk
2
rules.mk
|
@ -32,7 +32,7 @@ SUBDIR:=$(patsubst $(TOPDIR)/%,%,${CURDIR})
|
||||||
|
|
||||||
OPTIMIZE_FOR_CPU:=$(ARCH)
|
OPTIMIZE_FOR_CPU:=$(ARCH)
|
||||||
|
|
||||||
DL_DIR:=$(TOPDIR)/dl
|
DL_DIR:=$(call qstrip,$(if $(CONFIG_DOWNLOAD_FOLDER), $(CONFIG_DOWNLOAD_FOLDER),$(TOPDIR)/dl))
|
||||||
BIN_DIR:=$(TOPDIR)/bin
|
BIN_DIR:=$(TOPDIR)/bin
|
||||||
INCLUDE_DIR:=$(TOPDIR)/include
|
INCLUDE_DIR:=$(TOPDIR)/include
|
||||||
SCRIPT_DIR:=$(TOPDIR)/scripts
|
SCRIPT_DIR:=$(TOPDIR)/scripts
|
||||||
|
|
|
@ -33,7 +33,7 @@ clean:
|
||||||
rm -f *.o $(clean-files) conf mconf
|
rm -f *.o $(clean-files) conf mconf
|
||||||
$(MAKE) -C lxdialog clean
|
$(MAKE) -C lxdialog clean
|
||||||
|
|
||||||
zconf.tab.o: lex.zconf.c zconf.hash.c
|
zconf.tab.o: lex.zconf.c zconf.hash.c confdata.c
|
||||||
|
|
||||||
kconfig_load.o: lkc_defs.h
|
kconfig_load.o: lkc_defs.h
|
||||||
|
|
||||||
|
|
|
@ -14,6 +14,8 @@
|
||||||
#define LKC_DIRECT_LINK
|
#define LKC_DIRECT_LINK
|
||||||
#include "lkc.h"
|
#include "lkc.h"
|
||||||
|
|
||||||
|
#define LOCAL_BUILD_SETTINGS "/.openwrt/defconfig"
|
||||||
|
|
||||||
static void conf_warning(const char *fmt, ...)
|
static void conf_warning(const char *fmt, ...)
|
||||||
__attribute__ ((format (printf, 1, 2)));
|
__attribute__ ((format (printf, 1, 2)));
|
||||||
|
|
||||||
|
@ -104,55 +106,12 @@ void conf_reset(void)
|
||||||
sym->user.tri = no;
|
sym->user.tri = no;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
conf_read_simple(NULL, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
int conf_read_simple(const char *name)
|
int conf_read_file(FILE *in, struct symbol *sym){
|
||||||
{
|
|
||||||
FILE *in = NULL;
|
|
||||||
char line[1024];
|
char line[1024];
|
||||||
char *p, *p2;
|
char *p, *p2;
|
||||||
struct symbol *sym;
|
|
||||||
int i;
|
|
||||||
|
|
||||||
if (name) {
|
|
||||||
in = zconf_fopen(name);
|
|
||||||
} else {
|
|
||||||
const char **names = conf_confnames;
|
|
||||||
while ((name = *names++)) {
|
|
||||||
name = conf_expand_value(name);
|
|
||||||
in = zconf_fopen(name);
|
|
||||||
if (in) {
|
|
||||||
printf(_("#\n"
|
|
||||||
"# using defaults found in %s\n"
|
|
||||||
"#\n"), name);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (!in)
|
|
||||||
return 1;
|
|
||||||
|
|
||||||
conf_filename = name;
|
|
||||||
conf_lineno = 0;
|
|
||||||
conf_warnings = 0;
|
|
||||||
conf_unsaved = 0;
|
|
||||||
|
|
||||||
for_all_symbols(i, sym) {
|
|
||||||
sym->flags |= SYMBOL_NEW | SYMBOL_CHANGED;
|
|
||||||
if (sym_is_choice(sym))
|
|
||||||
sym->flags &= ~SYMBOL_NEW;
|
|
||||||
sym->flags &= ~SYMBOL_VALID;
|
|
||||||
switch (sym->type) {
|
|
||||||
case S_INT:
|
|
||||||
case S_HEX:
|
|
||||||
case S_STRING:
|
|
||||||
if (sym->user.val)
|
|
||||||
free(sym->user.val);
|
|
||||||
default:
|
|
||||||
sym->user.val = NULL;
|
|
||||||
sym->user.tri = no;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
while (fgets(line, sizeof(line), in)) {
|
while (fgets(line, sizeof(line), in)) {
|
||||||
conf_lineno++;
|
conf_lineno++;
|
||||||
|
@ -169,12 +128,12 @@ int conf_read_simple(const char *name)
|
||||||
continue;
|
continue;
|
||||||
sym = sym_find(line + 9);
|
sym = sym_find(line + 9);
|
||||||
if (!sym) {
|
if (!sym) {
|
||||||
conf_warning("trying to assign nonexistent symbol %s", line + 9);
|
//conf_warning("trying to assign nonexistent symbol %s", line + 9);
|
||||||
break;
|
break;
|
||||||
} else if (!(sym->flags & SYMBOL_NEW)) {
|
} /*else if (!(sym->flags & SYMBOL_NEW)) {
|
||||||
conf_warning("trying to reassign symbol %s", sym->name);
|
//conf_warning("trying to reassign symbol %s", sym->name);
|
||||||
break;
|
break;
|
||||||
}
|
}*/
|
||||||
switch (sym->type) {
|
switch (sym->type) {
|
||||||
case S_BOOLEAN:
|
case S_BOOLEAN:
|
||||||
case S_TRISTATE:
|
case S_TRISTATE:
|
||||||
|
@ -199,12 +158,12 @@ int conf_read_simple(const char *name)
|
||||||
*p2 = 0;
|
*p2 = 0;
|
||||||
sym = sym_find(line + 7);
|
sym = sym_find(line + 7);
|
||||||
if (!sym) {
|
if (!sym) {
|
||||||
conf_warning("trying to assign nonexistent symbol %s", line + 7);
|
//conf_warning("trying to assign nonexistent symbol %s", line + 7);
|
||||||
break;
|
break;
|
||||||
} else if (!(sym->flags & SYMBOL_NEW)) {
|
} /*else if (!(sym->flags & SYMBOL_NEW)) {
|
||||||
conf_warning("trying to reassign symbol %s", sym->name);
|
conf_warning("trying to reassign symbol %s", sym->name);
|
||||||
break;
|
break;
|
||||||
}
|
}*/
|
||||||
switch (sym->type) {
|
switch (sym->type) {
|
||||||
case S_TRISTATE:
|
case S_TRISTATE:
|
||||||
if (p[0] == 'm') {
|
if (p[0] == 'm') {
|
||||||
|
@ -283,8 +242,79 @@ int conf_read_simple(const char *name)
|
||||||
}
|
}
|
||||||
fclose(in);
|
fclose(in);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int conf_read_simple(const char *name, int load_config)
|
||||||
|
{
|
||||||
|
FILE *in = NULL;
|
||||||
|
FILE *defaults = NULL;
|
||||||
|
struct symbol *sym;
|
||||||
|
int i;
|
||||||
|
char *home_dir = getenv("HOME");
|
||||||
|
char *default_config_path = NULL;
|
||||||
|
|
||||||
|
if(home_dir){
|
||||||
|
default_config_path = malloc(strlen(home_dir) + sizeof(LOCAL_BUILD_SETTINGS) + 1);
|
||||||
|
sprintf(default_config_path, "%s%s", home_dir, LOCAL_BUILD_SETTINGS);
|
||||||
|
defaults = zconf_fopen(default_config_path);
|
||||||
|
if(defaults)
|
||||||
|
printf("# using buildsystem predefines from %s\n", default_config_path);
|
||||||
|
free(default_config_path);
|
||||||
|
}
|
||||||
|
|
||||||
|
if(load_config){
|
||||||
|
if (name) {
|
||||||
|
in = zconf_fopen(name);
|
||||||
|
} else {
|
||||||
|
const char **names = conf_confnames;
|
||||||
|
while ((name = *names++)) {
|
||||||
|
name = conf_expand_value(name);
|
||||||
|
in = zconf_fopen(name);
|
||||||
|
if (in) {
|
||||||
|
printf(_("#\n"
|
||||||
|
"# using defaults found in %s\n"
|
||||||
|
"#\n"), name);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!in && !defaults)
|
||||||
|
return 1;
|
||||||
|
|
||||||
|
conf_filename = name;
|
||||||
|
conf_lineno = 0;
|
||||||
|
conf_warnings = 0;
|
||||||
|
conf_unsaved = 0;
|
||||||
|
|
||||||
|
for_all_symbols(i, sym) {
|
||||||
|
sym->flags |= SYMBOL_NEW | SYMBOL_CHANGED;
|
||||||
|
if (sym_is_choice(sym))
|
||||||
|
sym->flags &= ~SYMBOL_NEW;
|
||||||
|
sym->flags &= ~SYMBOL_VALID;
|
||||||
|
switch (sym->type) {
|
||||||
|
case S_INT:
|
||||||
|
case S_HEX:
|
||||||
|
case S_STRING:
|
||||||
|
if (sym->user.val)
|
||||||
|
free(sym->user.val);
|
||||||
|
default:
|
||||||
|
sym->user.val = NULL;
|
||||||
|
sym->user.tri = no;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(defaults)
|
||||||
|
conf_read_file(defaults, sym);
|
||||||
|
|
||||||
|
if(in)
|
||||||
|
conf_read_file(in, sym);
|
||||||
|
|
||||||
if (modules_sym)
|
if (modules_sym)
|
||||||
sym_calc_value(modules_sym);
|
sym_calc_value(modules_sym);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -295,7 +325,7 @@ int conf_read(const char *name)
|
||||||
struct expr *e;
|
struct expr *e;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
if (conf_read_simple(name))
|
if (conf_read_simple(name, 1))
|
||||||
return 1;
|
return 1;
|
||||||
|
|
||||||
for_all_symbols(i, sym) {
|
for_all_symbols(i, sym) {
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
P(conf_parse,void,(const char *name));
|
P(conf_parse,void,(const char *name));
|
||||||
P(conf_read,int,(const char *name));
|
P(conf_read,int,(const char *name));
|
||||||
P(conf_reset,void,(void));
|
P(conf_reset,void,(void));
|
||||||
P(conf_read_simple,int,(const char *name));
|
P(conf_read_simple,int,(const char *name, int load_config));
|
||||||
P(conf_write,int,(const char *name));
|
P(conf_write,int,(const char *name));
|
||||||
|
|
||||||
/* menu.c */
|
/* menu.c */
|
||||||
|
|
Loading…
Reference in a new issue