From fbf0f923ed7ad344f9dec429d1bbafd3e6864a0e Mon Sep 17 00:00:00 2001 From: Felix Fietkau Date: Fri, 2 Jan 2009 02:49:02 +0000 Subject: 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 --- scripts/metadata.pl | 23 ++++++++++++++++++----- 1 file 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"; -- cgit v1.2.3