]> git.ipfire.org Git - pakfire.git/commitdiff
pakfire: Move refresh into libpakfire
authorMichael Tremer <michael.tremer@ipfire.org>
Sat, 19 Jun 2021 13:15:45 +0000 (13:15 +0000)
committerMichael Tremer <michael.tremer@ipfire.org>
Sat, 19 Jun 2021 13:15:45 +0000 (13:15 +0000)
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
src/_pakfire/pakfire.c
src/libpakfire/include/pakfire/pakfire.h
src/libpakfire/include/pakfire/repo.h
src/libpakfire/libpakfire.sym
src/libpakfire/pakfire.c
src/libpakfire/repo.c
src/pakfire/base.py

index ca62a9bf104baf45ffece8707a7b80a42e01af74..39b3c1f5b07ec4fb45bbb235667c38d7e58336f4 100644 (file)
@@ -859,6 +859,21 @@ static PyObject* Pakfire_clean(PakfireObject* self) {
        Py_RETURN_NONE;
 }
 
+static PyObject* Pakfire_refresh(PakfireObject* self, PyObject* args) {
+       int force = 0;
+
+       if (!PyArg_ParseTuple(args, "|p", &force))
+               return NULL;
+
+       int r = pakfire_refresh(self->pakfire, force);
+       if (r) {
+               PyErr_SetFromErrno(PyExc_OSError);
+               return NULL;
+       }
+
+       Py_RETURN_NONE;
+}
+
 static struct PyMethodDef Pakfire_methods[] = {
        {
                "bind",
@@ -938,6 +953,12 @@ static struct PyMethodDef Pakfire_methods[] = {
                METH_VARARGS,
                NULL
        },
+       {
+               "refresh",
+               (PyCFunction)Pakfire_refresh,
+               METH_VARARGS,
+               NULL,
+       },
        {
                "search",
                (PyCFunction)Pakfire_search,
index f286384ec698ac1b795f2dc9ffccdf3eeaa61fb6..16faa7a58f4973b85e7a9aeb1bf68118c779e1e2 100644 (file)
@@ -48,6 +48,7 @@ Pakfire pakfire_unref(Pakfire pakfire);
 const char* pakfire_get_path(Pakfire pakfire);
 
 int pakfire_clean(Pakfire pakfire, int flags);
+int pakfire_refresh(Pakfire pakfire, int flags);
 
 int pakfire_bind(Pakfire pakfire, const char* src, const char* dst, int flags);
 
index 3cd59424fe11b789584c266cffef61fe6991b0b7..ccb4a8fb9199096a9ebcfe082183fa2bcb54b204 100644 (file)
@@ -83,7 +83,7 @@ int pakfire_repo_scan(PakfireRepo repo, int flags);
 
 // Refresh
 
-int pakfire_repo_refresh(PakfireRepo repo, const int force);
+int pakfire_repo_refresh(PakfireRepo repo, int force);
 
 #ifdef PAKFIRE_PRIVATE
 
index 13482a2602f2a450415715dc79ad92a28037c267..393b1b90bb2fae032f48e65a2d8ab7dac4037487 100644 (file)
@@ -40,6 +40,7 @@ global:
        pakfire_install;
        pakfire_read_makefile;
        pakfire_ref;
+       pakfire_refresh;
        pakfire_search;
        pakfire_set_installonly;
        pakfire_unref;
index f6ffb8dbe6239f7a5bd890b7879e34eaece92faf..20dd54933749574d620251a3050966e378bed886 100644 (file)
@@ -1085,6 +1085,14 @@ PAKFIRE_EXPORT int pakfire_clean(Pakfire pakfire, int flags) {
        return pakfire_foreach_repo(pakfire, pakfire_repo_clean, flags);
 }
 
+PAKFIRE_EXPORT int pakfire_refresh(Pakfire pakfire, int flags) {
+       // Do nothing if running in offline mode
+       if (pakfire_has_flag(pakfire, PAKFIRE_FLAGS_OFFLINE))
+               return 0;
+
+       return pakfire_foreach_repo(pakfire, pakfire_repo_refresh, flags);
+}
+
 static int pakfire_copy(Pakfire pakfire, const char* src, const char* dst) {
        char buffer[512 * 1024];
        struct archive* reader = NULL;
@@ -1395,6 +1403,11 @@ static PakfirePackageList pakfire_search_provides(Pakfire pakfire, const char* p
 }
 
 PAKFIRE_EXPORT PakfirePackageList pakfire_whatprovides(Pakfire pakfire, const char* what, int flags) {
+       // Refresh repositories
+       int r = pakfire_refresh(pakfire, 0);
+       if (r)
+               return NULL;
+
        if (flags & PAKFIRE_NAME_ONLY) {
                flags &= ~PAKFIRE_NAME_ONLY;
 
@@ -1405,6 +1418,11 @@ PAKFIRE_EXPORT PakfirePackageList pakfire_whatprovides(Pakfire pakfire, const ch
 }
 
 PAKFIRE_EXPORT PakfirePackageList pakfire_search(Pakfire pakfire, const char* what, int flags) {
+       // Refresh repositories
+       int r = pakfire_refresh(pakfire, 0);
+       if (r)
+               return NULL;
+
        return pakfire_pool_dataiterator(pakfire, what, 0, PAKFIRE_SUBSTRING);
 }
 
@@ -1596,6 +1614,11 @@ static int pakfire_perform_transaction(Pakfire pakfire,
                return 1;
        }
 
+       // Refresh repositories
+       r = pakfire_refresh(pakfire, 0);
+       if (r)
+               goto ERROR;
+
        // Create a new request
        r = pakfire_request_create(&request, pakfire, 0);
        if (r)
index 3ce328c3e7cc1872f099de32dc40a1efacc0c22a..ef51269166ce169db4a63dd9145909a9630f67f2 100644 (file)
@@ -942,7 +942,7 @@ ERROR:
        return r;
 }
 
-PAKFIRE_EXPORT int pakfire_repo_refresh(PakfireRepo repo, const int force) {
+PAKFIRE_EXPORT int pakfire_repo_refresh(PakfireRepo repo, int force) {
        const char* name = pakfire_repo_get_name(repo);
        int r;
 
index 497a7dfcb945362e2885dea7844513ad6e4cf144..07cd0f77c70b10fa320a6aebccfd48fcc6c8cd49 100644 (file)
@@ -40,18 +40,11 @@ class Pakfire(_pakfire.Pakfire):
                        Called to initialize this Pakfire instance when
                        the context is entered.
                """
-               # Refresh repositories
-               self.refresh_repositories()
-
                return PakfireContext(self)
 
        def __exit__(self, type, value, traceback):
                pass
 
-       def refresh_repositories(self, force=False):
-               for repo in self.repos:
-                       repo.refresh(force=force)
-
 
 class PakfireContext(object):
        """