Ejemplo n.º 1
0
class CheckDependenciesPass(Pass):
    """Check that the dependencies are self-consistent."""
    def __init__(self):
        Pass.__init__(self)

    def register_artifacts(self):
        self._register_temp_file_needed(config.PROJECTS)
        self._register_temp_file_needed(config.SYMBOL_DB)
        self._register_temp_file_needed(config.CVS_PATHS_DB)

    def iter_cvs_items(self):
        raise NotImplementedError()

    def get_cvs_item(self, item_id):
        raise NotImplementedError()

    def run(self, run_options, stats_keeper):
        Ctx()._projects = read_projects(
            artifact_manager.get_temp_file(config.PROJECTS))
        Ctx()._cvs_path_db = CVSPathDatabase(DB_OPEN_READ)
        self.symbol_db = SymbolDatabase()
        Ctx()._symbol_db = self.symbol_db

        logger.quiet("Checking dependency consistency...")

        fatal_errors = []
        for cvs_item in self.iter_cvs_items():
            # Check that the pred_ids and succ_ids are mutually consistent:
            for pred_id in cvs_item.get_pred_ids():
                pred = self.get_cvs_item(pred_id)
                if not cvs_item.id in pred.get_succ_ids():
                    fatal_errors.append(
                        '%s lists pred=%s, but not vice versa.' % (
                            cvs_item,
                            pred,
                        ))

            for succ_id in cvs_item.get_succ_ids():
                succ = self.get_cvs_item(succ_id)
                if not cvs_item.id in succ.get_pred_ids():
                    fatal_errors.append(
                        '%s lists succ=%s, but not vice versa.' % (
                            cvs_item,
                            succ,
                        ))

        if fatal_errors:
            raise FatalException('Dependencies inconsistent:\n'
                                 '%s\n'
                                 'Exited due to fatal error(s).' %
                                 ('\n'.join(fatal_errors), ))

        self.symbol_db.close()
        self.symbol_db = None
        Ctx()._cvs_path_db.close()
        logger.quiet("Done")
Ejemplo n.º 2
0
class CheckDependenciesPass(Pass):
  """Check that the dependencies are self-consistent."""

  def __init__(self):
    Pass.__init__(self)

  def register_artifacts(self):
    self._register_temp_file_needed(config.PROJECTS)
    self._register_temp_file_needed(config.SYMBOL_DB)
    self._register_temp_file_needed(config.CVS_PATHS_DB)

  def iter_cvs_items(self):
    raise NotImplementedError()

  def get_cvs_item(self, item_id):
    raise NotImplementedError()

  def run(self, run_options, stats_keeper):
    Ctx()._projects = read_projects(
        artifact_manager.get_temp_file(config.PROJECTS)
        )
    Ctx()._cvs_path_db = CVSPathDatabase(DB_OPEN_READ)
    self.symbol_db = SymbolDatabase()
    Ctx()._symbol_db = self.symbol_db

    logger.quiet("Checking dependency consistency...")

    fatal_errors = []
    for cvs_item in self.iter_cvs_items():
      # Check that the pred_ids and succ_ids are mutually consistent:
      for pred_id in cvs_item.get_pred_ids():
        pred = self.get_cvs_item(pred_id)
        if not cvs_item.id in pred.get_succ_ids():
          fatal_errors.append(
              '%s lists pred=%s, but not vice versa.' % (cvs_item, pred,))

      for succ_id in cvs_item.get_succ_ids():
        succ = self.get_cvs_item(succ_id)
        if not cvs_item.id in succ.get_pred_ids():
          fatal_errors.append(
              '%s lists succ=%s, but not vice versa.' % (cvs_item, succ,))

    if fatal_errors:
      raise FatalException(
          'Dependencies inconsistent:\n'
          '%s\n'
          'Exited due to fatal error(s).'
          % ('\n'.join(fatal_errors),)
          )

    self.symbol_db.close()
    self.symbol_db = None
    Ctx()._cvs_path_db.close()
    logger.quiet("Done")
