]> git.ipfire.org Git - pakfire.git/commitdiff
archive: Extract source packages into versioned paths
authorMichael Tremer <michael.tremer@ipfire.org>
Wed, 17 Aug 2022 20:26:23 +0000 (20:26 +0000)
committerMichael Tremer <michael.tremer@ipfire.org>
Wed, 17 Aug 2022 20:26:23 +0000 (20:26 +0000)
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
src/libpakfire/archive.c
src/libpakfire/build.c

index fca06e12c68c803ef7ce5c0e9d908a7f3938384b..2ab4423377c25d979fa9957181830ffdbc40d006 100644 (file)
@@ -859,9 +859,9 @@ ERROR:
 
 PAKFIRE_EXPORT int pakfire_archive_extract(struct pakfire_archive* archive) {
        struct pakfire_package* pkg = NULL;
-       const char* prefix = NULL;
        struct archive* a = NULL;
        struct archive* payload = NULL;
+       char prefix[PATH_MAX] = "";
        size_t size = 0;
        int r = 1;
 
@@ -877,7 +877,7 @@ PAKFIRE_EXPORT int pakfire_archive_extract(struct pakfire_archive* archive) {
 
        // Set prefix for source packages
        if (pakfire_package_is_source(pkg))
-               prefix = "/usr/src/packages";
+               pakfire_string_format(prefix, "/usr/src/packages/%s", nevra);
 
        // Open payload
        payload = pakfire_archive_open_payload(archive, &a, &size);
index 4e4f1c4ad8f05925f50282ba75b983c5f2362c0b..f4beaee63aba67eac1840075962a937c129b0292 100644 (file)
@@ -1254,7 +1254,7 @@ PAKFIRE_EXPORT int pakfire_build_exec(struct pakfire_build* build, const char* p
        }
 
        // Compose path to makefile
-       r = pakfire_string_format(makefile, "/usr/src/packages/%s/%s.nm", name, name);
+       r = pakfire_string_format(makefile, "/usr/src/packages/%s/%s.nm", nevra, name);
        if (r < 0) {
                ERROR(build->pakfire, "Could not compose makefile path: %m\n");
                goto ERROR;