X-Git-Url: https://git.rohieb.name/openwrt.git/blobdiff_plain/9ed76c6c5c63f0923dc70dd7c7f99f9d1c648489..39a3cef8d7b310d70cca42e393ab565951cef8b3:/scripts/metadata.pl diff --git a/scripts/metadata.pl b/scripts/metadata.pl index 46f66446a..9b983545f 100755 --- a/scripts/metadata.pl +++ b/scripts/metadata.pl @@ -137,6 +137,53 @@ sub parse_package_metadata() { return %category; } +sub gen_kconfig_overrides() { + my %config; + my %kconfig; + 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'; + my $override; + if ($config =~ /^(.+?)=(.+)$/) { + $config = $1; + $override = 1; + $val = $2; + } + if ($config{"CONFIG_PACKAGE_$package"} and ($config ne 'n')) { + $kconfig{$config} = $val; + } elsif (!$override) { + $kconfig{$config} or $kconfig{$config} = 'n'; + } + } + }; + }; + close FILE; + + foreach my $kconfig (sort keys %kconfig) { + if ($kconfig{$kconfig} eq 'n') { + print "# $kconfig is not set\n"; + } else { + print "$kconfig=$kconfig{$kconfig}\n"; + } + } +} + sub merge_package_lists($$) { my $list1 = shift; my $list2 = shift; @@ -200,12 +247,11 @@ sub target_config_features(@) { /broken/ and $ret .= "\tdepends BROKEN\n"; /pci/ and $ret .= "\tselect PCI_SUPPORT\n"; /usb/ and $ret .= "\tselect USB_SUPPORT\n"; - /atm/ and $ret .= "\tselect ATM_SUPPORT\n"; /pcmcia/ and $ret .= "\tselect PCMCIA_SUPPORT\n"; - /video/ and $ret .= "\tselect VIDEO_SUPPORT\n"; /squashfs/ and $ret .= "\tselect USES_SQUASHFS\n"; /jffs2/ and $ret .= "\tselect USES_JFFS2\n"; /ext2/ and $ret .= "\tselect USES_EXT2\n"; + /tgz/ and $ret .= "\tselect USES_TGZ\n"; } return $ret; } @@ -510,7 +556,7 @@ sub gen_package_mk() { } if ($config) { print "package-$config += $pkg->{subdir}$pkg->{src}\n"; - $pkg->{prereq} and print "prereq-$config += $pkg->{src}\n"; + $pkg->{prereq} and print "prereq-$config += $pkg->{subdir}$pkg->{src}\n"; } my $hasdeps = 0; @@ -530,12 +576,12 @@ sub gen_package_mk() { undef $idx if $idx =~ /^(kernel)|(base-files)$/; if ($idx) { next if $dep{$pkg->{src}."->".$idx}; - $depline .= " $idx\-compile"; + $depline .= " \$(curdir)/$idx/compile"; $dep{$pkg->{src}."->".$idx} = 1; } } if ($depline) { - $line .= $pkg->{subdir}."$pkg->{src}-compile: $depline\n"; + $line .= "\$(curdir)/".$pkg->{subdir}."$pkg->{src}/compile += $depline\n"; } } @@ -558,7 +604,7 @@ $cmds \\ ) > \$@ ifneq (\$(UCI_PRECONFIG)\$(CONFIG_UCI_PRECONFIG),) - preconfig: \$(TARGET_DIR)/etc/uci-defaults/$preconfig + package/preconfig: \$(TARGET_DIR)/etc/uci-defaults/$preconfig endif EOF } @@ -572,13 +618,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 <