diff options
author | Steven Rostedt <srostedt@redhat.com> | 2009-04-30 20:39:48 +0200 |
---|---|---|
committer | Steven Rostedt <rostedt@goodmis.org> | 2009-08-19 04:02:00 +0200 |
commit | cdfc47950a531199a553cebab0ac481aa7062948 (patch) | |
tree | 23a1dfc287c61144ef3a7fcf83980a8fa50831f6 /scripts/kconfig/streamline_config.pl | |
parent | kconfig: keep config.gz around even if CONFIG_IKCONFIG_PROC is not set (diff) | |
download | linux-cdfc47950a531199a553cebab0ac481aa7062948.tar.xz linux-cdfc47950a531199a553cebab0ac481aa7062948.zip |
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>
Diffstat (limited to 'scripts/kconfig/streamline_config.pl')
-rw-r--r-- | scripts/kconfig/streamline_config.pl | 63 |
1 files changed, 62 insertions, 1 deletions
diff --git a/scripts/kconfig/streamline_config.pl b/scripts/kconfig/streamline_config.pl index 233464185a92..9fa3f81b1ed9 100644 --- a/scripts/kconfig/streamline_config.pl +++ b/scripts/kconfig/streamline_config.pl @@ -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; |