diff options
author | Felix Fietkau <nbd@openwrt.org> | 2009-01-02 02:49:02 +0000 |
---|---|---|
committer | Felix Fietkau <nbd@openwrt.org> | 2009-01-02 02:49:02 +0000 |
commit | fbf0f923ed7ad344f9dec429d1bbafd3e6864a0e (patch) | |
tree | 52db2cce74d9ba5aefbd789a33c0d1753166ea0e | |
parent | 2f421eb302af57dccde7cf25ca0d8680bfa312ea (diff) | |
download | upstream-fbf0f923ed7ad344f9dec429d1bbafd3e6864a0e.tar.gz upstream-fbf0f923ed7ad344f9dec429d1bbafd3e6864a0e.tar.bz2 upstream-fbf0f923ed7ad344f9dec429d1bbafd3e6864a0e.zip |
fix recursive dependencies that might be caused by using conditional dependencies
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@13813 3c298f89-4303-0410-b956-a3cf2f4a3e73
-rwxr-xr-x | scripts/metadata.pl | 23 |
1 files changed, 18 insertions, 5 deletions
diff --git a/scripts/metadata.pl b/scripts/metadata.pl index dc6eada124..43e5ccc6d0 100755 --- a/scripts/metadata.pl +++ b/scripts/metadata.pl @@ -368,7 +368,8 @@ sub package_depends($$) { return $ret; } -sub mconf_depends($$) { +sub mconf_depends { + my $pkgname = shift; my $depends = shift; my $only_dep = shift; my $res; @@ -387,7 +388,13 @@ sub mconf_depends($$) { my $vdep; if ($depend =~ /^(.+):(.+)$/) { - $condition and $condition = "$condition && $1" or $condition = $1; + if ($1 ne "PACKAGE_$pkgname") { + if ($condition) { + $condition = "$condition && $1"; + } else { + $condition = $1; + } + } $depend = $2; } next if $seen->{$depend}; @@ -400,13 +407,19 @@ sub mconf_depends($$) { # 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 mconf_depends($package{$depend}->{depends}, 1, $dep, $seen, $condition); + $package{$depend} and mconf_depends($pkgname, $package{$depend}->{depends}, 1, $dep, $seen, $condition); $m = "select"; next if $only_dep; }; $flags =~ /@/ or $depend = "PACKAGE_$depend"; - $condition and ($m =~ /select/ and $depend = "$depend if $condition" or $depend = "!($condition) || $depend"); + if ($condition) { + if ($m =~ /select/) { + $depend = "$depend if $condition"; + } else { + $depend = "!($condition) || $depend"; + } + } } $dep->{$depend} =~ /select/ or $dep->{$depend} = $m; } @@ -468,7 +481,7 @@ sub print_package_config_category($) { foreach my $default (split /\s*,\s*/, $pkg->{default}) { print "\t\tdefault $default\n"; } - print mconf_depends($pkg->{depends}, 0); + print mconf_depends($pkg->{name}, $pkg->{depends}, 0); print "\t\thelp\n"; print $pkg->{description}; print "\n"; |