Esempio n. 1
0
 def testProvidesQuery(self):
     db = self.openDatabase()
     self.addComponent("foo:runtime", "1.0", provides="soname: ELF32/foo.so.3(GLIBC_2.0)")
     self.updatePkg("foo:runtime")
     tups, primary = query.getTrovesToDisplay(
         db, [], [], [deps.parseDep("soname: ELF32/foo.so.3(GLIBC_2.0)"), deps.parseDep("trove:foo:runtime")]
     )
     assert tups[0][0] == "foo:runtime"
Esempio n. 2
0
 def testExactFlavorQuery(self):
     db = self.openDatabase()
     self.addComponent('foo:runtime[~ssl]')
     self.updatePkg('foo:runtime')
     self.assertRaises(errors.TroveNotFound,
                       query.getTrovesToDisplay,
                       db, ['foo:runtime'],
                       exactFlavors=True)
     tups, primary = query.getTrovesToDisplay(db, ['foo:runtime[~ssl]'],
                                              exactFlavors=True)
Esempio n. 3
0
 def testProvidesQuery(self):
     db = self.openDatabase()
     self.addComponent('foo:runtime',
                       '1.0',
                       provides='soname: ELF32/foo.so.3(GLIBC_2.0)')
     self.updatePkg('foo:runtime')
     tups, primary = query.getTrovesToDisplay(db, [], [], [
         deps.parseDep('soname: ELF32/foo.so.3(GLIBC_2.0)'),
         deps.parseDep('trove:foo:runtime')
     ])
     assert (tups[0][0] == 'foo:runtime')
Esempio n. 4
0
 def _getConaryPkg(self, init_script):
     conary_list = []
     trv = ([], False)
     cfg = conarycfg.ConaryConfiguration(True)
     cli = conaryclient.ConaryClient(cfg)
     db = cli.db
     try:
         trv = query.getTrovesToDisplay(db, troveSpecs=[], 
                                     pathList=[init_script])
         if trv[0]:
             conary_list.append(trv[0][0])
     except errors.ConaryError, e:
         logger.error('Failed to query conary db: %s' % str(e))
         conary_list = [str(e)]
Esempio n. 5
0
 def _getConaryPkg(self, init_script):
     conary_list = []
     trv = ([], False)
     cfg = conarycfg.ConaryConfiguration(True)
     cli = conaryclient.ConaryClient(cfg)
     db = cli.db
     try:
         trv = query.getTrovesToDisplay(db,
                                        troveSpecs=[],
                                        pathList=[init_script])
         if trv[0]:
             conary_list.append(trv[0][0])
     except errors.ConaryError, e:
         logger.error('Failed to query conary db: %s' % str(e))
         conary_list = [str(e)]
Esempio n. 6
0
    def query(self, trove):
        '''Finds the given trove

        This is a wrapper around getTrovesToDisplay.

        trove is a string "n[=v][[f]]".
        Returns a list of (name, Version, Flavor) tuples.
        '''
        if trove is None or trove == "":
            return []
        try:
            ret = query.getTrovesToDisplay(self.db, [trove], [], [], False)[0]
        except errors.TroveNotFound:
            ret = []
        return ret
