Ejemplo n.º 1
0
    def build_internal(self):
        if self.options.show_graph:
            self.db.printGraph()
            return True

        if self.options.show_changed:
            dmg_list = damage.ComputeDamageGraph(self.db, only_changed=True)
            for entry in dmg_list:
                if not entry.isFile():
                    continue
                print(entry.format())
            return True

        dmg_graph = damage.ComputeDamageGraph(self.db)
        if not dmg_graph:
            return False

        # If we get here, we have to compute damage.
        if self.options.show_damage:
            dmg_graph.printGraph()
            return True

        dmg_graph.filter_commands()

        if self.options.show_commands:
            dmg_graph.printGraph()
            return True

        builder = Builder(self, dmg_graph)
        if self.options.show_steps:
            builder.printSteps()
            return True

        status, message = builder.update()
        if status == TaskMaster.BUILD_FAILED:
            if message is None:
                util.con_err(util.ConsoleHeader, 'Build failed.',
                             util.ConsoleNormal)
            else:
                util.con_err(util.ConsoleHeader,
                             'Build failed: {}'.format(message),
                             util.ConsoleNormal)
            return False
        if status == TaskMaster.BUILD_INTERRUPTED:
            util.con_err(util.ConsoleHeader, 'Build cancelled.',
                         util.ConsoleNormal)
            return False
        if status == TaskMaster.BUILD_NO_CHANGES:
            util.con_out(util.ConsoleHeader, 'Build succeeded, no changes.',
                         util.ConsoleNormal)
            return True

        assert status == TaskMaster.BUILD_SUCCEEDED
        util.con_out(util.ConsoleHeader, 'Build succeeded.',
                     util.ConsoleNormal)
        return True
Ejemplo n.º 2
0
  def build_internal(self):
    if self.options.show_graph:
      self.db.printGraph()
      return True

    if self.options.show_changed:
      dmg_list = damage.ComputeDamageGraph(self.db, only_changed=True)
      for entry in dmg_list:
        if not entry.isFile():
          continue
        print(entry.format())
      return True

    dmg_graph = damage.ComputeDamageGraph(self.db)
    if not dmg_graph:
      return False

    # If we get here, we have to compute damage.
    if self.options.show_damage:
      dmg_graph.printGraph()
      return True

    dmg_graph.filter_commands()

    if self.options.show_commands:
      dmg_graph.printGraph()
      return True
    
    builder = Builder(self, dmg_graph)
    if self.options.show_steps:
      builder.printSteps()
      return True

    if not builder.update():
      util.con_err(
        util.ConsoleHeader,
        'Build failed.',
        util.ConsoleNormal
      )
      return False

    util.con_out(
      util.ConsoleHeader,
      'Build succeeded.',
      util.ConsoleNormal
    )
    return True