@@ -2220,16 +2220,6 @@ def coDet(r):
22202220 if self .__jobServer is None :
22212221 self .__jobServer = False
22222222
2223- # check provided dependencies
2224- availDeps = [ d .recipe for d in self .__deps ]
2225- providedDeps = set ()
2226- for pattern in self .__provideDeps :
2227- l = set (d for d in availDeps if fnmatch .fnmatchcase (d , pattern ))
2228- if not l :
2229- raise ParseError ("Unknown dependency '{}' in provideDeps" .format (pattern ))
2230- providedDeps |= l
2231- self .__provideDeps = providedDeps
2232-
22332223 # Evaluate root property
22342224 if isinstance (self .__root , str ) or isinstance (self .__root , IfExpression ):
22352225 self .__root = rootEnv .evaluate (self .__root , "root" )
@@ -2357,6 +2347,7 @@ def prepare(self, inputEnv, sandboxEnabled, inputStates, inputSandbox=None,
23572347 depDiffTools = diffTools .copy ()
23582348 thisDeps = {}
23592349 depVars = set ()
2350+ resolvedDeps = []
23602351
23612352 for d in self .__deps :
23622353 dep = copy .deepcopy (d )
@@ -2366,6 +2357,7 @@ def prepare(self, inputEnv, sandboxEnabled, inputStates, inputSandbox=None,
23662357 depsEnv = env .derive ()
23672358 depsEnv .touchReset ()
23682359 dep .recipe = depsEnv .substitute (dep .recipe , "dependency::" + dep .recipe )
2360+ resolvedDeps .append (dep .recipe )
23692361 depVars = set ([e for e in depsEnv .touchedKeys ()])
23702362
23712363 if dep .condition and not all (env .evaluate (cond , "dependency " + dep .recipe )
@@ -2463,13 +2455,18 @@ def prepare(self, inputEnv, sandboxEnabled, inputStates, inputSandbox=None,
24632455 for d in depCoreStep .providedDeps ])
24642456 maybeProvideDeps [dep .recipe ] = l
24652457
2466- __provideDeps = [ env .substitute (p , "providedDep::" + p )
2467- for p in self .__provideDeps ]
2458+ # check provided dependencies
2459+ providedDeps = set ()
2460+ for pattern in self .__provideDeps :
2461+ pattern = env .substitute (pattern , "providedDep::" + pattern )
2462+ l = set (d for d in resolvedDeps if fnmatch .fnmatchcase (d , pattern ))
2463+ if not l :
2464+ raise ParseError ("Unknown dependency '{}' in provideDeps" .format (pattern ))
2465+ providedDeps |= l
24682466
2469- for recipe , refs in maybeProvideDeps .items ():
2470- if recipe in __provideDeps :
2471- provideDeps .append (refs [0 ])
2472- provideDeps .extend (refs [1 ])
2467+ for recipe in providedDeps :
2468+ provideDeps .append (maybeProvideDeps [recipe ][0 ])
2469+ provideDeps .extend (maybeProvideDeps [recipe ][1 ])
24732470
24742471 # Filter indirect packages and add to result list if necessary. Most
24752472 # likely there are many duplicates that are dropped.
0 commit comments