예제 #1
0
    def getSourcesWithResolveTroves(self, cfg, resolveTroveTups,
                                    builtTroveSource):
        resolveTroves = []
        searchSourceTroves = []
        allResolveTroveTups = list(itertools.chain(*cfg.resolveTroveTups))
        allResolveTroves = self.repos.getTroves(allResolveTroveTups,
                                                withFiles=False)
        resolveTrovesByTup = dict(
            (x.getNameVersionFlavor(), x) for x in allResolveTroves)

        for resolveTupList in cfg.resolveTroveTups:
            resolveTroves = [resolveTrovesByTup[x] for x in resolveTupList]
            searchSourceTroves.append(resolveTroves)
        if cfg.resolveTrovesOnly:
            repos = None
        else:
            repos = self.repos

        searchSource = resolvesource.DepHandlerSource(
            builtTroveSource,
            searchSourceTroves,
            repos,
            useInstallLabelPath=not cfg.resolveTrovesOnly,
            expandLabelQueries=True)
        resolveSource = resolvesource.rMakeResolveSource(
            cfg, builtTroveSource, searchSource.resolveTroveSource,
            searchSourceTroves, self.repos)
        return searchSource, resolveSource
예제 #2
0
파일: resolver.py 프로젝트: pombreda/rmake
    def getSourcesWithResolveTroves(self, cfg, resolveTroveTups,
                                    builtTroveSource):
        resolveTroves = []
        searchSourceTroves = []
        allResolveTroveTups = list(itertools.chain(*cfg.resolveTroveTups))
        allResolveTroves = self.repos.getTroves(allResolveTroveTups,
                                                withFiles=False)
        resolveTrovesByTup = dict((x.getNameVersionFlavor(), x)
                                  for x in allResolveTroves)

        for resolveTupList in cfg.resolveTroveTups:
            resolveTroves = [ resolveTrovesByTup[x]
                              for x in resolveTupList ]
            searchSourceTroves.append(resolveTroves)
        if cfg.resolveTrovesOnly:
            repos = None
        else:
            repos = self.repos

        searchSource = resolvesource.DepHandlerSource(builtTroveSource,
                           searchSourceTroves,
                           repos,
                           useInstallLabelPath=not cfg.resolveTrovesOnly,
                           expandLabelQueries=True)
        resolveSource = resolvesource.rMakeResolveSource(cfg,
                                                builtTroveSource,
                                                searchSource.resolveTroveSource,
                                                searchSourceTroves,
                                                self.repos)
        return searchSource, resolveSource
예제 #3
0
파일: resolver.py 프로젝트: pombreda/rmake
    def getSources(self, resolveJob, cross=False):
        cfg = resolveJob.getConfig()

        if cross:
            buildFlavor = deps.overrideFlavor(resolveJob.buildCfg.buildFlavor,
                                              resolveJob.getTrove().getFlavor())
            buildFlavor = deps.overrideFlavor(buildFlavor,
                                              deps.parseFlavor('!cross'))
            builtTroveTups = (resolveJob.getCrossTroves()
                              + resolveJob.getBuiltTroves())
            cfg = copy.deepcopy(cfg)
            cfg.flavor = [ flavorutil.setISFromTargetFlavor(buildFlavor) ]
        else:
            builtTroveTups = resolveJob.getBuiltTroves()

        if cfg.isolateTroves:
            builtTroves = []
        else:
            builtTroves = self.repos.getTroves(builtTroveTups, withFiles=False)
        builtTroveSource = resolvesource.BuiltTroveSource(builtTroves,
                                                          self.repos)
        if builtTroves:
            # this makes sure that if someone searches for a buildreq on
            # :branch, and the only thing we have is on :branch/rmakehost,
            # the trove will be found.
            rMakeHost = builtTroves[0].getVersion().trailingLabel().getHost()
            builtTroveSource = recipeutil.RemoveHostSource(builtTroveSource,
                                                           rMakeHost)
        if cfg.resolveTroveTups:
            searchSource, resolveSource = self.getSourcesWithResolveTroves(cfg,
                                                    cfg.resolveTroveTups,
                                                    builtTroveSource)
        else:
            searchSource = resolvesource.DepHandlerSource(builtTroveSource,
                                                          [], self.repos,
                                                      expandLabelQueries=True)
            resolveSource = resolvesource.rMakeResolveSource(cfg,
                                                        builtTroveSource, [],
                                                        None,
                                                        self.repos)
        if cross:
            resolveSource.removeFileDependencies = True
        return searchSource, resolveSource
예제 #4
0
    def getSources(self, resolveJob, cross=False):
        cfg = resolveJob.getConfig()

        if cross:
            buildFlavor = deps.overrideFlavor(
                resolveJob.buildCfg.buildFlavor,
                resolveJob.getTrove().getFlavor())
            buildFlavor = deps.overrideFlavor(buildFlavor,
                                              deps.parseFlavor('!cross'))
            builtTroveTups = (resolveJob.getCrossTroves() +
                              resolveJob.getBuiltTroves())
            cfg = copy.deepcopy(cfg)
            cfg.flavor = [flavorutil.setISFromTargetFlavor(buildFlavor)]
        else:
            builtTroveTups = resolveJob.getBuiltTroves()

        if cfg.isolateTroves:
            builtTroves = []
        else:
            builtTroves = self.repos.getTroves(builtTroveTups, withFiles=False)
        builtTroveSource = resolvesource.BuiltTroveSource(
            builtTroves, self.repos)
        if builtTroves:
            # this makes sure that if someone searches for a buildreq on
            # :branch, and the only thing we have is on :branch/rmakehost,
            # the trove will be found.
            rMakeHost = builtTroves[0].getVersion().trailingLabel().getHost()
            builtTroveSource = recipeutil.RemoveHostSource(
                builtTroveSource, rMakeHost)
        if cfg.resolveTroveTups:
            searchSource, resolveSource = self.getSourcesWithResolveTroves(
                cfg, cfg.resolveTroveTups, builtTroveSource)
        else:
            searchSource = resolvesource.DepHandlerSource(
                builtTroveSource, [], self.repos, expandLabelQueries=True)
            resolveSource = resolvesource.rMakeResolveSource(
                cfg, builtTroveSource, [], None, self.repos)
        if cross:
            resolveSource.removeFileDependencies = True
        return searchSource, resolveSource