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)
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,
};
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;
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
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):