コード例 #1
0
    def DoPlanish(self, download_flag=True):
        """
        choose one version from multiple version of module
        Args:
            download_flag : whether download the code of module, if it is set True download code, and vice versa
        Returns:
            return True if planish successfully, otherwise return False
        """
        self.logger.LevPrint('MSG', 'Analyzing dependency ...')
        # create dependent tree
        broc_loader = Syntax.BrocLoader()
        try:
            broc_loader.LoadBROC()
        except BaseException as err:
            self.logger.LevPrint('ERROR', '%s' % err)
            return False
        if len(broc_loader.LackBrocModules()) != 0:
            self.logger.LevPrint('ERROR',
                                 "Can't find BROC in following module(s):")
            for cvspath in broc_loader.LackBrocModules():
                self.logger.LevPrint('ERROR', "\t%s" % cvspath)
            return False
        # check graph has circles
        (ret, msg) = BrocTree.BrocTree().HasCircle()
        if ret:
            self.logger.LevPrint(
                "ERROR",
                "There is a circle in dependency graph\nCircle is [%s]" % msg,
                False)
            return False

        nodes = Syntax.BrocLoader().AllNodes()
        for k, nodes in nodes.iteritems():
            for node in nodes:
                # jump main module itself
                if node.module.is_main:
                    continue
                if node.module.module_cvspath not in self.planished_nodes:
                    self.planished_nodes[node.module.module_cvspath] = node
                else:
                    reserved_node = self.planished_nodes[
                        node.module.module_cvspath]
                    ret = self._filter_dep_nodes(reserved_node, node)
                    if ret == 1:
                        self.planished_nodes[node.module.module_cvspath] = node
                    if ret == -1:
                        self.logger.LevPrint("ERROR", "dependent conficts(%s PK %s)" % \
                                             (reserved_node.module.origin_config, \
                                             node.module.origin_config), False)
                        return False

        self.logger.LevPrint('MSG', 'Analyzing dependency success')
        # dump planished dependency tree
        self.Dump()
        if download_flag:
            return self._download_modules()
        else:
            return True
コード例 #2
0
ファイル: test_BrocLoader.py プロジェクト: wotsen-star/broc
 def test_singleton(self):
     """
     Test singleton interface 
     """
     logger = Log.Log()
     repo_domain = 'https://github.com'
     postfix = ['trunk', 'BRANCH', 'PD_BL']
     root = PlanishUtil.CreateBrocModuleFromDir("..", repo_domain,
                                                postfix[1], postfix[2],
                                                logger)
     loader1 = Syntax.BrocLoader()
     loader2 = Syntax.BrocLoader()
     self.assertEqual(loader1.Id(), loader2.Id())
コード例 #3
0
ファイル: test_BrocLoader.py プロジェクト: wotsen-star/broc
 def test_load_broc(self):
     """
     """
     logger = Log.Log()
     repo_domain = 'https://github.com'
     postfix = ['trunk', 'BRANCH', 'PD_BL']
     root = PlanishUtil.CreateBrocModuleFromDir("..", repo_domain,
                                                postfix[1], postfix[2],
                                                logger)
     node = BrocTree.BrocNode(root, None, True)
     Syntax.BrocLoader().SetRoot(node)
     Syntax.BrocLoader().LoadBROC()
     if Syntax.BrocLoader().LackBrocModules():
         print(Syntax.BrocLoader().LackBrocModules())
コード例 #4
0
 def __init__(self, main_module, repo_domain, logger, postfix):
     """
     Args:
         main_module : the BrocModule_pb2.Module object representing the main module
         repo_domain : the domain name of repository
         logger : the log facility object
         postfix : the list of postfix [postfix_branche, postfix_tag]
     """
     Syntax.BrocLoader().SetRoot(BrocTree.BrocNode(main_module, None, True))
     self.logger = logger
     self.planished_nodes = dict()  # module cvspath --> BrocNode