Exemple #1
0
    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)
Exemple #2
0
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
Exemple #3
0
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
Exemple #4
0
 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(), [])
Exemple #5
0
 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)
Exemple #6
0
    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')
Exemple #7
0
    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)
Exemple #8
0
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
Exemple #9
0
 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
Exemple #10
0
 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
Exemple #11
0
    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
Exemple #12
0
    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())
Exemple #13
0
 def test_install_selector_err(self):
     sltr = hawkey.Selector(self.sack)
     self.assertRaises(hawkey.ValueException, sltr.set, undefined="eapoe")
Exemple #14
0
 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())
Exemple #15
0
 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))
Exemple #16
0
 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)