[LEDE-DEV] [PATCH 13/15] metadata: always resolve dependencies through provides list
Jo-Philipp Wich
jo at mein.io
Mon Jan 8 08:21:00 PST 2018
Hi,
[...]
> diff --git a/scripts/package-metadata.pl b/scripts/package-metadata.pl
> index 980ad24dc0..41e7108322 100755
> --- a/scripts/package-metadata.pl
> +++ b/scripts/package-metadata.pl
> @@ -101,14 +101,16 @@ my %dep_check;
> sub __find_package_dep($$) {
> my $pkg = shift;
> my $name = shift;
> - my $deps = ($pkg->{vdepends} or $pkg->{depends});
> + my $deps = $pkg->{depends};
>
> return 0 unless defined $deps;
> - foreach my $dep (@{$deps}) {
> - next if $dep_check{$dep};
> - $dep_check{$dep} = 1;
> - return 1 if $dep eq $name;
> - return 1 if ($package{$dep} and (__find_package_dep($package{$dep},$name) == 1));
> + foreach my $vpkg (@{$deps}) {
> + foreach my $dep (@{$vpackage{$vpkg}}) {
> + next if $dep_check{$dep->{name}};
> + $dep_check{$dep->{name}} = 1;
> + return 1 if $dep->{name} eq $name;
> + return 1 if (__find_package_dep($dep, $name) == 1);
> + }
> }
> return 0;
> }
> @@ -156,7 +158,6 @@ sub mconf_depends {
> my $m = "depends on";
> my $flags = "";
> $depend =~ s/^([@\+]+)// and $flags = $1;
> - my $vdep;
> my $condition = $parent_condition;
>
> next if $condition eq $depend;
> @@ -173,23 +174,21 @@ sub mconf_depends {
> }
> $depend = $2;
> }
> - next if $package{$depend} and $package{$depend}->{buildonly};
> if ($flags =~ /\+/) {
> - if ($vdep = $package{$depend}->{vdepends}) {
> + my $vdep = $vpackage{$depend};
> + if ($vdep) {
> my @vdeps;
> - $depend = undef;
>
> foreach my $v (@$vdep) {
> - if ($package{$v} && $package{$v}->{variant_default}) {
> - $depend = $v;
> + next if $v->{buildonly};
> + if ($v->{variant_default}) {
> + unshift @vdeps, $v->{name};
> } else {
> - push @vdeps, $v;
> + push @vdeps, $v->{name};
> }
> }
>
> - if (!$depend) {
> - $depend = shift @vdeps;
> - }
> + $depend = shift @vdeps;
>
> if (@vdeps > 1) {
> $condition = ($condition ? "$condition && " : '') . '!('.join("||", map { "PACKAGE_".$_ } @vdeps).')';
> @@ -209,7 +208,8 @@ sub mconf_depends {
>
> $flags =~ /@/ or $depend = "PACKAGE_$depend";
> } else {
> - if ($vdep = $package{$depend}->{vdepends}) {
> + my $vdep = $vpackage{$depend};
> + if ($vdep) {
> $depend = join("||", map { "PACKAGE_".$_ } @$vdep);
Use "PACKAGE_".$_->{name} here as "$vdep" now is a reference to an array
of package structures, not package names anymore.
~ Jo
More information about the Lede-dev
mailing list