Skip to content

Commit

Permalink
kconfig: search for a config to base the local(mod|yes)config on
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Steven Rostedt authored and rostedt committed Aug 19, 2009
1 parent de48156 commit cdfc479
Showing 1 changed file with 62 additions and 1 deletion.
63 changes: 62 additions & 1 deletion scripts/kconfig/streamline_config.pl
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down

0 comments on commit cdfc479

Please sign in to comment.