]> git.ipfire.org Git - pakfire.git/commitdiff
dist: Return the name of the generated file
authorMichael Tremer <michael.tremer@ipfire.org>
Thu, 22 Jul 2021 13:21:50 +0000 (13:21 +0000)
committerMichael Tremer <michael.tremer@ipfire.org>
Thu, 22 Jul 2021 13:21:50 +0000 (13:21 +0000)
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
src/_pakfire/pakfire.c
src/libpakfire/build.c
src/libpakfire/dist.c
src/libpakfire/include/pakfire/dist.h
src/libpakfire/include/pakfire/packager.h
src/libpakfire/packager.c

index 33868f5ea3a8153e8ddf44f0b3ae2c8232baa845..61b4291cf48aba797c6d2a7f86a2da16d1e17a57 100644 (file)
@@ -818,17 +818,21 @@ static PyObject* Pakfire_execute(PakfireObject* self, PyObject* args, PyObject*
 static PyObject* Pakfire_dist(PakfireObject* self, PyObject* args) {
        const char* path = NULL;
        const char* target = NULL;
+       char* result = NULL;
 
        if (!PyArg_ParseTuple(args, "s|z", &path, &target))
                return NULL;
 
-       int r = pakfire_dist(self->pakfire, path, target);
+       int r = pakfire_dist(self->pakfire, path, target, &result);
        if (r) {
                PyErr_SetFromErrno(PyExc_OSError);
                return NULL;
        }
 
-       Py_RETURN_NONE;
+       PyObject* ret = PyUnicode_FromString(result);
+       free(result);
+
+       return ret;
 }
 
 static PyObject* Pakfire_bind(PakfireObject* self, PyObject* args) {
index 75426ba1d5897b1c96a32aa67738a31c2e40bbac..28ef1069b47c6876256ea2d6e692a70efd3e1318 100644 (file)
@@ -632,7 +632,7 @@ static int pakfire_build_package(struct pakfire* pakfire, struct pakfire_parser*
                goto ERROR;
 
        // Write the finished package
-       r = pakfire_packager_finish_to_directory(packager, target);
+       r = pakfire_packager_finish_to_directory(packager, target, NULL);
        if (r) {
                ERROR(pakfire, "pakfire_packager_finish() failed: %m\n");
                goto ERROR;
index ca5c4105a4bf9da8395a035ea5fc1c2a4e5f9482..74e6b5ce059c2026a44e0c21cc220286ae8e6cad 100644 (file)
@@ -365,7 +365,8 @@ ERROR:
        return r;
 }
 
-PAKFIRE_EXPORT int pakfire_dist(struct pakfire* pakfire, const char* path, const char* target) {
+PAKFIRE_EXPORT int pakfire_dist(struct pakfire* pakfire, const char* path,
+               const char* target, char** result) {
        struct pakfire_parser* makefile;
        struct pakfire_parser_error* error = NULL;
 
@@ -412,7 +413,7 @@ PAKFIRE_EXPORT int pakfire_dist(struct pakfire* pakfire, const char* path, const
                goto ERROR;
 
        // Write the finished package
-       r = pakfire_packager_finish_to_directory(packager, target);
+       r = pakfire_packager_finish_to_directory(packager, target, result);
        if (r)
                goto ERROR;
 
index 417d308b0f2fe8c3b6778fceb6076433e7589e58..cec64bcff445be1fb9780f5108d96c17b863c21d 100644 (file)
@@ -23,7 +23,8 @@
 
 #include <pakfire/pakfire.h>
 
-int pakfire_dist(struct pakfire* pakfire, const char* path, const char* target);
+int pakfire_dist(struct pakfire* pakfire, const char* path, const char* target,
+       char** result);
 
 #ifdef PAKFIRE_PRIVATE
 
index 611fc190f87d13aa9f796c993e4734101a49c207..473367db18db91f5cda56cb0d42e0ca6a2a52906 100644 (file)
@@ -37,7 +37,7 @@ const char* pakfire_packager_filename(struct pakfire_packager* packager);
 
 int pakfire_packager_finish(struct pakfire_packager* packager, FILE* f);
 int pakfire_packager_finish_to_directory(struct pakfire_packager* packager,
-       const char* target);
+       const char* target, char** result);
 
 int pakfire_packager_add(struct pakfire_packager* packager,
        const char* sourcepath, const char* path);
index 6553549d78fbe067f56ffcd810d10e54c66ca76f..48634cb501ef1000c7e50f6d68ef8ea6125ed029 100644 (file)
@@ -902,7 +902,7 @@ ERROR:
 }
 
 int pakfire_packager_finish_to_directory(struct pakfire_packager* packager,
-               const char* target) {
+               const char* target, char** result) {
        char path[PATH_MAX];
        char tmppath[PATH_MAX];
        int r = 1;
@@ -959,6 +959,15 @@ int pakfire_packager_finish_to_directory(struct pakfire_packager* packager,
 
        INFO(packager->pakfire, "Package written to %s\n", path);
 
+       // Store result path if requested
+       if (result) {
+               *result = strdup(path);
+               if (!*result) {
+                       r = 1;
+                       goto ERROR;
+               }
+       }
+
        // Success
        r = 0;