From: Felix Fietkau Date: Fri, 1 Sep 2023 10:14:26 +0000 (+0200) Subject: scripts/package-metadata.pl: fix handling transitive conditional dependencies X-Git-Url: http://git.openwrt.org/?p=openwrt%2Fstaging%2Fhauke.git;a=commitdiff_plain;h=6c3eff9dd8bb8d0f268e8a0dbedbc6a33bdac796 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 --- diff --git a/scripts/package-metadata.pl b/scripts/package-metadata.pl index 6288584d65..11f1bc4bcd 100755 --- a/scripts/package-metadata.pl +++ b/scripts/package-metadata.pl @@ -161,9 +161,6 @@ sub mconf_depends { my $condition = $parent_condition; next if $condition eq $depend; - next if $seen->{"$parent_condition:$depend"}; - next if $seen->{":$depend"}; - $seen->{"$parent_condition:$depend"} = 1; if ($depend =~ /^(.+):(.+)$/) { if ($1 ne "PACKAGE_$pkgname") { if ($condition) { @@ -174,6 +171,9 @@ sub mconf_depends { } $depend = $2; } + next if $seen->{"$parent_condition:$depend"}; + next if $seen->{":$depend"}; + $seen->{"$parent_condition:$depend"} = 1; if ($flags =~ /\+/) { my $vdep = $vpackage{$depend}; if ($vdep) {