]> git.ipfire.org Git - pakfire.git/commitdiff
archive writer: Use gzip compression for OCI images
authorMichael Tremer <michael.tremer@ipfire.org>
Sat, 8 Feb 2025 15:54:52 +0000 (15:54 +0000)
committerMichael Tremer <michael.tremer@ipfire.org>
Sat, 8 Feb 2025 15:54:52 +0000 (15:54 +0000)
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
src/pakfire/archive_writer.c

index a8635a80cca93b71a48d2d4b12697be43aa0e40d..4b5d4f51689e205571488736761c37413c536dc5 100644 (file)
@@ -59,6 +59,7 @@ struct pakfire_archive_writer {
        // Compression
        enum pakfire_archive_writer_compression {
                PAKFIRE_COMPRESSION_NONE = 0,
+               PAKFIRE_COMPRESSION_GZIP,
                PAKFIRE_COMPRESSION_ZSTD,
        } compression;
        unsigned int compression_level;
@@ -114,11 +115,11 @@ static int pakfire_archive_writer_setup_format(
                        // Use the GNU tar format
                        self->container = PAKFIRE_CONTAINER_GNU;
 
-                       // We use Zstandard compression
-                       self->compression = PAKFIRE_COMPRESSION_ZSTD;
+                       // We use gzip compression
+                       self->compression = PAKFIRE_COMPRESSION_GZIP;
 
                        // Use some good compression
-                       self->compression_level = 20;
+                       self->compression_level = 9;
                        break;
 
                // Fail on invalid inputs
@@ -177,6 +178,16 @@ static int pakfire_archive_writer_setup_archive(struct pakfire_archive_writer* s
                case PAKFIRE_COMPRESSION_NONE:
                        break;
 
+               // gzip
+               case PAKFIRE_COMPRESSION_GZIP:
+                       r = archive_write_add_filter_gzip(self->archive);
+                       if (r) {
+                               ERROR(self->ctx, "Could not enable gzip compression: %s\n",
+                                       archive_error_string(self->archive));
+                               return -ENOTSUP;
+                       }
+                       break;
+
                // Zstandard
                case PAKFIRE_COMPRESSION_ZSTD:
                        r = archive_write_add_filter_zstd(self->archive);