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"
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)
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')
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)]
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
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)
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)
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)
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"
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')