Pull localmodconfig changes from Steven Rostedt: "A bug was recently found in the make localmodconfig where it would miss dependencies of config files are include in other config files inside an if statement. Also added a debug print that helped in solving this bug." * tag 'localmodconfig-v3.10' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-kconfig: localmodconfig: Process source kconfig files as they are found localmodconfig: Add debug prints for dependencies of module configs
Unified · Split
| @@ -156,7 +156,6 @@ sub read_kconfig { · 155 unmodified lines | ||
| 156 | 156 | |
| 157 | 157 | my $state = "NONE"; |
| 158 | 158 | my $config; |
| 159 | − my @kconfigs; | |
| 160 | 159 | |
| 161 | 160 | my $cont = 0; |
| 162 | 161 | my $line; |
| @@ -190,7 +189,13 @@ sub read_kconfig { · 27 unmodified lines | ||
| 190 | 189 | |
| 191 | 190 | # collect any Kconfig sources |
| 192 | 191 | if (/^source\s*"(.*)"/) { |
| 193 | − $kconfigs[$#kconfigs+1] = $1; | |
| 192 | + my $kconfig = $1; | |
| 193 | + # prevent reading twice. | |
| 194 | + if (!defined($read_kconfigs{$kconfig})) { | |
| 195 | + $read_kconfigs{$kconfig} = 1; | |
| 196 | + read_kconfig($kconfig); | |
| 197 | + } | |
| 198 | + next; | |
| 194 | 199 | } |
| 195 | 200 | |
| 196 | 201 | # configs found |
| @@ -250,14 +255,6 @@ sub read_kconfig { · 53 unmodified lines | ||
| 250 | 255 | } |
| 251 | 256 | } |
| 252 | 257 | close($kinfile); |
| 253 | − | |
| 254 | − # read in any configs that were found. | |
| 255 | − foreach my $kconfig (@kconfigs) { | |
| 256 | − if (!defined($read_kconfigs{$kconfig})) { | |
| 257 | − $read_kconfigs{$kconfig} = 1; | |
| 258 | − read_kconfig($kconfig); | |
| 259 | − } | |
| 260 | − } | |
| 261 | 258 | } |
| 262 | 259 | |
| 263 | 260 | if ($kconfig) { |
| @@ -396,6 +393,15 @@ foreach my $module (keys(%modules)) { · 132 unmodified lines | ||
| 396 | 393 | foreach my $conf (@arr) { |
| 397 | 394 | $configs{$conf} = $module; |
| 398 | 395 | dprint "$conf added by direct ($module)\n"; |
| 396 | + if ($debugprint) { | |
| 397 | + my $c=$conf; | |
| 398 | + $c =~ s/^CONFIG_//; | |
| 399 | + if (defined($depends{$c})) { | |
| 400 | + dprint " deps = $depends{$c}\n"; | |
| 401 | + } else { | |
| 402 | + dprint " no deps\n"; | |
| 403 | + } | |
| 404 | + } | |
| 399 | 405 | } |
| 400 | 406 | } else { |
| 401 | 407 | # Most likely, someone has a custom (binary?) module loaded. |