metadata: move 'builddepends' from binary to source packages
[openwrt/staging/lynxis.git] / scripts / package-metadata.pl
index 261490b868160115e9e42a575b360f277f1db8d7..97b57c65eb8d5f7a556c3dc48ef7a685bb5d4d76 100755 (executable)
@@ -421,6 +421,7 @@ sub gen_package_mk() {
        foreach my $name (sort {uc($a) cmp uc($b)} keys %package) {
                my $config;
                my $pkg = $package{$name};
+               my $src = $srcpackage{$pkg->{src}};
                my @srcdeps;
 
                next if defined $pkg->{vdepends};
@@ -441,24 +442,22 @@ sub gen_package_mk() {
                next if $done{$pkg->{src}};
                $done{$pkg->{src}} = 1;
 
-               if (@{$pkg->{buildtypes}} > 0) {
-                       print "buildtypes-$pkg->{subdir}$pkg->{src} = ".join(' ', @{$pkg->{buildtypes}})."\n";
+               if (@{$src->{buildtypes}} > 0) {
+                       print "buildtypes-$pkg->{subdir}$pkg->{src} = ".join(' ', @{$src->{buildtypes}})."\n";
                }
 
-               foreach my $spkg (@{$srcpackage{$pkg->{src}}}) {
-                       foreach my $dep (@{$spkg->{depends}}, @{$spkg->{builddepends}}) {
-                               $dep =~ /@/ or do {
-                                       $dep =~ s/\+//g;
-                                       push @srcdeps, $dep;
-                               };
-                       }
+               foreach my $dep (@{$src->{builddepends}}, map { @{$_->{depends}} } @{$src->{packages}}) {
+                       $dep =~ /@/ or do {
+                               $dep =~ s/\+//g;
+                               push @srcdeps, $dep;
+                       };
                }
-               foreach my $type (@{$pkg->{buildtypes}}) {
+               foreach my $type (@{$src->{buildtypes}}) {
                        my @extra_deps;
                        my %deplines;
 
-                       next unless $pkg->{"builddepends/$type"};
-                       foreach my $dep (@{$pkg->{"builddepends/$type"}}) {
+                       next unless $src->{"builddepends/$type"};
+                       foreach my $dep (@{$src->{"builddepends/$type"}}) {
                                my $suffix = "";
                                my $deptype = "";
                                my $condition;
@@ -476,7 +475,7 @@ sub gen_package_mk() {
                                my $idx = "";
                                my $pkg_dep = $package{$dep};
                                if (defined($pkg_dep) && defined($pkg_dep->{src})) {
-                                       unless (!$deptype || grep { $_ eq $deptype } @{$pkg_dep->{buildtypes}}) {
+                                       unless (!$deptype || grep { $_ eq $deptype } @{$srcpackage{$pkg_dep->{src}}{buildtypes}}) {
                                                warn sprintf "WARNING: Makefile '%s' has a %s build dependency on '%s/%s' but '%s' does not implement a '%s' build type\n",
                                                        $pkg->{makefile}, $type, $pkg_dep->{src}, $deptype, $pkg_dep->{makefile}, $deptype;
                                                next;
@@ -530,21 +529,16 @@ sub gen_package_mk() {
                        foreach my $dep (@deps) {
                                $pkg_dep = $package{$deps};
                                if (defined $pkg_dep->{src}) {
-                                       unless (!$deptype || grep { $_ eq $deptype } @{$pkg_dep->{buildtypes}}) {
+                                       unless (!$deptype || grep { $_ eq $deptype } @{$srcpackage{$pkg_dep->{src}}{buildtypes}}) {
                                                warn sprintf "WARNING: Makefile '%s' has a build dependency on '%s/%s' but '%s' does not implement a '%s' build type\n",
                                                        $pkg->{makefile}, $pkg_dep->{src}, $deptype, $pkg_dep->{makefile}, $deptype;
                                                next;
                                        }
-                                       unless ($pkg->{src} ne $pkg_dep->{sec}.$suffix) {
-                                               warn sprintf "WARNING: Makefile '%s' has a build dependency on itself\n",
-                                                       $pkg->{makefile};
-                                               next;
-                                       }
                                        $idx = $pkg_dep->{subdir}.$pkg_dep->{src};
                                } elsif (defined($srcpackage{$dep})) {
                                        $idx = $subdir{$dep}.$dep;
                                }
-                               undef $idx if $idx eq 'base-files';
+
                                if ($idx) {
                                        $idx .= $suffix;