mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-04 10:40:15 +02:00 
			
		
		
		
	kconfig: search for a config to base the local(mod|yes)config on
Instead of using the .config in the local directory. This patch changes streamline_config.pl to search various locations for a config. Here's the list and order of search: /proc/config.gz /boot/vmlinuz-`uname -r` vmlinux # local to the directory /lib/modules/`uname -r`/kernel/kernel/configs.ko kernel/configs.ko kernel/configs.o .config Once it finds a file that contains a config (it checks if the binary objects have configs first) it then uses it to create the .config with minimum modules needed. Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
This commit is contained in:
		
							parent
							
								
									de481560eb
								
							
						
					
					
						commit
						cdfc47950a
					
				
					 1 changed files with 62 additions and 1 deletions
				
			
		| 
						 | 
				
			
			@ -45,7 +45,68 @@
 | 
			
		|||
my $config = ".config";
 | 
			
		||||
my $linuxpath = ".";
 | 
			
		||||
 | 
			
		||||
open(CIN,$config) || die "Can't open current config file: $config";
 | 
			
		||||
my $uname = `uname -r`;
 | 
			
		||||
chomp $uname;
 | 
			
		||||
 | 
			
		||||
my @searchconfigs = (
 | 
			
		||||
	{
 | 
			
		||||
	    "file" => "/proc/config.gz",
 | 
			
		||||
	    "exec" => "zcat",
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
	    "file" => "/boot/vmlinuz-$uname",
 | 
			
		||||
	    "exec" => "scripts/extract-ikconfig",
 | 
			
		||||
	    "test" => "scripts/extract-ikconfig",
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
	    "file" => "vmlinux",
 | 
			
		||||
	    "exec" => "scripts/extract-ikconfig",
 | 
			
		||||
	    "test" => "scripts/extract-ikconfig",
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
	    "file" => "/lib/modules/$uname/kernel/kernel/configs.ko",
 | 
			
		||||
	    "exec" => "scripts/extract-ikconfig",
 | 
			
		||||
	    "test" => "scripts/extract-ikconfig",
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
	    "file" => "kernel/configs.ko",
 | 
			
		||||
	    "exec" => "scripts/extract-ikconfig",
 | 
			
		||||
	    "test" => "scripts/extract-ikconfig",
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
	    "file" => "kernel/configs.o",
 | 
			
		||||
	    "exec" => "scripts/extract-ikconfig",
 | 
			
		||||
	    "test" => "scripts/extract-ikconfig",
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
	    "file" => ".config",
 | 
			
		||||
	    "exec" => "cat",
 | 
			
		||||
	},
 | 
			
		||||
);
 | 
			
		||||
 | 
			
		||||
sub find_config {
 | 
			
		||||
    foreach my $conf (@searchconfigs) {
 | 
			
		||||
	my $file = $conf->{"file"};
 | 
			
		||||
 | 
			
		||||
	next if ( ! -f "$file");
 | 
			
		||||
 | 
			
		||||
	if (defined($conf->{"test"})) {
 | 
			
		||||
	    `$conf->{"test"} $conf->{"file"} 2>/dev/null`;
 | 
			
		||||
	    next if ($?);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	my $exec = $conf->{"exec"};
 | 
			
		||||
 | 
			
		||||
	print STDERR "using config: '$file'\n";
 | 
			
		||||
 | 
			
		||||
	open(CIN, "$exec $file |") || die "Failed to run $exec $file";
 | 
			
		||||
	return;
 | 
			
		||||
    }
 | 
			
		||||
    die "No config file found";
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
find_config;
 | 
			
		||||
 | 
			
		||||
my @makefiles = `find $linuxpath -name Makefile`;
 | 
			
		||||
my %depends;
 | 
			
		||||
my %selects;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in a new issue