For reproducibility, it can be useful to be able to specify the seed to use to seed the RNG. Add a new KCONFIG_SEED environment variable which can be set to the seed to use: $ make KCONFIG_SEED=42 randconfig $ sha1sum .config 70a128c8dcc61303069e1be352cce64114dfcbca .config $ make KCONFIG_SEED=42 randconfig $ sha1sum .config 70a128c8dcc61303069e1be352cce64114dfcbca .config It's very usefull for eg. debugging the kconfig parser.
Showing the changes to scripts (1 of 2 files). Show all
Unified · Split
| @@ -13,6 +13,7 @@ · 12 unmodified lines | ||
| 13 | 13 | #include <getopt.h> |
| 14 | 14 | #include <sys/stat.h> |
| 15 | 15 | #include <sys/time.h> |
| 16 | +#include <errno.h> | |
| 16 | 17 | |
| 17 | 18 | #include "lkc.h" |
| 18 | 19 | |
| @@ -514,14 +515,23 @@ int main(int ac, char **av) · 495 unmodified lines | ||
| 514 | 515 | { |
| 515 | 516 | struct timeval now; |
| 516 | 517 | unsigned int seed; |
| 518 | + char *seed_env; | |
| 517 | 519 | |
| 518 | 520 | /* |
| 519 | 521 | * Use microseconds derived seed, |
| 520 | 522 | * compensate for systems where it may be zero |
| 521 | 523 | */ |
| 522 | 524 | gettimeofday(&now, NULL); |
| 523 | − | |
| 524 | 525 | seed = (unsigned int)((now.tv_sec + 1) * (now.tv_usec + 1)); |
| 526 | + | |
| 527 | + seed_env = getenv("KCONFIG_SEED"); | |
| 528 | + if( seed_env && *seed_env ) { | |
| 529 | + char *endp; | |
| 530 | + int tmp = (int)strtol(seed_env, &endp, 10); | |
| 531 | + if (*endp == '\0') { | |
| 532 | + seed = tmp; | |
| 533 | + } | |
| 534 | + } | |
| 525 | 535 | srand(seed); |
| 526 | 536 | break; |
| 527 | 537 | } |