summaryrefslogtreecommitdiffstats
path: root/scripts
diff options
context:
space:
mode:
authornbd <nbd@3c298f89-4303-0410-b956-a3cf2f4a3e73>2007-02-12 23:50:40 +0000
committernbd <nbd@3c298f89-4303-0410-b956-a3cf2f4a3e73>2007-02-12 23:50:40 +0000
commitdf68e5dff33ca8c321b38e39e8bf82851f4c4d83 (patch)
treec431c31cd684066e1b64ccc5016cf027a15da252 /scripts
parent80d27b5e3cfc660e82f351d892248ff6595c4546 (diff)
Menuconfig will not treat 'select FOO' as a real dependency
thus if BAR depends on FOO and FOO depends on other config options, these dependencies will not be checked. To fix this, we simply emit all of FOO's depends (only real dependencies, no select) for BAR as well. git-svn-id: svn://svn.openwrt.org/openwrt/trunk@6293 3c298f89-4303-0410-b956-a3cf2f4a3e73
Diffstat (limited to 'scripts')
-rwxr-xr-xscripts/metadata.pl48
1 files changed, 34 insertions, 14 deletions
diff --git a/scripts/metadata.pl b/scripts/metadata.pl
index 963be3f38..7514a1713 100755
--- a/scripts/metadata.pl
+++ b/scripts/metadata.pl
@@ -341,6 +341,39 @@ sub package_depends($$) {
return $ret;
}
+sub mconf_depends($$) {
+ my $depends = shift;
+ my $only_dep = shift;
+ my $res;
+
+ $depends or return;
+ my @depends = @$depends;
+ foreach my $depend (@depends) {
+ my $m = "depends";
+ $depend =~ s/^([@\+]+)//;
+ my $flags = $1;
+ my $vdep;
+
+ if ($vdep = $package{$depend}->{vdepends}) {
+ $depend = join("||", map { "PACKAGE_".$_ } @$vdep);
+ } else {
+ $flags =~ /\+/ and do {
+ next if $only_dep;
+ $m = "select";
+
+ # Menuconfig will not treat 'select FOO' as a real dependency
+ # thus if FOO depends on other config options, these dependencies
+ # will not be checked. To fix this, we simply emit all of FOO's
+ # depends here as well.
+ $package{$depend} and $res .= mconf_depends($package{$depend}->{depends}, 1);
+ };
+ $flags =~ /@/ or $depend = "PACKAGE_$depend";
+ }
+ $res .= "\t\t$m $depend\n";
+ }
+ return $res;
+}
+
sub print_package_config_category($) {
my $cat = shift;
my %menus;
@@ -394,20 +427,7 @@ sub print_package_config_category($) {
foreach my $default (split /\s*,\s*/, $pkg->{default}) {
print "\t\tdefault $default\n";
}
- foreach my $depend (@{$pkg->{depends}}) {
- my $m = "depends";
- $depend =~ s/^([@\+]+)//;
- my $flags = $1;
- my $vdep;
-
- if ($vdep = $package{$depend}->{vdepends}) {
- $depend = join("||", map { "PACKAGE_".$_ } @$vdep);
- } else {
- $flags =~ /@/ or $depend = "PACKAGE_$depend";
- $flags =~ /\+/ and $m = "select";
- }
- print "\t\t$m $depend\n";
- }
+ print mconf_depends($pkg->{depends}, 0);
print "\t\thelp\n";
print $pkg->{description};
print "\n";