From 6c39533953dbd59b16fa22f6bdf94d2889ddfad6 Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Wed, 20 Jul 2011 16:59:09 +0000 Subject: [PATCH] Fix "update" command. --- pakfire/base.py | 15 +++++++++------ pakfire/satsolver.py | 2 +- src/_pakfiremodule.c | 2 ++ src/solver.c | 16 ++++++++++++++++ src/solver.h | 2 ++ 5 files changed, 30 insertions(+), 7 deletions(-) diff --git a/pakfire/base.py b/pakfire/base.py index 05dbbaf24..c89ee8f93 100644 --- a/pakfire/base.py +++ b/pakfire/base.py @@ -194,14 +194,17 @@ class Pakfire(object): def update(self, pkgs): request = self.create_request() - repo_installed = self.solver.get_repo("installed") - assert repo_installed - - for solvable in repo_installed: - request.update(solvable) + # If there are given any packets on the command line, we will + # only update them. Otherwise, we update the whole system. + if pkgs: + update = False + for pkg in pkgs: + request.update(pkg) + else: + update = True solver = self.create_solver() - t = solver.solve(request, update=True) + t = solver.solve(request, update=update) if not t: return diff --git a/pakfire/satsolver.py b/pakfire/satsolver.py index cc7128b76..43ba004e7 100644 --- a/pakfire/satsolver.py +++ b/pakfire/satsolver.py @@ -82,7 +82,7 @@ class Solver(object): # Configure the solver for an update. if update: - self._solver.set_update_system(True) + self._solver.set_updatesystem(True) self._solver.set_do_split_provides(True) res = self._solver.solve(request) diff --git a/src/_pakfiremodule.c b/src/_pakfiremodule.c index b55d41367..e616ea069 100644 --- a/src/_pakfiremodule.c +++ b/src/_pakfiremodule.c @@ -116,6 +116,8 @@ static PyMethodDef Solver_methods[] = { {"set_allow_uninstall", (PyCFunction)Solver_set_allow_uninstall, METH_VARARGS, NULL}, {"get_updatesystem", (PyCFunction)Solver_get_updatesystem, METH_NOARGS, NULL}, {"set_updatesystem", (PyCFunction)Solver_set_updatesystem, METH_VARARGS, NULL}, + {"get_do_split_provides", (PyCFunction)Solver_get_do_split_provides, METH_NOARGS, NULL}, + {"set_do_split_provides", (PyCFunction)Solver_set_do_split_provides, METH_VARARGS, NULL}, {"get_problems", (PyCFunction)Solver_get_problems, METH_VARARGS, NULL}, { NULL, NULL, 0, NULL } }; diff --git a/src/solver.c b/src/solver.c index 10a6f268b..6931fe992 100644 --- a/src/solver.c +++ b/src/solver.c @@ -122,6 +122,22 @@ PyObject *Solver_set_updatesystem(SolverObject *self, PyObject *args) { Py_RETURN_NONE; } +PyObject *Solver_get_do_split_provides(SolverObject *self, PyObject *args) { + return Py_BuildValue("i", self->_solver->dosplitprovides); +} + +PyObject *Solver_set_do_split_provides(SolverObject *self, PyObject *args) { + int val; + + if (!PyArg_ParseTuple(args, "i", &val)) { + /* XXX raise exception */ + } + + self->_solver->dosplitprovides = val; + + Py_RETURN_NONE; +} + PyObject *Solver_solve(SolverObject *self, PyObject *args) { RequestObject *request; diff --git a/src/solver.h b/src/solver.h index 89b339748..e831d0a96 100644 --- a/src/solver.h +++ b/src/solver.h @@ -25,6 +25,8 @@ extern PyObject *Solver_get_allow_uninstall(SolverObject *self, PyObject *args); extern PyObject *Solver_set_allow_uninstall(SolverObject *self, PyObject *args); extern PyObject *Solver_get_updatesystem(SolverObject *self, PyObject *args); extern PyObject *Solver_set_updatesystem(SolverObject *self, PyObject *args); +extern PyObject *Solver_get_do_split_provides(SolverObject *self, PyObject *args); +extern PyObject *Solver_set_do_split_provides(SolverObject *self, PyObject *args); extern PyObject *Solver_solve(SolverObject *self, PyObject *args); extern PyObject *Solver_get_problems(SolverObject *self, PyObject *args); -- 2.39.5