From bf9b79b20073d8301fe15e8f5d5c7c8b282730e0 Mon Sep 17 00:00:00 2001 From: nbd Date: Wed, 18 Jul 2007 11:31:01 +0000 Subject: dynamically enable/disable kernel config options for kmod packages based on build system config git-svn-id: svn://svn.openwrt.org/openwrt/trunk@8026 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- scripts/metadata.pl | 41 ++++++++++++++++++++++++++++++++++++++++- 1 file changed, 40 insertions(+), 1 deletion(-) (limited to 'scripts/metadata.pl') diff --git a/scripts/metadata.pl b/scripts/metadata.pl index 46f66446a..a665361da 100755 --- a/scripts/metadata.pl +++ b/scripts/metadata.pl @@ -137,6 +137,42 @@ sub parse_package_metadata() { return %category; } +sub gen_kconfig_overrides() { + my %config; + my $package; + my $pkginfo = shift @ARGV; + my $cfgfile = shift @ARGV; + + # parameter 2: build system config + open FILE, "<$cfgfile" or return; + while () { + /^(CONFIG_.+?)=(.+)$/ and $config{$1} = 1; + } + close FILE; + + # parameter 1: package metadata + open FILE, "<$pkginfo" or return; + while () { + /^Package:\s*(.+?)\s*$/ and $package = $1; + /^Kernel-Config:\s*(.+?)\s*$/ and do { + my @config = split /\s+/, $1; + foreach my $config (@config) { + my $val = 'm'; + if ($config =~ /^(.+?)=(.+)$/) { + $config = $1; + $val = $2; + } + if ($config{"CONFIG_PACKAGE_$package"} and ($config ne 'n')) { + print "$config=$val\n"; + } else { + print "# $config is not set\n"; + } + } + }; + }; + close FILE; +} + sub merge_package_lists($$) { my $list1 = shift; my $list2 = shift; @@ -572,13 +608,16 @@ sub parse_command() { /^target_config$/ and return gen_target_config(); /^package_mk$/ and return gen_package_mk(); /^package_config$/ and return gen_package_config(); + /^kconfig/ and return gen_kconfig_overrides(); } print <