~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/scripts/kconfig/streamline_config.pl

Version: ~ [ linux-6.12-rc7 ] ~ [ linux-6.11.7 ] ~ [ linux-6.10.14 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.60 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.116 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.171 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.229 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.285 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.323 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.12 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

Diff markup

Differences between /scripts/kconfig/streamline_config.pl (Version linux-6.12-rc7) and /scripts/kconfig/streamline_config.pl (Version linux-2.6.0)


  1 #!/usr/bin/env perl                               
  2 # SPDX-License-Identifier: GPL-2.0                
  3 #                                                 
  4 # Copyright 2005-2009 - Steven Rostedt            
  5 #                                                 
  6 #  It's simple enough to figure out how this w    
  7 #  If not, then you can ask me at stripconfig@    
  8 #                                                 
  9 # What it does?                                   
 10 #                                                 
 11 #   If you have installed a Linux kernel from     
 12 #   that turns on way too many modules than yo    
 13 #   you only want the modules you use, then th    
 14 #   is perfect for you.                           
 15 #                                                 
 16 #   It gives you the ability to turn off all t    
 17 #   not loaded on your system.                    
 18 #                                                 
 19 # Howto:                                          
 20 #                                                 
 21 #  1. Boot up the kernel that you want to stre    
 22 #  2. Change directory to the directory holdin    
 23 #       kernel that you just booted.              
 24 #  3. Copy the configuration file to this dire    
 25 #  4. Have all your devices that you need modu    
 26 #      operational (make sure that their corre    
 27 #  5. Run this script redirecting the output t    
 28 #       like config_strip.                        
 29 #  6. Back up your old config (if you want too    
 30 #  7. copy the config_strip file to .config       
 31 #  8. Run "make oldconfig"                        
 32 #                                                 
 33 #  Now your kernel is ready to be built with o    
 34 #  are loaded.                                    
 35 #                                                 
 36 # Here's what I did with my Debian distributio    
 37 #                                                 
 38 #    cd /usr/src/linux-2.6.10                     
 39 #    cp /boot/config-2.6.10-1-686-smp .config     
 40 #    ~/bin/streamline_config > config_strip       
 41 #    mv .config config_sav                        
 42 #    mv config_strip .config                      
 43 #    make oldconfig                               
 44 #                                                 
 45 use warnings;                                     
 46 use strict;                                       
 47 use Getopt::Long;                                 
 48                                                   
 49 # set the environment variable LOCALMODCONFIG_    
 50 # debug output.                                   
 51 my $debugprint = 0;                               
 52 $debugprint = 1 if (defined($ENV{LOCALMODCONFI    
 53                                                   
 54 sub dprint {                                      
 55     return if (!$debugprint);                     
 56     print STDERR @_;                              
 57 }                                                 
 58                                                   
 59 my $uname = `uname -r`;                           
 60 chomp $uname;                                     
 61                                                   
 62 my @searchconfigs = (                             
 63         {                                         
 64             "file" => ".config",                  
 65             "exec" => "cat",                      
 66         },                                        
 67         {                                         
 68             "file" => "/proc/config.gz",          
 69             "exec" => "zcat",                     
 70         },                                        
 71         {                                         
 72             "file" => "/boot/config-$uname",      
 73             "exec" => "cat",                      
 74         },                                        
 75         {                                         
 76             "file" => "/boot/vmlinuz-$uname",     
 77             "exec" => "scripts/extract-ikconfi    
 78             "test" => "scripts/extract-ikconfi    
 79         },                                        
 80         {                                         
 81             "file" => "vmlinux",                  
 82             "exec" => "scripts/extract-ikconfi    
 83             "test" => "scripts/extract-ikconfi    
 84         },                                        
 85         {                                         
 86             "file" => "/lib/modules/$uname/ker    
 87             "exec" => "scripts/extract-ikconfi    
 88             "test" => "scripts/extract-ikconfi    
 89         },                                        
 90         {                                         
 91             "file" => "kernel/configs.ko",        
 92             "exec" => "scripts/extract-ikconfi    
 93             "test" => "scripts/extract-ikconfi    
 94         },                                        
 95         {                                         
 96             "file" => "kernel/configs.o",         
 97             "exec" => "scripts/extract-ikconfi    
 98             "test" => "scripts/extract-ikconfi    
 99         },                                        
100 );                                                
101                                                   
102 sub read_config {                                 
103     foreach my $conf (@searchconfigs) {           
104         my $file = $conf->{"file"};               
105                                                   
106         next if ( ! -f "$file");                  
107                                                   
108         if (defined($conf->{"test"})) {           
109             `$conf->{"test"} $conf->{"file"} 2    
110             next if ($?);                         
111         }                                         
112                                                   
113         my $exec = $conf->{"exec"};               
114                                                   
115         print STDERR "using config: '$file'\n"    
116                                                   
117         open(my $infile, '-|', "$exec $file")     
118         my @x = <$infile>;                        
119         close $infile;                            
120         return @x;                                
121     }                                             
122     die "No config file found";                   
123 }                                                 
124                                                   
125 my @config_file = read_config;                    
126                                                   
127 # Parse options                                   
128 my $localmodconfig = 0;                           
129 my $localyesconfig = 0;                           
130                                                   
131 GetOptions("localmodconfig" => \$localmodconfi    
132            "localyesconfig" => \$localyesconfi    
133                                                   
134 # Get the build source and top level Kconfig f    
135 my $ksource = ($ARGV[0] ? $ARGV[0] : '.');        
136 my $kconfig = $ARGV[1];                           
137 my $lsmod_file = $ENV{'LSMOD'};                   
138                                                   
139 my @makefiles = `find $ksource -name Makefile     
140 chomp @makefiles;                                 
141                                                   
142 my %depends;                                      
143 my %selects;                                      
144 my %prompts;                                      
145 my %objects;                                      
146 my %config2kfile;                                 
147 my $var;                                          
148 my $iflevel = 0;                                  
149 my @ifdeps;                                       
150                                                   
151 # prevent recursion                               
152 my %read_kconfigs;                                
153                                                   
154 sub read_kconfig {                                
155     my ($kconfig) = @_;                           
156                                                   
157     my $state = "NONE";                           
158     my $config;                                   
159                                                   
160     my $cont = 0;                                 
161     my $line;                                     
162                                                   
163     my $source = "$ksource/$kconfig";             
164     my $last_source = "";                         
165                                                   
166     # Check for any environment variables used    
167     while ($source =~ /\$\((\w+)\)/ && $last_s    
168         my $env = $1;                             
169         $last_source = $source;                   
170         $source =~ s/\$\($env\)/$ENV{$env}/;      
171     }                                             
172                                                   
173     open(my $kinfile, '<', $source) || die "Ca    
174     while (<$kinfile>) {                          
175         chomp;                                    
176                                                   
177         # Make sure that lines ending with \ c    
178         if ($cont) {                              
179             $_ = $line . " " . $_;                
180         }                                         
181                                                   
182         if (s/\\$//) {                            
183             $cont = 1;                            
184             $line = $_;                           
185             next;                                 
186         }                                         
187                                                   
188         $cont = 0;                                
189                                                   
190         # collect any Kconfig sources             
191         if (/^source\s+"?([^"]+)/) {              
192             my $kconfig = $1;                     
193             # prevent reading twice.              
194             if (!defined($read_kconfigs{$kconf    
195                 $read_kconfigs{$kconfig} = 1;     
196                 read_kconfig($kconfig);           
197             }                                     
198             next;                                 
199         }                                         
200                                                   
201         # configs found                           
202         if (/^\s*(menu)?config\s+(\S+)\s*$/) {    
203             $state = "NEW";                       
204             $config = $2;                         
205             $config2kfile{"CONFIG_$config"} =     
206                                                   
207             # Add depends for 'if' nesting        
208             for (my $i = 0; $i < $iflevel; $i+    
209                 if ($i) {                         
210                     $depends{$config} .= " " .    
211                 } else {                          
212                     $depends{$config} = $ifdep    
213                 }                                 
214                 $state = "DEP";                   
215             }                                     
216                                                   
217         # collect the depends for the config      
218         } elsif ($state eq "NEW" && /^\s*depen    
219             $state = "DEP";                       
220             $depends{$config} = $1;               
221         } elsif ($state eq "DEP" && /^\s*depen    
222             $depends{$config} .= " " . $1;        
223         } elsif ($state eq "DEP" && /^\s*def(_    
224             my $dep = $3;                         
225             if ($dep !~ /^\s*(y|m|n)\s*$/) {      
226                 $dep =~ s/.*\sif\s+//;            
227                 $depends{$config} .= " " . $de    
228                 dprint "Added default depends     
229             }                                     
230                                                   
231         # Get the configs that select this con    
232         } elsif ($state ne "NONE" && /^\s*sele    
233             my $conf = $1;                        
234             if (defined($selects{$conf})) {       
235                 $selects{$conf} .= " " . $conf    
236             } else {                              
237                 $selects{$conf} = $config;        
238             }                                     
239                                                   
240         # configs without prompts must be sele    
241         } elsif ($state ne "NONE" && /^\s*(tri    
242             # note if the config has a prompt     
243             $prompts{$config} = 1;                
244                                                   
245         # Check for if statements                 
246         } elsif (/^if\s+(.*\S)\s*$/) {            
247             my $deps = $1;                        
248             # remove beginning and ending non     
249             $deps =~ s/^[^a-zA-Z0-9_]*//;         
250             $deps =~ s/[^a-zA-Z0-9_]*$//;         
251                                                   
252             my @deps = split /[^a-zA-Z0-9_]+/,    
253                                                   
254             $ifdeps[$iflevel++] = join ':', @d    
255                                                   
256         } elsif (/^endif/) {                      
257                                                   
258             $iflevel-- if ($iflevel);             
259                                                   
260         # stop on "help" and keywords that end    
261         } elsif (/^\s*(---)?help(---)?\s*$/ ||    
262             $state = "NONE";                      
263         }                                         
264     }                                             
265     close($kinfile);                              
266 }                                                 
267                                                   
268 if ($kconfig) {                                   
269     read_kconfig($kconfig);                       
270 }                                                 
271                                                   
272 # Makefiles can use variables to define their     
273 sub convert_vars {                                
274     my ($line, %vars) = @_;                       
275                                                   
276     my $process = "";                             
277                                                   
278     while ($line =~ s/^(.*?)(\$\((.*?)\))//) {    
279         my $start = $1;                           
280         my $variable = $2;                        
281         my $var = $3;                             
282                                                   
283         if (defined($vars{$var})) {               
284             $process .= $start . $vars{$var};     
285         } else {                                  
286             $process .= $start . $variable;       
287         }                                         
288     }                                             
289                                                   
290     $process .= $line;                            
291                                                   
292     return $process;                              
293 }                                                 
294                                                   
295 # Read all Makefiles to map the configs to the    
296 foreach my $makefile (@makefiles) {               
297                                                   
298     my $line = "";                                
299     my %make_vars;                                
300                                                   
301     open(my $infile, '<', $makefile) || die "C    
302     while (<$infile>) {                           
303         # if this line ends with a backslash,     
304         chomp;                                    
305         if (/^(.*)\\$/) {                         
306             $line .= $1;                          
307             next;                                 
308         }                                         
309                                                   
310         $line .= $_;                              
311         $_ = $line;                               
312         $line = "";                               
313                                                   
314         my $objs;                                 
315                                                   
316         # Convert variables in a line (could d    
317         $_ = convert_vars($_, %make_vars);        
318                                                   
319         # collect objects after obj-$(CONFIG_F    
320         if (/obj-\$[({](CONFIG_[^})]*)[)}]\s*[    
321             $var = $1;                            
322             $objs = $2;                           
323                                                   
324         # check if variables are set              
325         } elsif (/^\s*(\S+)\s*[:]?=\s*(.*\S)/)    
326             $make_vars{$1} = $2;                  
327         }                                         
328         if (defined($objs)) {                     
329             foreach my $obj (split /\s+/,$objs    
330                 $obj =~ s/-/_/g;                  
331                 if ($obj =~ /(.*)\.o$/) {         
332                     # Objects may be enabled b    
333                     # Store configs in an arra    
334                     my @arr;                      
335                                                   
336                     if (defined($objects{$1}))    
337                         @arr = @{$objects{$1}}    
338                     }                             
339                                                   
340                     $arr[$#arr+1] = $var;         
341                                                   
342                     # The objects have a hash     
343                     # of an array of configs.     
344                     $objects{$1} = \@arr;         
345                 }                                 
346             }                                     
347         }                                         
348     }                                             
349     close($infile);                               
350 }                                                 
351                                                   
352 my %modules;                                      
353 my $linfile;                                      
354                                                   
355 if (defined($lsmod_file)) {                       
356     if ( ! -f $lsmod_file) {                      
357         if ( -f $ENV{'objtree'}."/".$lsmod_fil    
358             $lsmod_file = $ENV{'objtree'}."/".    
359         } else {                                  
360                 die "$lsmod_file not found";      
361         }                                         
362     }                                             
363                                                   
364     my $otype = ( -x $lsmod_file) ? '-|' : '<'    
365     open($linfile, $otype, $lsmod_file);          
366                                                   
367 } else {                                          
368                                                   
369     # see what modules are loaded on this syst    
370     my $lsmod;                                    
371                                                   
372     foreach my $dir ( ("/sbin", "/bin", "/usr/    
373         if ( -x "$dir/lsmod" ) {                  
374             $lsmod = "$dir/lsmod";                
375             last;                                 
376         }                                         
377     }                                             
378     if (!defined($lsmod)) {                       
379         # try just the path                       
380         $lsmod = "lsmod";                         
381     }                                             
382                                                   
383     open($linfile, '-|', $lsmod) || die "Can n    
384 }                                                 
385                                                   
386 while (<$linfile>) {                              
387         next if (/^Module/);  # Skip the first    
388         if (/^(\S+)/) {                           
389                 $modules{$1} = 1;                 
390         }                                         
391 }                                                 
392 close ($linfile);                                 
393                                                   
394 # add to the configs hash all configs that are    
395 # a loaded module. This is a direct obj-${CONF    
396 # where we know we need bar.o so we add FOO to    
397 my %configs;                                      
398 foreach my $module (keys(%modules)) {             
399     if (defined($objects{$module})) {             
400         my @arr = @{$objects{$module}};           
401         foreach my $conf (@arr) {                 
402             $configs{$conf} = $module;            
403             dprint "$conf added by direct ($mo    
404             if ($debugprint) {                    
405                 my $c=$conf;                      
406                 $c =~ s/^CONFIG_//;               
407                 if (defined($depends{$c})) {      
408                     dprint " deps = $depends{$    
409                 } else {                          
410                     dprint " no deps\n";          
411                 }                                 
412             }                                     
413         }                                         
414     } else {                                      
415         # Most likely, someone has a custom (b    
416         print STDERR "$module config not found    
417     }                                             
418 }                                                 
419                                                   
420 # Read the current config, and see what is ena    
421 # ignore configs that we would not enable anyw    
422                                                   
423 my %orig_configs;                                 
424 my $valid = "A-Za-z_0-9";                         
425                                                   
426 foreach my $line (@config_file) {                 
427     $_ = $line;                                   
428                                                   
429     if (/(CONFIG_[$valid]*)=(m|y)/) {             
430         $orig_configs{$1} = $2;                   
431     }                                             
432 }                                                 
433                                                   
434 my $repeat = 1;                                   
435                                                   
436 my $depconfig;                                    
437                                                   
438 #                                                 
439 # Note, we do not care about operands (like: &    
440 # config that is in the depend list of another    
441 # not enable configs that are not already enab    
442 # config A that depends on !B, we can still ad    
443 # to keep on. If A was on in the original conf    
444 # and B would not be turned on by this script.    
445 #                                                 
446 sub parse_config_depends                          
447 {                                                 
448     my ($p) = @_;                                 
449                                                   
450     while ($p =~ /[$valid]/) {                    
451                                                   
452         if ($p =~ /^[^$valid]*([$valid]+)/) {     
453             my $conf = "CONFIG_" . $1;            
454                                                   
455             $p =~ s/^[^$valid]*[$valid]+//;       
456                                                   
457             # We only need to process if the d    
458             if (!defined($orig_configs{$conf})    
459                 next;                             
460             }                                     
461                                                   
462             if (!defined($configs{$conf})) {      
463                 # We must make sure that this     
464                 # dependencies met.               
465                 $repeat = 1; # do again           
466                 dprint "$conf selected by depe    
467                 $configs{$conf} = 1;              
468             }                                     
469         } else {                                  
470             die "this should never happen";       
471         }                                         
472     }                                             
473 }                                                 
474                                                   
475 # Select is treated a bit differently than dep    
476 # when a config has no prompt and requires ano    
477 # selected. We use to just select all configs     
478 # config, but found that that can balloon into    
479 # of configs that we do not care about.           
480 #                                                 
481 # The idea is we look at all the configs that     
482 # is already in our list of configs to enable,    
483 # else to do. If there isn't, we pick the firs    
484 # enabled in the original config and use that.    
485 sub parse_config_selects                          
486 {                                                 
487     my ($config, $p) = @_;                        
488                                                   
489     my $next_config;                              
490                                                   
491     while ($p =~ /[$valid]/) {                    
492                                                   
493         if ($p =~ /^[^$valid]*([$valid]+)/) {     
494             my $conf = "CONFIG_" . $1;            
495                                                   
496             $p =~ s/^[^$valid]*[$valid]+//;       
497                                                   
498             # Make sure that this config exist    
499             if (!defined($orig_configs{$conf})    
500                 dprint "$conf not set for $con    
501                 next;                             
502             }                                     
503                                                   
504             # Check if something other than a     
505             if (defined($orig_configs{$conf})     
506                 dprint "$conf (non module) sel    
507                 # we are good with this           
508                 return;                           
509             }                                     
510             if (defined($configs{$conf})) {       
511                 dprint "$conf selects $config     
512                 # A set config selects this co    
513                 return;                           
514             }                                     
515             # Set this config to be selected      
516             if (!defined($next_config)) {         
517                 $next_config = $conf;             
518             }                                     
519         } else {                                  
520             die "this should never happen";       
521         }                                         
522     }                                             
523                                                   
524     # If no possible config selected this, the    
525     if (!defined($next_config)) {                 
526         print STDERR "WARNING: $config is requ    
527         print STDERR "  current config selects    
528         return;                                   
529     }                                             
530                                                   
531     # If we are here, then we found no config     
532     # selects this config. Repeat.                
533     $repeat = 1;                                  
534     # Make this config need to be selected        
535     $configs{$next_config} = 1;                   
536     dprint "$next_config selected by select $c    
537 }                                                 
538                                                   
539 my %process_selects;                              
540                                                   
541 # loop through all configs, select their depen    
542 sub loop_depend {                                 
543     $repeat = 1;                                  
544                                                   
545     while ($repeat) {                             
546         $repeat = 0;                              
547                                                   
548       forloop:                                    
549         foreach my $config (keys %configs) {      
550                                                   
551             # If this config is not a module,     
552             if (defined($orig_configs{$config}    
553                 next forloop;                     
554             }                                     
555                                                   
556             $config =~ s/^CONFIG_//;              
557             $depconfig = $config;                 
558                                                   
559             if (defined($depends{$config})) {     
560                 # This config has dependencies    
561                 parse_config_depends $depends{    
562             }                                     
563                                                   
564             # If the config has no prompt, the    
565             # that is enabled selected it. Or     
566             if (!defined($prompts{$config}) &&    
567                 $process_selects{$config} = 1;    
568             }                                     
569         }                                         
570     }                                             
571 }                                                 
572                                                   
573 sub loop_select {                                 
574                                                   
575     foreach my $config (keys %process_selects)    
576         $config =~ s/^CONFIG_//;                  
577                                                   
578         dprint "Process select $config\n";        
579                                                   
580         # config has no prompt and must be sel    
581         parse_config_selects $config, $selects    
582     }                                             
583 }                                                 
584                                                   
585 while ($repeat) {                                 
586     # Get the first set of configs and their d    
587     loop_depend;                                  
588                                                   
589     $repeat = 0;                                  
590                                                   
591     # Now we need to see if we have to check s    
592     loop_select;                                  
593 }                                                 
594                                                   
595 my %setconfigs;                                   
596 my @preserved_kconfigs;                           
597 if (defined($ENV{'LMC_KEEP'})) {                  
598         @preserved_kconfigs = split(/:/,$ENV{L    
599 }                                                 
600                                                   
601 sub in_preserved_kconfigs {                       
602     my $kconfig = $config2kfile{$_[0]};           
603     if (!defined($kconfig)) {                     
604         return 0;                                 
605     }                                             
606     foreach my $excl (@preserved_kconfigs) {      
607         if($kconfig =~ /^$excl/) {                
608             return 1;                             
609         }                                         
610     }                                             
611     return 0;                                     
612 }                                                 
613                                                   
614 # Finally, read the .config file and turn off     
615 # we could not find a reason to keep enabled.     
616 foreach my $line (@config_file) {                 
617     $_ = $line;                                   
618                                                   
619     if (/CONFIG_IKCONFIG/) {                      
620         if (/# CONFIG_IKCONFIG is not set/) {     
621             # enable IKCONFIG at least as a mo    
622             print "CONFIG_IKCONFIG=m\n";          
623             # don't ask about PROC                
624             print "# CONFIG_IKCONFIG_PROC is n    
625         } else {                                  
626             print;                                
627         }                                         
628         next;                                     
629     }                                             
630                                                   
631     if (/CONFIG_MODULE_SIG_KEY="(.+)"/) {         
632         my $orig_cert = $1;                       
633         my $default_cert = "certs/signing_key.    
634                                                   
635         # Check that the logic in this script     
636         if (!defined($depends{"MODULE_SIG_KEY"    
637             $depends{"MODULE_SIG_KEY"} !~ /"\Q    
638             print STDERR "WARNING: MODULE_SIG_    
639                 "update needed to ", __FILE__,    
640             print;                                
641         } elsif ($orig_cert ne $default_cert &    
642             print STDERR "Module signature ver    
643                 "module signing key \"$orig_ce    
644                 "signing key to default value.    
645             print "CONFIG_MODULE_SIG_KEY=\"$de    
646         } else {                                  
647             print;                                
648         }                                         
649         next;                                     
650     }                                             
651                                                   
652     if (/CONFIG_SYSTEM_TRUSTED_KEYS="(.+)"/) {    
653         my $orig_keys = $1;                       
654                                                   
655         if (! -f $orig_keys) {                    
656             print STDERR "System keyring enabl    
657                 "not found. Resetting keys to     
658             print "CONFIG_SYSTEM_TRUSTED_KEYS=    
659         } else {                                  
660             print;                                
661         }                                         
662         next;                                     
663     }                                             
664                                                   
665     if (/^(CONFIG.*)=(m|y)/) {                    
666         if (in_preserved_kconfigs($1)) {          
667             dprint "Preserve config $1";          
668             print;                                
669             next;                                 
670         }                                         
671         if (defined($configs{$1})) {              
672             if ($localyesconfig) {                
673                 $setconfigs{$1} = 'y';            
674                 print "$1=y\n";                   
675                 next;                             
676             } else {                              
677                 $setconfigs{$1} = $2;             
678             }                                     
679         } elsif ($2 eq "m") {                     
680             print "# $1 is not set\n";            
681             next;                                 
682         }                                         
683     }                                             
684     print;                                        
685 }                                                 
686                                                   
687 # Integrity check, make sure all modules that     
688 # indeed have their configs set.                  
689 loop:                                             
690 foreach my $module (keys(%modules)) {             
691     if (defined($objects{$module})) {             
692         my @arr = @{$objects{$module}};           
693         foreach my $conf (@arr) {                 
694             if (defined($setconfigs{$conf})) {    
695                 next loop;                        
696             }                                     
697         }                                         
698         print STDERR "module $module did not h    
699         foreach my $conf (@arr) {                 
700             print STDERR " " , $conf;             
701         }                                         
702         print STDERR "\n";                        
703     }                                             
704 }                                                 
705                                                   
706 # vim: softtabstop=4                              
                                                      

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php