Example #1
0
 def _dep_node(self, dependency):
     variants = self.variants
     if isinstance(dependency, Address):
         # If a subject has literal variants for particular dependencies, they win over all else.
         dependency, literal_variants = parse_variants(dependency)
         variants = Variants.merge(variants, literal_variants)
     return SelectNode(dependency, self.product, variants, None)
Example #2
0
 def _dep_node(self, dependency):
   variants = self.variants
   if isinstance(dependency, Address):
     # If a subject has literal variants for particular dependencies, they win over all else.
     dependency, literal_variants = parse_variants(dependency)
     variants = Variants.merge(variants, literal_variants)
   return SelectNode(dependency, self.product, variants, None)
Example #3
0
 def _dependency_nodes(self, step_context, dep_product):
   for dependency in getattr(dep_product, self.field or 'dependencies'):
     variants = self.variants
     if isinstance(dependency, Address):
       # If a subject has literal variants for particular dependencies, they win over all else.
       dependency, literal_variants = parse_variants(dependency)
       variants = Variants.merge(variants, literal_variants)
     yield SelectNode(dependency, self.product, variants, None)
Example #4
0
 def _dependency_nodes(self, step_context, dep_product):
     for dependency in getattr(dep_product, self.field or 'dependencies'):
         variants = self.variants
         if isinstance(dependency, Address):
             # If a subject has literal variants for particular dependencies, they win over all else.
             dependency, literal_variants = parse_variants(dependency)
             variants = Variants.merge(variants, literal_variants)
         yield SelectNode(dependency, self.product, variants, None)
Example #5
0
  def _create_roots(self, build_request):
    # Determine the root products and subjects based on the request.
    root_subjects = [parse_variants(a) for a in build_request.addressable_roots]
    root_products = OrderedSet()
    for goal in build_request.goals:
      root_products.update(self._products_by_goal[goal])

    # Roots are products that might be possible to produce for these subjects.
    return [SelectNode(s, p, v, None) for s, v in root_subjects for p in root_products]
Example #6
0
    def _create_roots(self, build_request):
        # Determine the root products and subjects based on the request.
        root_subjects = [
            parse_variants(a) for a in build_request.addressable_roots
        ]
        root_products = OrderedSet()
        for goal in build_request.goals:
            root_products.update(self._products_by_goal[goal])

        # Roots are products that might be possible to produce for these subjects.
        return [
            SelectNode(s, p, v, None) for s, v in root_subjects
            for p in root_products
        ]
Example #7
0
 def roots(self, products_by_goal):
   """Determine the root Nodes for the products and subjects selected by the goals and specs."""
   for goal_name in self.goals:
     product = products_by_goal[goal_name]
     for subject in self._subjects:
       if type(subject) is SingleAddress:
         subject, variants = parse_variants(Address.parse(subject.to_spec_string()))
         yield SelectNode(subject, product, variants, None)
       elif type(subject) in [SiblingAddresses, DescendantAddresses]:
         yield DependenciesNode(subject, product, None, Addresses, None)
       elif type(subject) is PathGlobs:
         yield DependenciesNode(subject, product, None, Paths, None)
       else:
         raise ValueError('Unsupported root subject type: {}'.format(subject))