@@ -138,19 +138,22 @@ def get_bootstrap_from_recipes(cls, recipes, ctx):
138
138
ok = True
139
139
if not bs .can_be_chosen_automatically :
140
140
ok = False
141
- for recipe in bs .recipe_depends :
142
- recipe = Recipe .get_recipe (recipe , ctx )
143
- if any ([conflict in recipes for conflict in recipe .conflicts ]):
144
- ok = False
145
- break
146
- for recipe in recipes :
147
- recipe = Recipe .get_recipe (recipe , ctx )
148
- if any ([conflict in bs .recipe_depends
149
- for conflict in recipe .conflicts ]):
150
- ok = False
151
- break
152
- if ok :
153
- acceptable_bootstraps .append (bs )
141
+ possible_dependency_lists = expand_dependencies (bs .recipe_depends )
142
+ for possible_dependencies in possible_dependency_lists :
143
+ ok = True
144
+ for recipe in possible_dependencies :
145
+ recipe = Recipe .get_recipe (recipe , ctx )
146
+ if any ([conflict in recipes for conflict in recipe .conflicts ]):
147
+ ok = False
148
+ break
149
+ for recipe in recipes :
150
+ recipe = Recipe .get_recipe (recipe , ctx )
151
+ if any ([conflict in possible_dependencies
152
+ for conflict in recipe .conflicts ]):
153
+ ok = False
154
+ break
155
+ if ok :
156
+ acceptable_bootstraps .append (bs )
154
157
info ('Found {} acceptable bootstraps: {}' .format (
155
158
len (acceptable_bootstraps ),
156
159
[bs .name for bs in acceptable_bootstraps ]))
@@ -264,3 +267,20 @@ def fry_eggs(self, sitepackages):
264
267
if files :
265
268
shprint (sh .mv , '-t' , sitepackages , * files )
266
269
shprint (sh .rm , '-rf' , d )
270
+
271
+
272
+ def expand_dependencies (recipes ):
273
+ recipe_lists = [[]]
274
+ for recipe in recipes :
275
+ if isinstance (recipe , (tuple , list )):
276
+ new_recipe_lists = []
277
+ for alternative in recipe :
278
+ for old_list in recipe_lists :
279
+ new_list = [i for i in old_list ]
280
+ new_list .append (alternative )
281
+ new_recipe_lists .append (new_list )
282
+ recipe_lists = new_recipe_lists
283
+ else :
284
+ for old_list in recipe_lists :
285
+ old_list .append (recipe )
286
+ return recipe_lists
0 commit comments