If a package is part of a virtual dependency and also listed as a normal
authorlars <lars@3c298f89-4303-0410-b956-a3cf2f4a3e73>
Mon, 5 Jan 2009 20:02:59 +0000 (20:02 +0000)
committerlars <lars@3c298f89-4303-0410-b956-a3cf2f4a3e73>
Mon, 5 Jan 2009 20:02:59 +0000 (20:02 +0000)
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.

git-svn-id: svn://svn.openwrt.org/openwrt/trunk@13877 3c298f89-4303-0410-b956-a3cf2f4a3e73

scripts/metadata.pl

index 43e5ccc6d0ea20caba880e7f855f84d9e946bb1e..f000e9db9a5877cb04069998698a1d6544cb788a 100755 (executable)
@@ -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";
                }