[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