From: Michael Tremer Date: Thu, 24 Nov 2022 11:05:04 +0000 (+0000) Subject: build: Allow creating shells without a snapshot X-Git-Tag: 0.9.28~91 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=51840d97ef886df4bf80ddb56f7e174593eea196;p=pakfire.git build: Allow creating shells without a snapshot Signed-off-by: Michael Tremer --- diff --git a/src/_pakfire/pakfire.c b/src/_pakfire/pakfire.c index edd924757..3843d9406 100644 --- a/src/_pakfire/pakfire.c +++ b/src/_pakfire/pakfire.c @@ -1169,15 +1169,23 @@ static PyObject* Pakfire_build(PakfireObject* self, PyObject* args, PyObject* kw static PyObject* Pakfire_shell(PakfireObject* self, PyObject* args, PyObject* kwargs) { char* kwlist[] = { "install", + "disable_snapshot", NULL, }; char** packages = NULL; + int disable_snapshot = 0; // Parse everything - if (!PyArg_ParseTupleAndKeywords(args, kwargs, "|O&", kwlist, convert_packages, &packages)) + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "|O&p", kwlist, + convert_packages, &packages, &disable_snapshot)) return NULL; - int r = pakfire_shell(self->pakfire, (const char**)packages); + int flags = 0; + + if (disable_snapshot) + flags |= PAKFIRE_BUILD_DISABLE_SNAPSHOT; + + int r = pakfire_shell(self->pakfire, (const char**)packages, flags); return execute_return_value(r); } diff --git a/src/libpakfire/build.c b/src/libpakfire/build.c index 9ff3ea850..8e2b61f0b 100644 --- a/src/libpakfire/build.c +++ b/src/libpakfire/build.c @@ -1655,12 +1655,15 @@ ERROR: This is a convenience function that sets up a build environment and then drops the user into an interactive shell. */ -PAKFIRE_EXPORT int pakfire_shell(struct pakfire* pakfire, const char** packages) { +PAKFIRE_EXPORT int pakfire_shell(struct pakfire* pakfire, const char** packages, int flags) { struct pakfire_build* build = NULL; int r; + // Shells are always interactive + flags |= PAKFIRE_BUILD_INTERACTIVE; + // Create a new build environment - r = pakfire_build_create(&build, pakfire, NULL, PAKFIRE_BUILD_INTERACTIVE); + r = pakfire_build_create(&build, pakfire, NULL, flags); if (r) { ERROR(pakfire, "Could not create build: %m\n"); goto ERROR; diff --git a/src/libpakfire/include/pakfire/build.h b/src/libpakfire/include/pakfire/build.h index 2eda64eed..cef7cfcdd 100644 --- a/src/libpakfire/include/pakfire/build.h +++ b/src/libpakfire/include/pakfire/build.h @@ -46,6 +46,6 @@ int pakfire_build(struct pakfire* pakfire, const char* path, const char* target, const char* id, int flags); int pakfire_build_clean(struct pakfire* pakfire, int flags); -int pakfire_shell(struct pakfire* pakfire, const char** packages); +int pakfire_shell(struct pakfire* pakfire, const char** packages, int flags); #endif /* PAKFIRE_BUILD_H */