]> git.ipfire.org Git - pakfire.git/commitdiff
Implement sync
authorMichael Tremer <michael.tremer@ipfire.org>
Mon, 21 Jun 2021 16:07:17 +0000 (16:07 +0000)
committerMichael Tremer <michael.tremer@ipfire.org>
Mon, 21 Jun 2021 16:07:17 +0000 (16:07 +0000)
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
src/_pakfire/pakfire.c
src/_pakfire/request.c
src/libpakfire/include/pakfire/pakfire.h
src/libpakfire/include/pakfire/request.h
src/libpakfire/libpakfire.sym
src/libpakfire/pakfire.c
src/libpakfire/request.c
src/pakfire/cli.py

index 400db9cc329f6cff2b32014fa5bfae67e0ca6b5f..285ca62c3791a3f1c2f4c28c0b6315ecc405d994 100644 (file)
@@ -1052,6 +1052,16 @@ static PyObject* Pakfire_check(PakfireObject* self) {
        Py_RETURN_NONE;
 }
 
+static PyObject* Pakfire_sync(PakfireObject* self) {
+       int r = pakfire_sync(self->pakfire, NULL);
+       if (r) {
+               PyErr_SetFromErrno(PyExc_OSError);
+               return NULL;
+       }
+
+       Py_RETURN_NONE;
+}
+
 static struct PyMethodDef Pakfire_methods[] = {
        {
                "bind",
@@ -1167,6 +1177,12 @@ static struct PyMethodDef Pakfire_methods[] = {
                METH_NOARGS,
                NULL,
        },
+       {
+               "sync",
+               (PyCFunction)Pakfire_sync,
+               METH_NOARGS,
+               NULL,
+       },
        {
                "update",
                (PyCFunction)Pakfire_update,
index dce50ee0d8f2cbb6d6c5892689b5e91c05ed0cfa..44131f613da1d345b66b6e6f7ecf74e430c42adb 100644 (file)
@@ -115,8 +115,8 @@ static PyObject* Request_upgrade_all(RequestObject* self) {
        Py_RETURN_NONE;
 }
 
-static PyObject* Request_distupgrade(RequestObject* self) {
-       int r = pakfire_request_distupgrade(self->request);
+static PyObject* Request_sync(RequestObject* self) {
+       int r = pakfire_request_sync(self->request);
        if (r) {
                PyErr_SetFromErrno(PyExc_OSError);
                return NULL;
@@ -228,8 +228,8 @@ static struct PyMethodDef Request_methods[] = {
                NULL
        },
        {
-               "distupgrade",
-               (PyCFunction)Request_distupgrade,
+               "sync",
+               (PyCFunction)Request_sync,
                METH_NOARGS,
                NULL
        },
index 2eed931cee12b5da64084df30672f1c339ca6fa5..f8adba0657a103745955d336db5bef77ddf55ad0 100644 (file)
@@ -90,6 +90,10 @@ int pakfire_update(Pakfire pakfire, const char** packages, int flags, int* chang
 
 int pakfire_check(Pakfire pakfire);
 
+// Sync
+
+int pakfire_sync(Pakfire pakfire, int* changed);
+
 #ifdef PAKFIRE_PRIVATE
 
 #include <solv/pool.h>
index 9b66e506f7dc52a1c86e7f5474306ec07d48e92b..d3968100e58a71ec2da0a413e15ac579e99f58b6 100644 (file)
@@ -58,7 +58,7 @@ int pakfire_request_upgrade(struct pakfire_request* request, const char* what, i
 int pakfire_request_upgrade_package(struct pakfire_request* request, PakfirePackage package);
 
 int pakfire_request_upgrade_all(struct pakfire_request* request);
-int pakfire_request_distupgrade(struct pakfire_request* request);
+int pakfire_request_sync(struct pakfire_request* request);
 
 int pakfire_request_lock(struct pakfire_request* request, const char* what);
 int pakfire_request_lock_package(struct pakfire_request* request, PakfirePackage package);
index 8e519c5ba0825ddb4ea3a7b0db5f3194ccc4fb12..3f090022d9dc82819a9ab176e3aba38e3e9f339e 100644 (file)
@@ -44,6 +44,7 @@ global:
        pakfire_refresh;
        pakfire_search;
        pakfire_set_installonly;
+       pakfire_sync;
        pakfire_unref;
        pakfire_update;
        pakfire_version_compare;
@@ -314,7 +315,6 @@ global:
 
        # request
        pakfire_request_create;
-       pakfire_request_distupgrade;
        pakfire_request_erase;
        pakfire_request_erase_package;
        pakfire_request_get_pool;
@@ -326,6 +326,7 @@ global:
        pakfire_request_lock_package;
        pakfire_request_ref;
        pakfire_request_solve;
+       pakfire_request_sync;
        pakfire_request_upgrade;
        pakfire_request_upgrade_all;
        pakfire_request_upgrade_package;
index 0fae1c0e0fc984019470f17296474580765c1744..6b9d225dc25ef253f28f9b279fd07141f2b4c494 100644 (file)
@@ -1763,3 +1763,7 @@ ERROR:
 
        return r;
 }
+
+PAKFIRE_EXPORT int pakfire_sync(Pakfire pakfire, int* changed) {
+       return pakfire_perform_transaction_simple(pakfire, pakfire_request_sync, changed);
+}
index f5c2b9d14603233e785b3c81c3e565e5bae81fc7..94334cf8ea4c6de3805095aededfe93f8641c358 100644 (file)
@@ -492,8 +492,8 @@ PAKFIRE_EXPORT int pakfire_request_upgrade_all(struct pakfire_request* request)
        return 0;
 }
 
-PAKFIRE_EXPORT int pakfire_request_distupgrade(struct pakfire_request* request) {
-       queue_push2(&request->jobs, SOLVER_SOLVABLE_ALL|SOLVER_DISTUPGRADE, 0);
+PAKFIRE_EXPORT int pakfire_request_sync(struct pakfire_request* request) {
+       queue_push2(&request->jobs, SOLVER_SOLVABLE_ALL|SOLVER_DISTUPGRADE|SOLVER_DROP_ORPHANED, 0);
 
        return 0;
 }
index 0250d2a8e3637398ec457b3c51c2823dc9e2df78..3886bce6e7dff8d05b957e5ffdecb4d40c9e073f 100644 (file)
@@ -257,13 +257,7 @@ class Cli(object):
                )
 
        def handle_sync(self, ns):
-               with self.pakfire(ns) as p:
-                       transaction = p.update(
-                               allow_archchange=True,
-                               allow_vendorchange=True,
-                       )
-
-                       self._execute_transaction(transaction)
+               self.pakfire(ns).sync()
 
        def handle_install(self, ns):
                p = self.pakfire(ns)