1
0
mirror of https://git.openwrt.org/openwrt/openwrt.git synced 2024-06-13 18:53:52 +02:00

scripts/package-metadata.pl: fix handling transitive conditional dependencies

When a package foo depends on PACKAGE_foo:bar (in order to make build
dependencies conditional), tracking transitive dependencies can fail because
the internal seen flag is checked/set before eliminating the fake conditional
dependency. This can show up as a depends on not properly turned into a
select further down in the dependency chain

Signed-off-by: Felix Fietkau <nbd@nbd.name>
This commit is contained in:
Felix Fietkau 2023-09-01 12:14:26 +02:00
parent 821cf6dd38
commit 6c3eff9dd8

View File

@ -161,9 +161,6 @@ sub mconf_depends {
my $condition = $parent_condition; my $condition = $parent_condition;
next if $condition eq $depend; next if $condition eq $depend;
next if $seen->{"$parent_condition:$depend"};
next if $seen->{":$depend"};
$seen->{"$parent_condition:$depend"} = 1;
if ($depend =~ /^(.+):(.+)$/) { if ($depend =~ /^(.+):(.+)$/) {
if ($1 ne "PACKAGE_$pkgname") { if ($1 ne "PACKAGE_$pkgname") {
if ($condition) { if ($condition) {
@ -174,6 +171,9 @@ sub mconf_depends {
} }
$depend = $2; $depend = $2;
} }
next if $seen->{"$parent_condition:$depend"};
next if $seen->{":$depend"};
$seen->{"$parent_condition:$depend"} = 1;
if ($flags =~ /\+/) { if ($flags =~ /\+/) {
my $vdep = $vpackage{$depend}; my $vdep = $vpackage{$depend};
if ($vdep) { if ($vdep) {