Browse Source

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 <[email protected]>
Felix Fietkau 2 years ago
parent
commit
6c3eff9dd8
1 changed files with 3 additions and 3 deletions
  1. 3 3
      scripts/package-metadata.pl

+ 3 - 3
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) {