mirror of
https://github.com/motioneye-project/motioneyeos.git
synced 2025-07-31 07:06:36 +00:00
kconfig: implement KCONFIG_PROBABILITY for rand{,package}config
rand{,package}config enables configuration options with 50% probability, which isn't always what we want in BR (because the "big" configs take a long time to build and limits the chance of a randconfig detecting a missing dependency), so introduce a KCONFIG_PROBABILITY environment variable to tweak the probability between 0 (all options off) and 100 (all options on). To use, simply set the environment variable before running make or pass it on the make command line - E.G. make randpackageconfig KCONFIG_PROBABILITY=10 Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
This commit is contained in:
parent
f4800b4654
commit
3435c1afb5
@ -845,7 +845,16 @@ void conf_set_all_new_symbols(enum conf_def_mode mode)
|
|||||||
struct symbol *sym, *csym;
|
struct symbol *sym, *csym;
|
||||||
struct property *prop;
|
struct property *prop;
|
||||||
struct expr *e;
|
struct expr *e;
|
||||||
int i, cnt, def;
|
int i, cnt, def, prob = 50;
|
||||||
|
|
||||||
|
if (mode == def_random) {
|
||||||
|
char *endp, *env = getenv("KCONFIG_PROBABILITY");
|
||||||
|
if (env && *env) {
|
||||||
|
int tmp = (int)strtol(env, &endp, 10);
|
||||||
|
if (*endp == '\0' && tmp >= 0 && tmp <= 100)
|
||||||
|
prob = tmp;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
for_all_symbols(i, sym) {
|
for_all_symbols(i, sym) {
|
||||||
if (sym_has_value(sym))
|
if (sym_has_value(sym))
|
||||||
@ -864,8 +873,15 @@ void conf_set_all_new_symbols(enum conf_def_mode mode)
|
|||||||
sym->def[S_DEF_USER].tri = no;
|
sym->def[S_DEF_USER].tri = no;
|
||||||
break;
|
break;
|
||||||
case def_random:
|
case def_random:
|
||||||
cnt = sym_get_type(sym) == S_TRISTATE ? 3 : 2;
|
cnt = (rand() % 100) - (100 - prob);
|
||||||
sym->def[S_DEF_USER].tri = (tristate)(rand() % cnt);
|
if (cnt < 0)
|
||||||
|
sym->def[S_DEF_USER].tri = no;
|
||||||
|
else
|
||||||
|
if ((sym_get_type(sym) == S_TRISTATE)
|
||||||
|
&& (cnt > prob/2))
|
||||||
|
sym->def[S_DEF_USER].tri = mod;
|
||||||
|
else
|
||||||
|
sym->def[S_DEF_USER].tri = yes;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
continue;
|
continue;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user