Ejemplo n.º 3
0
    def run(self, run_options, stats_keeper):
        Ctx()._projects = read_projects(
            artifact_manager.get_temp_file(config.PROJECTS))
        Ctx()._cvs_path_db = CVSPathDatabase(DB_OPEN_READ)
        self.symbol_db = SymbolDatabase()
        Ctx()._symbol_db = self.symbol_db

        logger.quiet("Checking dependency consistency...")

        fatal_errors = []
        for cvs_item in self.iter_cvs_items():
            # Check that the pred_ids and succ_ids are mutually consistent:
            for pred_id in cvs_item.get_pred_ids():
                pred = self.get_cvs_item(pred_id)
                if not cvs_item.id in pred.get_succ_ids():
                    fatal_errors.append(
                        '%s lists pred=%s, but not vice versa.' % (
                            cvs_item,
                            pred,
                        ))

            for succ_id in cvs_item.get_succ_ids():
                succ = self.get_cvs_item(succ_id)
                if not cvs_item.id in succ.get_pred_ids():
                    fatal_errors.append(
                        '%s lists succ=%s, but not vice versa.' % (
                            cvs_item,
                            succ,
                        ))

        if fatal_errors:
            raise FatalException('Dependencies inconsistent:\n'
                                 '%s\n'
                                 'Exited due to fatal error(s).' %
                                 ('\n'.join(fatal_errors), ))

        self.symbol_db.close()
        self.symbol_db = None
        Ctx()._cvs_path_db.close()
        logger.quiet("Done")
Ejemplo n.º 4
0
def prime_ctx():
    def rf(filename):
        artifact_manager.register_temp_file(filename, None)

    from cvs2svn_lib.common import DB_OPEN_READ
    from cvs2svn_lib.symbol_database import SymbolDatabase
    from cvs2svn_lib.cvs_path_database import CVSPathDatabase
    rf(config.CVS_PATHS_DB)
    rf(config.SYMBOL_DB)
    from cvs2svn_lib.cvs_item_database import OldCVSItemStore
    from cvs2svn_lib.metadata_database import MetadataDatabase
    rf(config.METADATA_DB)
    rf(config.CVS_ITEMS_STORE)
    rf(config.CVS_ITEMS_FILTERED_STORE)
    rf(config.CVS_ITEMS_FILTERED_INDEX_TABLE)
    artifact_manager.pass_started(None)

    Ctx()._projects = ProjectList()
    Ctx()._symbol_db = SymbolDatabase()
    Ctx()._cvs_path_db = CVSPathDatabase(DB_OPEN_READ)
    Ctx()._cvs_items_db = OldCVSItemStore(
        artifact_manager.get_temp_file(config.CVS_ITEMS_STORE))
    Ctx()._metadata_db = MetadataDatabase(DB_OPEN_READ)
Ejemplo n.º 5
0
  def run(self, run_options, stats_keeper):
    Ctx()._projects = read_projects(
        artifact_manager.get_temp_file(config.PROJECTS)
        )
    Ctx()._cvs_path_db = CVSPathDatabase(DB_OPEN_READ)
    self.symbol_db = SymbolDatabase()
    Ctx()._symbol_db = self.symbol_db

    logger.quiet("Checking dependency consistency...")

    fatal_errors = []
    for cvs_item in self.iter_cvs_items():
      # Check that the pred_ids and succ_ids are mutually consistent:
      for pred_id in cvs_item.get_pred_ids():
        pred = self.get_cvs_item(pred_id)
        if not cvs_item.id in pred.get_succ_ids():
          fatal_errors.append(
              '%s lists pred=%s, but not vice versa.' % (cvs_item, pred,))

      for succ_id in cvs_item.get_succ_ids():
        succ = self.get_cvs_item(succ_id)
        if not cvs_item.id in succ.get_pred_ids():
          fatal_errors.append(
              '%s lists succ=%s, but not vice versa.' % (cvs_item, succ,))

    if fatal_errors:
      raise FatalException(
          'Dependencies inconsistent:\n'
          '%s\n'
          'Exited due to fatal error(s).'
          % ('\n'.join(fatal_errors),)
          )

    self.symbol_db.close()
    self.symbol_db = None
    Ctx()._cvs_path_db.close()
    logger.quiet("Done")