From a77f3b665673fc5ad72271c8d2c9ef4a4cfeadd3 Mon Sep 17 00:00:00 2001
From: Lars-Peter Clausen <lars@metafoo.de>
Date: Mon, 5 Jan 2009 20:02:59 +0000
Subject: [PATCH] If a package is part of a virtual dependency and also listed
 as a normal dependency ensure that the dependency is always unconditional.
 Such a case happens if for example a package has a build dependency and the
 build dependency provides a virtual install dependency of the package.

SVN-Revision: 13877
---
 scripts/metadata.pl | 15 ++++++++++-----
 1 file changed, 10 insertions(+), 5 deletions(-)

diff --git a/scripts/metadata.pl b/scripts/metadata.pl
index 43e5ccc6d0..f000e9db9a 100755
--- a/scripts/metadata.pl
+++ b/scripts/metadata.pl
@@ -560,7 +560,7 @@ sub gen_package_mk() {
 		}
 
 		my $hasdeps = 0;
-		my $depline = "";
+		my %deplines;
 		foreach my $deps (@srcdeps) {
 			my $idx;
 			my $condition;
@@ -588,9 +588,10 @@ sub gen_package_mk() {
 				}
 				undef $idx if $idx =~ /^(kernel)|(base-files)$/;
 				if ($idx) {
+					my $depline;
 					next if $pkg->{src} eq $pkg_dep->{src};
 					next if $dep{$pkg->{src}."->".$idx};
-					next if $dep{$pkg->{src}."->($dep)".$idx};
+					next if $dep{$pkg->{src}."->($dep)".$idx} and $pkg_dep->{vdepends};
 					my $depstr;
 
 					if ($pkg_dep->{vdepends}) {
@@ -602,16 +603,20 @@ sub gen_package_mk() {
 					}
 					if ($condition) {
 						if ($condition =~ /^!(.+)/) {
-							$depline .= " \$(if \$(CONFIG_$1),,$depstr)";
+							$depline = "\$(if \$(CONFIG_$1),,$depstr)";
 						} else {
-							$depline .= " \$(if \$(CONFIG_$condition),$depstr)";
+							$depline = "\$(if \$(CONFIG_$condition),$depstr)";
 						}
 					} else {
-						$depline .= " $depstr";
+						$depline = $depstr;
+					}
+					if ($depline) {
+						$deplines{$idx.$dep} = $depline;
 					}
 				}
 			}
 		}
+		my $depline = join(" ", values %deplines);
 		if ($depline) {
 			$line .= "\$(curdir)/".$pkg->{subdir}."$pkg->{src}/compile += $depline\n";
 		}
-- 
GitLab