mirror of
https://github.com/torvalds/linux.git
synced 2026-11-07 06:17:02 +01:00
ktest: Sort config keys before writing config files
apply_min_config(), save_config(), and make_min_config() write CONFIG_* lines by iterating "keys %hash" with no sort. Perl randomizes hash iteration order per process by default, so the line order of the resulting config files is not reproducible across otherwise identical invocations. When two of those lines are mutually exclusive members of the same Kconfig "choice", this can change which one "make olddefconfig" keeps, nondeterministically, from run to run. Observed with CONFIG_DEBUG_INFO_DWARF5 vs CONFIG_DEBUG_INFO_DWARF_TOOLCHAIN_DEFAULT: five consecutive "-C" builds from identical ADD_CONFIG/MIN_CONFIG inputs alternated between the two, which is enough to force a near-complete rebuild each time since CONFIG_DEBUG_INFO_* affects every object's compile flags. Sort the keys before writing so the same inputs always produce the same config output. Link: https://patch.msgid.link/20261014-ktest-kconfig-perl-hash-v1-1-66201a2dee82@marliere.net Signed-off-by: Ricardo B. Marlière (SUSE) <ricardo@marliere.net> Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
This commit is contained in:
parent
c03c1a1450
commit
bd1413cdee
|
|
@ -2652,7 +2652,7 @@ sub apply_min_config {
|
|||
}
|
||||
close IN;
|
||||
}
|
||||
foreach my $config (keys %force_config) {
|
||||
foreach my $config (sort keys %force_config) {
|
||||
print OUT "$force_config{$config}\n";
|
||||
}
|
||||
close OUT;
|
||||
|
|
@ -3325,7 +3325,7 @@ sub save_config {
|
|||
|
||||
open(OUT, ">$file") or dodie "Can not write to $file";
|
||||
|
||||
foreach my $config (keys %configs) {
|
||||
foreach my $config (sort keys %configs) {
|
||||
print OUT "$configs{$config}\n";
|
||||
}
|
||||
close(OUT);
|
||||
|
|
@ -4137,7 +4137,7 @@ sub make_min_config {
|
|||
if (defined($ignore_config)) {
|
||||
open (OUT, ">$temp_config") or
|
||||
dodie "Can't write to $temp_config";
|
||||
foreach my $config (keys %save_configs) {
|
||||
foreach my $config (sort keys %save_configs) {
|
||||
print OUT "$save_configs{$config}\n";
|
||||
}
|
||||
close OUT;
|
||||
|
|
@ -4165,10 +4165,10 @@ sub make_min_config {
|
|||
# Save off all the current mandatory configs
|
||||
open (OUT, ">$temp_config") or
|
||||
dodie "Can't write to $temp_config";
|
||||
foreach my $config (keys %keep_configs) {
|
||||
foreach my $config (sort keys %keep_configs) {
|
||||
print OUT "$keep_configs{$config}\n";
|
||||
}
|
||||
foreach my $config (keys %min_configs) {
|
||||
foreach my $config (sort keys %min_configs) {
|
||||
print OUT "$min_configs{$config}\n";
|
||||
}
|
||||
close OUT;
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user