Esempio n. 1
0
  def _calc_deps(self, targets, dependencies_by_target, dependees_by_target):
    for target in filter(lambda x: hasattr(x, "dependencies"), targets):
      if not dependencies_by_target.has_key(target):
        for dependency in target.dependencies:
          for resolved in dependency.resolve():
            if is_concrete(resolved):
              dependencies_by_target[target].add(resolved)

      for dependency in target.dependencies:
        for resolved in dependency.resolve():
          if is_concrete(resolved):
            dependees_by_target[resolved].add(target)
Esempio n. 2
0
    def _calc_deps(self, targets, dependencies_by_target, dependees_by_target):
        for target in filter(lambda x: hasattr(x, "dependencies"), targets):
            if not dependencies_by_target.has_key(target):
                for dependency in target.dependencies:
                    for resolved in dependency.resolve():
                        if is_concrete(resolved):
                            dependencies_by_target[target].add(resolved)

            for dependency in target.dependencies:
                for resolved in dependency.resolve():
                    if is_concrete(resolved):
                        dependees_by_target[resolved].add(target)
Esempio n. 3
0
  def __init__(self, root_dir, parser, argv):
    Command.__init__(self, root_dir, parser, argv)

    if not self.args:
      self.error("A spec argument is required")

    try:
      specs_end = self.args.index('--')
      if len(self.args) > specs_end:
        self.build_args = self.args[specs_end+1:len(self.args)+1]
      else:
        self.build_args = []
    except ValueError:
      specs_end = 1
      self.build_args = self.args[1:] if len(self.args) > 1 else []

    self.targets = OrderedSet()
    for spec in self.args[0:specs_end]:
      try:
        address = Address.parse(root_dir, spec)
      except:
        self.error("Problem parsing spec %s: %s" % (spec, traceback.format_exc()))

      try:
        target = Target.get(address)
      except:
        self.error("Problem parsing BUILD target %s: %s" % (address, traceback.format_exc()))

      if not target:
        self.error("Target %s does not exist" % address)
      self.targets.update(tgt for tgt in target.resolve() if is_concrete(tgt))
Esempio n. 4
0
 def add_dep(trg):
   if is_concrete(trg):
     for target_type, target_key in self._VALID_DEPENDENCIES.items():
       if isinstance(trg, target_type):
         children[target_key].add(trg)
         return
   raise self.InvalidDependencyException(trg)
Esempio n. 5
0
    def __init__(self, run_tracker, root_dir, parser, argv):
        Command.__init__(self, run_tracker, root_dir, parser, argv)

        if not self.args:
            self.error("A spec argument is required")

        try:
            specs_end = self.args.index('--')
            if len(self.args) > specs_end:
                self.build_args = self.args[specs_end + 1:len(self.args) + 1]
            else:
                self.build_args = []
        except ValueError:
            specs_end = 1
            self.build_args = self.args[1:] if len(self.args) > 1 else []

        self.targets = OrderedSet()
        for spec in self.args[0:specs_end]:
            try:
                address = Address.parse(root_dir, spec)
            except:
                self.error("Problem parsing spec %s: %s" %
                           (spec, traceback.format_exc()))

            try:
                target = Target.get(address)
            except:
                self.error("Problem parsing BUILD target %s: %s" %
                           (address, traceback.format_exc()))

            if not target:
                self.error("Target %s does not exist" % address)
            self.targets.update(tgt for tgt in target.resolve()
                                if is_concrete(tgt))
Esempio n. 6
0
 def add_dep(trg):
   if is_concrete(trg):
     for target_type, target_key in PythonResolver._VALID_DEPENDENCIES.items():
       if isinstance(trg, target_type):
         children[target_key].add(trg)
         return
   raise PythonResolver.InvalidDependencyException(trg)
Esempio n. 7
0
 def update_dependencies(self, dependencies):
   if dependencies:
     for dependency in dependencies:
       if hasattr(dependency, 'address'):
         self.dependency_addresses.add(dependency.address)
       for resolved_dependency in dependency.resolve():
         if is_concrete(resolved_dependency) and not self.valid_dependency(resolved_dependency):
           raise TargetDefinitionException(self, 'Cannot add %s as a dependency of %s'
                                                 % (resolved_dependency, self))
         self.dependencies.add(resolved_dependency)
         if isinstance(resolved_dependency, InternalTarget):
           self.internal_dependencies.add(resolved_dependency)
         if hasattr(resolved_dependency, '_as_jar_dependencies'):
           self.jar_dependencies.update(resolved_dependency._as_jar_dependencies())
Esempio n. 8
0
  def console_output(self, targets):
    if len(self.context.target_roots) == 0:
      raise TaskError("One or more target addresses are required.")

    for target in self.context.target_roots:
      if all(self._is_jvm(t) for t in target.resolve() if is_concrete(t)):
        if self.is_graph:
          return self._output_digraph(target)
        else:
          return self._output_dependency_tree(target)
      elif is_python(target):
        raise TaskError('Unsupported for Python targets')
      else:
        raise TaskError('Unsupported for target %s' % target)
Esempio n. 9
0
  def console_output(self, unused_method_argument):
    for target in self.context.target_roots:
      if all(self._is_jvm(t) for t in target.resolve() if is_concrete(t)):
        for line in self._dependencies_list(target):
          yield line

      elif is_python(target):
        if self.is_internal_only:
          raise TaskError('Unsupported option for Python target: is_internal_only: %s' %
                          self.is_internal_only)
        if self.is_external_only:
          raise TaskError('Unsupported option for Python target: is_external_only: %s' %
                          self.is_external_only)
        for line in self._python_dependencies_list(target):
          yield line
Esempio n. 10
0
    def console_output(self, targets):
        if len(self.context.target_roots) == 0:
            raise TaskError("One or more target addresses are required.")

        for target in self.context.target_roots:
            if all(
                    self._is_jvm(t) for t in target.resolve()
                    if is_concrete(t)):
                if self.is_graph:
                    return self._output_digraph(target)
                else:
                    return self._output_dependency_tree(target)
            elif is_python(target):
                raise TaskError('Unsupported for Python targets')
            else:
                raise TaskError('Unsupported for target %s' % target)
Esempio n. 11
0
    def console_output(self, unused_method_argument):
        for target in self.context.target_roots:
            if all(
                    self._is_jvm(t) for t in target.resolve()
                    if is_concrete(t)):
                for line in self._dependencies_list(target):
                    yield line

            elif is_python(target):
                if self.is_internal_only:
                    raise TaskError(
                        'Unsupported option for Python target: is_internal_only: %s'
                        % self.is_internal_only)
                if self.is_external_only:
                    raise TaskError(
                        'Unsupported option for Python target: is_external_only: %s'
                        % self.is_external_only)
                for line in self._python_dependencies_list(target):
                    yield line
Esempio n. 12
0
 def is_resources(item):
     return (isinstance(item, Target) and all(
         map(lambda tgt: isinstance(tgt, Resources),
             filter(lambda tgt: is_concrete(tgt), item.resolve()))))
Esempio n. 13
0
 def expand(spec):
   for target in self.targets(spec):
     for tgt in target.resolve():
       if isinstance(tgt, Target) and is_concrete(tgt):
         yield tgt
Esempio n. 14
0
 def expand(spec):
     for target in self.targets(spec):
         for tgt in target.resolve():
             if isinstance(tgt, Target) and is_concrete(tgt):
                 yield tgt
Esempio n. 15
0
 def is_resources(item):
   return (isinstance(item, Target)
           and all(map(lambda tgt: isinstance(tgt, Resources),
                       filter(lambda tgt: is_concrete(tgt), item.resolve()))))