Răsfoiți Sursa

consider virtual dependencies (generated by using PROVIDES:=) when generating the build dependencies (fixes python build dependency errors)

SVN-Revision: 11428
Felix Fietkau 18 ani în urmă
părinte
comite
51bc4434dd
1 a modificat fișierele cu 32 adăugiri și 14 ștergeri
  1. 32 14
      scripts/metadata.pl

+ 32 - 14
scripts/metadata.pl

@@ -495,6 +495,7 @@ EOF
 sub gen_package_mk() {
 	my %conf;
 	my %dep;
+	my %done;
 	my $line;
 
 	parse_package_metadata($ARGV[0]) or exit 1;
@@ -503,6 +504,9 @@ sub gen_package_mk() {
 		my $pkg = $package{$name};
 
 		next if defined $pkg->{vdepends};
+		next if $done{$pkg->{src}};
+		$done{$pkg->{src}} = 1;
+
 		if ($ENV{SDK}) {
 			$conf{$pkg->{src}} or do {
 				$config = 'm';
@@ -518,23 +522,37 @@ sub gen_package_mk() {
 
 		my $hasdeps = 0;
 		my $depline = "";
-		foreach my $dep (@{$pkg->{depends}}, @{$pkg->{builddepends}}) {
-			next if $dep =~ /@/;
-			$dep =~ s/\+//;
+		foreach my $deps (@{$pkg->{depends}}, @{$pkg->{builddepends}}) {
+			next if $deps =~ /@/;
+			$deps =~ s/\+//;
 			my $idx;
-			my $pkg_dep = $package{$dep};
-			next if defined $pkg_dep->{vdepends};
+			my $pkg_dep = $package{$deps};
+			my @deps;
 
-			if (defined $pkg_dep->{src}) {
-				($pkg->{src} ne $pkg_dep->{src}) and $idx = $pkg_dep->{subdir}.$pkg_dep->{src};
-			} elsif (defined($srcpackage{$dep})) {
-				$idx = $subdir{$dep}.$dep;
+			if ($pkg_dep->{vdepends}) {
+				@deps = @{$pkg_dep->{vdepends}};
+			} else {
+				@deps = ($deps);
 			}
-			undef $idx if $idx =~ /^(kernel)|(base-files)$/;
-			if ($idx) {
-				next if $dep{$pkg->{src}."->".$idx};
-				$depline .= " \$(curdir)/$idx/compile";
-				$dep{$pkg->{src}."->".$idx} = 1;
+
+			foreach my $dep (@deps) {
+				$pkg_dep = $package{$deps};
+				if (defined $pkg_dep->{src}) {
+					($pkg->{src} ne $pkg_dep->{src}) and $idx = $pkg_dep->{subdir}.$pkg_dep->{src};
+				} elsif (defined($srcpackage{$dep})) {
+					$idx = $subdir{$dep}.$dep;
+				}
+				undef $idx if $idx =~ /^(kernel)|(base-files)$/;
+				if ($idx) {
+					next if $dep{$pkg->{src}."->".$idx};
+					next if $pkg->{src} eq $pkg_dep->{src};
+					if ($pkg_dep->{vdepends}) {
+						$depline .= " \$(if \$(CONFIG_PACKAGE_$dep),\$(curdir)/$idx/compile)";
+					} else {
+						$depline .= " \$(curdir)/$idx/compile";
+						$dep{$pkg->{src}."->".$idx} = 1;
+					}
+				}
 			}
 		}
 		if ($depline) {