From: Michael Tremer Date: Fri, 18 Jun 2021 16:23:31 +0000 (+0000) Subject: Move clean function into libpakfire X-Git-Tag: 0.9.28~1234 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=d1ed1ada062bd5869e338dfd1d0449c9e7499706;p=pakfire.git Move clean function into libpakfire Signed-off-by: Michael Tremer --- diff --git a/src/_pakfire/pakfire.c b/src/_pakfire/pakfire.c index 32893cf50..c8e17fab1 100644 --- a/src/_pakfire/pakfire.c +++ b/src/_pakfire/pakfire.c @@ -849,6 +849,16 @@ static PyObject* Pakfire_shell(PakfireObject* self) { return execute_return_value(r); } +static PyObject* Pakfire_clean(PakfireObject* self) { + int r = pakfire_clean(self->pakfire); + if (r) { + PyErr_SetFromErrno(PyExc_OSError); + return NULL; + } + + Py_RETURN_NONE; +} + static struct PyMethodDef Pakfire_methods[] = { { "bind", @@ -862,6 +872,12 @@ static struct PyMethodDef Pakfire_methods[] = { METH_VARARGS|METH_KEYWORDS, NULL }, + { + "clean", + (PyCFunction)Pakfire_clean, + METH_NOARGS, + NULL, + }, { "copy_in", (PyCFunction)Pakfire_copy_in, diff --git a/src/libpakfire/include/pakfire/pakfire.h b/src/libpakfire/include/pakfire/pakfire.h index 7fb2e72ac..1f1daf26a 100644 --- a/src/libpakfire/include/pakfire/pakfire.h +++ b/src/libpakfire/include/pakfire/pakfire.h @@ -47,6 +47,8 @@ Pakfire pakfire_unref(Pakfire pakfire); const char* pakfire_get_path(Pakfire pakfire); +int pakfire_clean(Pakfire pakfire); + int pakfire_bind(Pakfire pakfire, const char* src, const char* dst, int flags); int pakfire_copy_in(Pakfire pakfire, const char* src, const char* dst); diff --git a/src/libpakfire/libpakfire.sym b/src/libpakfire/libpakfire.sym index 02c0e05f5..7375b922c 100644 --- a/src/libpakfire/libpakfire.sym +++ b/src/libpakfire/libpakfire.sym @@ -22,6 +22,7 @@ LIBPAKFIRE_0 { global: # pakfire pakfire_bind; + pakfire_clean; pakfire_copy_in; pakfire_copy_out; pakfire_count_packages; diff --git a/src/libpakfire/pakfire.c b/src/libpakfire/pakfire.c index 4347242d3..c6e4db7a1 100644 --- a/src/libpakfire/pakfire.c +++ b/src/libpakfire/pakfire.c @@ -1053,6 +1053,32 @@ PAKFIRE_EXPORT int pakfire_bind(Pakfire pakfire, const char* src, const char* ds return __mount(pakfire, src, mountpoint, NULL, flags|MS_BIND, NULL); } +PAKFIRE_EXPORT int pakfire_clean(Pakfire pakfire) { + PakfireRepo repo; + Repo* solv_repo; + int i; + int r; + + Pool* pool = pakfire->pool; + + // Cleanup all repositories + FOR_REPOS(i, solv_repo) { + repo = pakfire_repo_create_from_repo(pakfire, solv_repo); + if (!repo) + return 1; + + // Perform cleanup + r = pakfire_repo_clean(repo); + pakfire_repo_unref(repo); + + // Raise any errors + if (r) + return r; + } + + return 0; +} + static int pakfire_copy(Pakfire pakfire, const char* src, const char* dst) { char buffer[512 * 1024]; struct archive* reader = NULL; diff --git a/src/pakfire/base.py b/src/pakfire/base.py index 9bf7fd0fa..07cd0f77c 100644 --- a/src/pakfire/base.py +++ b/src/pakfire/base.py @@ -45,11 +45,6 @@ class Pakfire(_pakfire.Pakfire): def __exit__(self, type, value, traceback): pass - def clean(self): - # Clean up repository caches - for repo in self.repos: - repo.clean() - class PakfireContext(object): """