Skip to content

Commit 48383c4

Browse files
committed
fixup! input: support for variable depends
1 parent a8231b5 commit 48383c4

File tree

1 file changed

+18
-11
lines changed

1 file changed

+18
-11
lines changed

pym/bob/input.py

Lines changed: 18 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2346,6 +2346,7 @@ def prepare(self, inputEnv, sandboxEnabled, inputStates, inputSandbox=None,
23462346
directPackages = []
23472347
indirectPackages = []
23482348
provideDeps = UniquePackageList(stack, self.__raiseIncompatibleProvided)
2349+
maybeProvideDeps = {}
23492350
checkoutDeps = []
23502351
results = []
23512352
depEnv = env.derive()
@@ -2355,17 +2356,14 @@ def prepare(self, inputEnv, sandboxEnabled, inputStates, inputSandbox=None,
23552356
depDiffSandbox = diffSandbox
23562357
depDiffTools = diffTools.copy()
23572358
thisDeps = {}
2358-
depsEnv = env.derive()
23592359
depVars = set()
23602360

2361-
__provideDeps = [ env.substitute(p, "providedDep::"+p)
2362-
for p in self.__provideDeps]
2363-
23642361
for d in self.__deps:
23652362
dep = copy.deepcopy(d)
23662363
env.setFunArgs({ "recipe" : self, "sandbox" : bool(sandbox) and sandboxEnabled,
23672364
"__tools" : tools })
23682365

2366+
depsEnv = env.derive()
23692367
depsEnv.touchReset()
23702368
dep.recipe = depsEnv.substitute(dep.recipe, "dependency::"+dep.recipe)
23712369
depVars = set([e for e in depsEnv.touchedKeys()])
@@ -2459,10 +2457,19 @@ def prepare(self, inputEnv, sandboxEnabled, inputStates, inputSandbox=None,
24592457
if sandboxEnabled:
24602458
env.update(sandbox.environment)
24612459
if dep.provideGlobal: depEnv.update(sandbox.environment)
2462-
if dep.recipe in __provideDeps:
2463-
provideDeps.append(depRef)
2464-
provideDeps.extend(CoreRef(d, [p.getName()], origDepDiffTools, origDepDiffSandbox)
2465-
for d in depCoreStep.providedDeps)
2460+
2461+
l = [depRef]
2462+
l.append([CoreRef(d, [p.getName()], origDepDiffTools, origDepDiffSandbox)
2463+
for d in depCoreStep.providedDeps])
2464+
maybeProvideDeps[dep.recipe] = l
2465+
2466+
__provideDeps = [ env.substitute(p, "providedDep::"+p)
2467+
for p in self.__provideDeps]
2468+
2469+
for recipe, refs in maybeProvideDeps.items():
2470+
if recipe in __provideDeps:
2471+
provideDeps.append(refs[0])
2472+
provideDeps.extend(refs[1])
24662473

24672474
# Filter indirect packages and add to result list if necessary. Most
24682475
# likely there are many duplicates that are dropped.
@@ -2554,8 +2561,8 @@ def prepare(self, inputEnv, sandboxEnabled, inputStates, inputSandbox=None,
25542561

25552562
# optional checkout step
25562563
if self.__checkout != (None, None, None) or self.__checkoutSCMs or self.__checkoutAsserts:
2557-
checkoutDigestEnv = env.prune(self.__checkoutVars)
2558-
checkoutEnv = ( env.prune(self.__checkoutVars | self.__checkoutVarsWeak | depVars)
2564+
checkoutDigestEnv = env.prune(self.__checkoutVars | depVars)
2565+
checkoutEnv = ( env.prune(self.__checkoutVars | self.__checkoutVarsWeak)
25592566
if self.__checkoutVarsWeak else checkoutDigestEnv )
25602567
checkoutUpdateIf = [
25612568
( (env.evaluate(cond, "checkoutUpdateIf")
@@ -2581,7 +2588,7 @@ def prepare(self, inputEnv, sandboxEnabled, inputStates, inputSandbox=None,
25812588
# optional build step
25822589
if self.__build != (None, None, None):
25832590
buildDigestEnv = env.prune(self.__buildVars | depVars)
2584-
buildEnv = ( env.prune(self.__buildVars | self.__buildVarsWeak | depVars)
2591+
buildEnv = ( env.prune(self.__buildVars | self.__buildVarsWeak)
25852592
if self.__buildVarsWeak else buildDigestEnv )
25862593
buildCoreStep = p.createCoreBuildStep(self.__build, buildDigestEnv, buildEnv,
25872594
[CoreRef(srcCoreStep)] + results)

0 commit comments

Comments
 (0)