Esempio n. 7
0
def displayChangeSet(
    db,
    cs,
    troveSpecs,
    cfg,
    asDiff=False,
    diffBinaries=False,
    # selection options
    exactFlavors=False,
    # trove options
    info=False,
    digSigs=False,
    deps=False,
    showBuildReqs=False,
    all=False,
    # file options
    ls=False,
    lsl=False,
    ids=False,
    sha1s=False,
    tags=False,
    fileDeps=False,
    fileVersions=False,
    fileFlavors=False,
    capsules=False,
    # collection options
    showTroves=False,
    recurse=None,
    showAllTroves=False,
    weakRefs=False,
    showTroveFlags=False,
    alwaysDisplayHeaders=False,
    recurseRepos=False,
    # job options
    showChanges=False,
    asJob=False,
):

    asDiff = asDiff or diffBinaries

    if all:
        deps = recurse = showTroveFlags = showAllTroves = True
        if ls:
            fileDeps = lsl = tags = True

    if showChanges:
        lsl = True

    if recurseRepos:
        recurse = True

    client = conaryclient.ConaryClient(cfg)
    repos = client.getRepos()

    if asDiff:
        troveSource = trovesource.SourceStack(client.getDatabase(), repos)
        for x in cs.gitDiff(troveSource, diffBinaries=diffBinaries):
            sys.stdout.write(x)
    elif not asJob and not showChanges and cs.isAbsolute():
        changeSetSource = trovesource.ChangesetFilesTroveSource(None)
        changeSetSource.addChangeSet(cs)

        if not troveSpecs:
            troveTups = cs.getPrimaryTroveList()
            primary = True
            if not troveTups:
                log.warning("No primary troves in changeset, listing all troves")
                troveTups = [(x.getName(), x.getNewVersion(), x.getNewFlavor()) for x in cs.iterNewTroveList()]
        else:
            troveTups, primary = query.getTrovesToDisplay(changeSetSource, troveSpecs, exactFlavors=exactFlavors)
        if recurseRepos:
            querySource = trovesource.stack(changeSetSource, client.getRepos())
        else:
            querySource = changeSetSource

        dcfg = display.DisplayConfig(querySource, client.db)
        dcfg.setTroveDisplay(
            deps=deps,
            info=info,
            showBuildReqs=showBuildReqs,
            digSigs=digSigs,
            fullFlavors=cfg.fullFlavors,
            showLabels=cfg.showLabels,
            baseFlavors=cfg.flavor,
            fullVersions=cfg.fullVersions,
        )
        dcfg.setFileDisplay(
            ls=ls,
            lsl=lsl,
            ids=ids,
            sha1s=sha1s,
            tags=tags,
            fileDeps=fileDeps,
            fileVersions=fileVersions,
            fileFlavors=fileFlavors,
            capsules=capsules,
        )

        recurseOne = showTroves or showAllTroves or weakRefs
        if recurse is None and not recurseOne:
            # if we didn't explicitly set recurse and we're not recursing one
            # level explicitly
            recurse = True in (ls, lsl, ids, sha1s, tags, deps, fileDeps, fileVersions, fileFlavors)

        dcfg.setChildDisplay(
            recurseAll=recurse,
            recurseOne=recurseOne,
            showNotByDefault=showAllTroves,
            showWeakRefs=weakRefs,
            checkExists=True,
            showNotExists=True,
            showTroveFlags=showTroveFlags,
            displayHeaders=alwaysDisplayHeaders or showTroveFlags,
        )

        if primary:
            dcfg.setPrimaryTroves(set(troveTups))
        formatter = display.TroveFormatter(dcfg)
        display.displayTroves(dcfg, formatter, troveTups)
    else:
        changeSetSource = trovesource.ChangeSetJobSource(repos, trovesource.stack(db, repos))
        changeSetSource.addChangeSet(cs)

        jobs = getJobsToDisplay(changeSetSource, troveSpecs)

        dcfg = display.JobDisplayConfig(changeSetSource, client.db)

        dcfg.setJobDisplay(showChanges=showChanges, compressJobs=not cfg.showComponents)

        dcfg.setTroveDisplay(
            deps=deps,
            info=info,
            fullFlavors=cfg.fullFlavors,
            showLabels=cfg.showLabels,
            baseFlavors=cfg.flavor,
            fullVersions=cfg.fullVersions,
        )

        dcfg.setFileDisplay(
            ls=ls,
            lsl=lsl,
            ids=ids,
            sha1s=sha1s,
            tags=tags,
            fileDeps=fileDeps,
            fileVersions=fileVersions,
            fileFlavors=fileFlavors,
        )

        recurseOne = showTroves or showAllTroves or weakRefs
        if recurse is None and not recurseOne:
            # if we didn't explicitly set recurse and we're not recursing one
            # level explicitly and we specified troves (so everything won't
            # show up at the top level anyway), guess at whether to recurse
            recurse = True in (ls, lsl, ids, sha1s, tags, deps, fileDeps, fileVersions, fileFlavors)

        dcfg.setChildDisplay(
            recurseAll=recurse,
            recurseOne=recurseOne,
            showNotByDefault=showAllTroves,
            showWeakRefs=weakRefs,
            showTroveFlags=showTroveFlags,
        )

        formatter = display.JobFormatter(dcfg)
        display.displayJobs(dcfg, formatter, jobs)
