]> git.ipfire.org Git - people/stevee/pakfire.git/commitdiff
Fix "update" command.
authorMichael Tremer <michael.tremer@ipfire.org>
Wed, 20 Jul 2011 16:59:09 +0000 (16:59 +0000)
committerMichael Tremer <michael.tremer@ipfire.org>
Wed, 20 Jul 2011 16:59:09 +0000 (16:59 +0000)
pakfire/base.py
pakfire/satsolver.py
src/_pakfiremodule.c
src/solver.c
src/solver.h

index 05dbbaf2404f9027d5c36fc762463ae32becc2b4..c89ee8f93fd67c66ac9b3a8c45a39c343bdc0dbe 100644 (file)
@@ -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
index cc7128b761513b6a8adebede6d730f8b279a1258..43ba004e7a4bc21a8bd1281b7bb54eeb8bacd15e 100644 (file)
@@ -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)
index b55d41367cd7674a3c919cb61b1274eff1cd5f90..e616ea069cb8f939949f09f4c31e3307adf47da7 100644 (file)
@@ -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 }
 };
index 10a6f268b7cf4ad6cf3d9b47d3922f8cd24859c2..6931fe9927fe05c0020d96ca215c88e682afb979 100644 (file)
@@ -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;
 
index 89b3397481ba73191c1f56b3971f0fb416ea85cb..e831d0a96842c6f927abd0fc6f6c03a4a8b0c026 100644 (file)
@@ -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);