docs: def recursively_collect_orders(
          name, ctx, all_inputs, orders=None, blacklist=None
          ):
      '''For each possible recipe ordering, try to add the new recipe name
      to that order. Recursively do the same thing with all the
      dependencies of each recipe.
  
      '''
      name = name.lower()
      if orders is None:
          orders = []
      if blacklist is None:
          blacklist = set()
      try:
          recipe = Recipe.get_recipe(name, ctx)
          dependencies = get_dependency_tuple_list_for_recipe(
              recipe, blacklist=blacklist
          )
  
          # handle opt_depends: these impose requirements on the build
          # order only if already present in the list of recipes to build
          dependencies.extend(fix_deplist(
              [[d] for d in recipe.get_opt_depends_in_list(all_inputs)
               if d.lower() not in blacklist]
          ))
  
          if recipe.conflicts is None:
              conflicts = []
          else:
              conflicts = [dep.lower() for dep in recipe.conflicts]
      except ValueError:
          # The recipe does not exist, so we assume it can be installed
          # via pip with no extra dependencies
          dependencies = []
          conflicts = []
  
      new_orders = []
      # for each existing recipe order, see if we can add the new recipe name
      for order in orders:
          if name in order:
              new_orders.append(deepcopy(order))
              continue
          if order.conflicts():
              continue
          if any([conflict in order for conflict in conflicts]):
              continue
  
          for dependency_set in product(*dependencies):
              new_order = deepcopy(order)
              new_order[name] = set(dependency_set)
  
              dependency_new_orders = [new_order]
              for dependency in dependency_set:
                  dependency_new_orders = recursively_collect_orders(
                      dependency, ctx, all_inputs, dependency_new_orders,
                      blacklist=blacklist
                  )
  
              new_orders.extend(dependency_new_orders)
  
      return new_orders