Esempio n. 8
0
def displayChangeSet(
        db,
        cs,
        troveSpecs,
        cfg,
        asDiff=False,
        diffBinaries=False,
        # selection options
        exactFlavors=False,
        # trove options
        info=False,
        digSigs=False,
        deps=False,
        showBuildReqs=False,
        all=False,
        # file options
        ls=False,
        lsl=False,
        ids=False,
        sha1s=False,
        tags=False,
        fileDeps=False,
        fileVersions=False,
        fileFlavors=False,
        capsules=False,
        # collection options
        showTroves=False,
        recurse=None,
        showAllTroves=False,
        weakRefs=False,
        showTroveFlags=False,
        alwaysDisplayHeaders=False,
        recurseRepos=False,
        # job options
        showChanges=False,
        asJob=False):

    asDiff = asDiff or diffBinaries

    if all:
        deps = recurse = showTroveFlags = showAllTroves = True
        if ls:
            fileDeps = lsl = tags = True

    if showChanges:
        lsl = True

    if recurseRepos:
        recurse = True

    client = conaryclient.ConaryClient(cfg)
    repos = client.getRepos()

    if asDiff:
        troveSource = trovesource.SourceStack(client.getDatabase(), repos)
        for x in cs.gitDiff(troveSource, diffBinaries=diffBinaries):
            sys.stdout.write(x)
    elif not asJob and not showChanges and cs.isAbsolute():
        changeSetSource = trovesource.ChangesetFilesTroveSource(None)
        changeSetSource.addChangeSet(cs)

        if not troveSpecs:
            troveTups = cs.getPrimaryTroveList()
            primary = True
            if not troveTups:
                log.warning(
                    'No primary troves in changeset, listing all troves')
                troveTups = [(x.getName(), x.getNewVersion(), x.getNewFlavor())\
                                            for x in cs.iterNewTroveList()]
        else:
            troveTups, primary = query.getTrovesToDisplay(
                changeSetSource, troveSpecs, exactFlavors=exactFlavors)
        if recurseRepos:
            querySource = trovesource.stack(changeSetSource, client.getRepos())
        else:
            querySource = changeSetSource

        dcfg = display.DisplayConfig(querySource, client.db)
        dcfg.setTroveDisplay(
            deps=deps,
            info=info,
            showBuildReqs=showBuildReqs,
            digSigs=digSigs,
            fullFlavors=cfg.fullFlavors,
            showLabels=cfg.showLabels,
            baseFlavors=cfg.flavor,
            fullVersions=cfg.fullVersions,
        )
        dcfg.setFileDisplay(ls=ls,
                            lsl=lsl,
                            ids=ids,
                            sha1s=sha1s,
                            tags=tags,
                            fileDeps=fileDeps,
                            fileVersions=fileVersions,
                            fileFlavors=fileFlavors,
                            capsules=capsules)

        recurseOne = showTroves or showAllTroves or weakRefs
        if recurse is None and not recurseOne:
            # if we didn't explicitly set recurse and we're not recursing one
            # level explicitly
            recurse = True in (ls, lsl, ids, sha1s, tags, deps, fileDeps,
                               fileVersions, fileFlavors)

        dcfg.setChildDisplay(recurseAll=recurse,
                             recurseOne=recurseOne,
                             showNotByDefault=showAllTroves,
                             showWeakRefs=weakRefs,
                             checkExists=True,
                             showNotExists=True,
                             showTroveFlags=showTroveFlags,
                             displayHeaders=alwaysDisplayHeaders
                             or showTroveFlags)

        if primary:
            dcfg.setPrimaryTroves(set(troveTups))
        formatter = display.TroveFormatter(dcfg)
        display.displayTroves(dcfg, formatter, troveTups)
    else:
        changeSetSource = trovesource.ChangeSetJobSource(
            repos, trovesource.stack(db, repos))
        changeSetSource.addChangeSet(cs)

        jobs = getJobsToDisplay(changeSetSource, troveSpecs)

        dcfg = display.JobDisplayConfig(changeSetSource, client.db)

        dcfg.setJobDisplay(showChanges=showChanges,
                           compressJobs=not cfg.showComponents)

        dcfg.setTroveDisplay(deps=deps,
                             info=info,
                             fullFlavors=cfg.fullFlavors,
                             showLabels=cfg.showLabels,
                             baseFlavors=cfg.flavor,
                             fullVersions=cfg.fullVersions)

        dcfg.setFileDisplay(ls=ls,
                            lsl=lsl,
                            ids=ids,
                            sha1s=sha1s,
                            tags=tags,
                            fileDeps=fileDeps,
                            fileVersions=fileVersions,
                            fileFlavors=fileFlavors)

        recurseOne = showTroves or showAllTroves or weakRefs
        if recurse is None and not recurseOne:
            # if we didn't explicitly set recurse and we're not recursing one
            # level explicitly and we specified troves (so everything won't
            # show up at the top level anyway), guess at whether to recurse
            recurse = True in (ls, lsl, ids, sha1s, tags, deps, fileDeps,
                               fileVersions, fileFlavors)

        dcfg.setChildDisplay(recurseAll=recurse,
                             recurseOne=recurseOne,
                             showNotByDefault=showAllTroves,
                             showWeakRefs=weakRefs,
                             showTroveFlags=showTroveFlags)

        formatter = display.JobFormatter(dcfg)
        display.displayJobs(dcfg, formatter, jobs)
Esempio n. 9
0
 def testExactFlavorQuery(self):
     db = self.openDatabase()
     self.addComponent("foo:runtime[~ssl]")
     self.updatePkg("foo:runtime")
     self.assertRaises(errors.TroveNotFound, query.getTrovesToDisplay, db, ["foo:runtime"], exactFlavors=True)
     tups, primary = query.getTrovesToDisplay(db, ["foo:runtime[~ssl]"], exactFlavors=True)
Esempio n. 10
0
 def testPathQuery(self):
     db = self.openDatabase()
     self.addComponent("foo:runtime", "1.0", "", ["/usr/bin/foo"])
     self.updatePkg("foo:runtime")
     tups, primary = query.getTrovesToDisplay(db, [], ["/usr/bin/foo"])
     assert tups[0][0] == "foo:runtime"
Esempio n. 11
0
 def testPathQuery(self):
     db = self.openDatabase()
     self.addComponent('foo:runtime', '1.0', '', ['/usr/bin/foo'])
     self.updatePkg('foo:runtime')
     tups, primary = query.getTrovesToDisplay(db, [], ['/usr/bin/foo'])
     assert (tups[0][0] == 'foo:runtime')