From: Michael Tremer Date: Thu, 24 Jun 2021 19:55:46 +0000 (+0000) Subject: cli: Add option to keep dependencies on uninstall X-Git-Tag: 0.9.28~1185 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=d798b95606763eb8c64c8e9506b52ad8cfbfa57d;p=pakfire.git cli: Add option to keep dependencies on uninstall Signed-off-by: Michael Tremer --- diff --git a/src/_pakfire/pakfire.c b/src/_pakfire/pakfire.c index 5c73e92e2..3868bc53b 100644 --- a/src/_pakfire/pakfire.c +++ b/src/_pakfire/pakfire.c @@ -307,15 +307,20 @@ static PyObject* Pakfire_install(PakfireObject* self, PyObject* args, PyObject* static PyObject* Pakfire_erase(PakfireObject* self, PyObject* args, PyObject* kwargs) { char* kwlist[] = { "packages", + "keep_dependencies", NULL }; char** packages = NULL; + int keep_dependencies = 0; int flags = 0; - if (!PyArg_ParseTupleAndKeywords(args, kwargs, "O&", kwlist, - convert_packages, &packages)) + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "O&|$p", kwlist, + convert_packages, &packages, &keep_dependencies)) return NULL; + if (keep_dependencies) + flags |= PAKFIRE_REQUEST_KEEP_DEPS; + // Run pakfire_erase int r = pakfire_erase(self->pakfire, (const char**)packages, NULL, flags, NULL); if (r) diff --git a/src/libpakfire/include/pakfire/request.h b/src/libpakfire/include/pakfire/request.h index 6f01a2768..6efd3ab3f 100644 --- a/src/libpakfire/include/pakfire/request.h +++ b/src/libpakfire/include/pakfire/request.h @@ -27,7 +27,7 @@ struct pakfire_request; enum _pakfire_request_op_flags { PAKFIRE_CHECK_INSTALLED = 1 << 0, - PAKFIRE_CLEAN_DEPS = 1 << 1, + PAKFIRE_REQUEST_KEEP_DEPS = 1 << 1, PAKFIRE_REQUEST_KEEP_ORPHANED = 1 << 2, }; diff --git a/src/libpakfire/request.c b/src/libpakfire/request.c index c309509b1..2edf06c87 100644 --- a/src/libpakfire/request.c +++ b/src/libpakfire/request.c @@ -462,7 +462,8 @@ PAKFIRE_EXPORT int pakfire_request_install_package( static int erase_flags(int flags) { int additional = 0; - if (flags & PAKFIRE_CLEAN_DEPS) + // Keep dependencies + if (!(flags & PAKFIRE_REQUEST_KEEP_DEPS)) additional |= SOLVER_CLEANDEPS; return additional; diff --git a/src/pakfire/cli.py b/src/pakfire/cli.py index d3fac488c..8d196bab5 100644 --- a/src/pakfire/cli.py +++ b/src/pakfire/cli.py @@ -105,6 +105,8 @@ class Cli(object): help=_("Remove one or more packages from the system")) remove.add_argument("package", nargs="+", help=_("Give name of at least one package to remove")) + remove.add_argument("--keep-dependencies", action="store_true", + help=_("Keep dependencies installed")) remove.set_defaults(func=self.handle_remove) # repolist @@ -274,7 +276,7 @@ class Cli(object): def handle_remove(self, ns): p = self.pakfire(ns) - p.erase(ns.package) + p.erase(ns.package, keep_dependencies=ns.keep_dependencies) def handle_provides(self, ns, long=False): for pkg in self.pakfire(ns).whatprovides(ns.pattern):