X-Git-Url: https://git.rohieb.name/openwrt.git/blobdiff_plain/e6074d0ad7b0160c45b38b2ee51747f58a7f2dd7..c291b847846f5921d669b17478cbf59f0c83ee19:/scripts/metadata.pl diff --git a/scripts/metadata.pl b/scripts/metadata.pl index bd1a40a53..d920f59fc 100755 --- a/scripts/metadata.pl +++ b/scripts/metadata.pl @@ -380,14 +380,14 @@ sub mconf_depends($$) { $depend = join("||", map { "PACKAGE_".$_ } @$vdep); } else { $flags =~ /\+/ and do { - next if $only_dep; - $m = "select"; - # Menuconfig will not treat 'select FOO' as a real dependency # 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); + + $m = "select"; + next if $only_dep; }; $flags =~ /@/ or $depend = "PACKAGE_$depend"; } @@ -505,17 +505,6 @@ sub gen_package_mk() { my @srcdeps; next if defined $pkg->{vdepends}; - next if $done{$pkg->{src}}; - $done{$pkg->{src}} = 1; - - foreach my $spkg (@{$srcpackage{$pkg->{src}}}) { - foreach my $dep (@{$spkg->{depends}}, @{$spkg->{builddepends}}) { - $dep =~ /@/ or do { - $dep =~ s/\+//g; - push @srcdeps, $dep; - }; - } - } if ($ENV{SDK}) { $conf{$pkg->{src}} or do { @@ -530,6 +519,18 @@ sub gen_package_mk() { $pkg->{prereq} and print "prereq-$config += $pkg->{subdir}$pkg->{src}\n"; } + next if $done{$pkg->{src}}; + $done{$pkg->{src}} = 1; + + foreach my $spkg (@{$srcpackage{$pkg->{src}}}) { + foreach my $dep (@{$spkg->{depends}}, @{$spkg->{builddepends}}) { + $dep =~ /@/ or do { + $dep =~ s/\+//g; + push @srcdeps, $dep; + }; + } + } + my $hasdeps = 0; my $depline = ""; foreach my $deps (@srcdeps) {