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
_______________________________________________
openwrt-devel mailing list
openwrt-devel@lists.openwrt.org
https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel

Reply via email to