def test_install_selector_err(self): sltr = hawkey.Selector(self.sack) self.assertRaises(hawkey.ValueException, sltr.set, undefined="eapoe") sltr = hawkey.Selector(self.sack).set(name="semolina", arch="i666") goal = hawkey.Goal(self.sack) self.assertRaises(hawkey.ArchException, goal.install, select=sltr)
def _get_builddep_selector(sack, dep): # Try to find something by provides sltr = hawkey.Selector(sack) sltr.set(provides=dep) found = sltr.matches() if not found and dep.startswith("/"): # Nothing matches by provides and since it's file, try by files sltr = hawkey.Selector(sack) sltr.set(file=dep) return sltr
def run_goal(sack, group, br): # pylint:disable=E1101 goal = hawkey.Goal(sack) problems = [] for name in group: sltr = hawkey.Selector(sack).set(name=name) if not sltr.matches(): problems.append( "Package in base build group not found: {}".format(name)) goal.install(select=sltr) for r in br: sltr = _get_best_selector(sack, r) # pylint: disable=E1103 if not sltr.matches(): problems.append("No package found for: {}".format(r)) else: goal.install(select=sltr) if not problems: kwargs = {} if config['dependency']['ignore_weak_deps']: kwargs = {'ignore_weak_deps': True} resolved = goal.run(**kwargs) return resolved, goal.problems, goal.list_installs( ) if resolved else None return False, problems, None
def test_empty_selector(self): sltr = hawkey.Selector(self.sack) goal = hawkey.Goal(self.sack) # does not raise ValueException goal.install(select=sltr) goal.run() self.assertEqual(goal.list_installs(), [])
def test_actions(self): sltr = hawkey.Selector(self.sack).set(name="walrus") goal = hawkey.Goal(self.sack) self.assertEqual(set(), goal.actions) goal.upgrade(select=sltr) self.assertEqual(set([hawkey.UPGRADE]), goal.actions) goal.install(name="semolina") self.assertEqual(set([hawkey.UPGRADE, hawkey.INSTALL]), goal.actions)
def test_install_selector(self): sltr = hawkey.Selector(self.sack).set(name="walrus") # without checking versioning, the update is accepted: self.assertIsNone(hawkey.Goal(self.sack).upgrade(select=sltr)) goal = hawkey.Goal(self.sack) goal.install(name="semolina") goal.run() self.assertEqual(str(goal.list_installs()[0]), 'semolina-2-0.x86_64')
def test_actions(self): sltr = hawkey.Selector(self.sack).set(name="walrus") goal = hawkey.Goal(self.sack) self.assertEqual( 0, goal.actions & (hawkey.ERASE | hawkey.DISTUPGRADE | hawkey.DISTUPGRADE_ALL | hawkey.DOWNGRADE | hawkey.INSTALL | hawkey.UPGRADE | hawkey.UPGRADE_ALL)) goal.upgrade(select=sltr) self.assertEqual(hawkey.UPGRADE, goal.actions)
def _get_best_selector(sack, dep): # Based on get_best_selector in dnf's subject.py def is_glob_pattern(pattern): return set(pattern) & set("*[?") def first(iterable): it = iter(iterable) try: return next(it) except StopIteration: return None def _nevra_to_selector(sltr, nevra): if nevra.name is not None: if is_glob_pattern(nevra.name): sltr.set(name__glob=nevra.name) else: sltr.set(name=nevra.name) if nevra.version is not None: evr = nevra.version if nevra.epoch is not None and nevra.epoch > 0: evr = "%d:%s" % (nevra.epoch, evr) if nevra.release is None: sltr.set(version=evr) else: evr = "%s-%s" % (evr, nevra.release) sltr.set(evr=evr) if nevra.arch is not None: sltr.set(arch=nevra.arch) return sltr subj = hawkey.Subject(dep) sltr = hawkey.Selector(sack) nevra = first(subj.nevra_possibilities_real(sack, allow_globs=True)) if nevra: s = _nevra_to_selector(sltr, nevra) if len(s.matches()) > 0: return s # pylint: disable=E1101 reldep = first(subj.reldep_possibilities_real(sack)) if reldep: dep = str(reldep) s = sltr.set(provides=dep) if len(s.matches()) > 0: return s if re.search(r'^\*?/', dep): key = "file__glob" if is_glob_pattern(dep) else "file" return sltr.set(**{key: dep}) return sltr
def selector(self): if not self._selector: self._selector = hawkey.Selector(self.sack) if self.package.arch: self._selector.set(name=self.package.name, arch=self.package.arch) self._selector.request = '%s.%s' % (self.package.name, self.package.arch) else: self._selector.set(name=self.package.name) self._selector.request = self.package.name return self._selector
def prepare_goal(self, srpm): goal = hawkey.Goal(self.sack) problems = [] for name in self.group: sltr = hawkey.Selector(self.sack).set(name=name) goal.install(select=sltr) for reldep in srpm.requires: subj = dnf.subject.Subject(str(reldep)) sltr = subj.get_best_selector(self.sack) # pylint: disable=E1103 if sltr is None or not sltr.matches(): problems.append("No package found for: {}".format(reldep)) else: goal.install(select=sltr) return goal, problems
def _get_subpackages(self, hpo): if not hpo.sourcerpm: return [] query = self.query.filter(sourcerpm=hpo.sourcerpm) query.run() selectors = [] for po in (set(query.result) - self.data): if po in self.skiplist: continue select = hawkey.Selector(self.sack) select.set(name=po.name, arch=po.arch) select.request = po selectors.append(select) return selectors
def test_req(self): goal = hawkey.Goal(self.sack) self.assertEqual(goal.req_length(), 0) self.assertFalse(goal.req_has_erase()) sltr = hawkey.Selector(self.sack).set(name="jay") goal.erase(select=sltr) self.assertEqual(goal.req_length(), 1) self.assertTrue(goal.req_has_erase()) goal = hawkey.Goal(self.sack) goal.upgrade(select=sltr) self.assertFalse(goal.req_has_erase()) goal = hawkey.Goal(self.sack) pkg = hawkey.Query(self.sack).filter(name="dog")[0] goal.erase(pkg, clean_deps=True) self.assertTrue(goal.req_has_erase())
def test_install_selector_err(self): sltr = hawkey.Selector(self.sack) self.assertRaises(hawkey.ValueException, sltr.set, undefined="eapoe")
def test_install_selector_weak(self): sltr = hawkey.Selector(self.sack).set(name='hello') goal = hawkey.Goal(self.sack) goal.install(select=sltr, optional=True) self.assertTrue(goal.run())
def test_install_selector(self): sltr = hawkey.Selector(self.sack).set(name="walrus") # without checking versioning, the update is accepted: self.assertIsNone(hawkey.Goal(self.sack).upgrade(select=sltr))
def test_actions(self): sltr = hawkey.Selector(self.sack).set(name="walrus") goal = hawkey.Goal(self.sack) self.assertEqual(set(), goal.actions) goal.upgrade(select=sltr) self.assertEqual(set([hawkey.UPGRADE]), goal.actions)