[1/1] test: avoid costly gz compression

Message ID 20251212113314.3796021-1-felix.moessbauer@siemens.com
State Under Review
Headers show
Series [1/1] test: avoid costly gz compression | expand

Commit Message

MOESSBAUER, Felix Dec. 12, 2025, 11:33 a.m. UTC
The gzip compression of the rootfs is not parallel and takes a significant
amount of the test execution. By using zst, things are parallel and much
faster.

While this slightly reduces the test coverage of gz, it improves the coverage
of the nowadays widely used zstd compression.

Signed-off-by: Felix Moessbauer <felix.moessbauer@siemens.com>
---
Note, that we also spend significant amount of time in bitbake parsing
(around ~5 minutes on some tests). I'll look into this as well.

On the repro test, I once saw the following error:
 The following packages have unmet dependencies:
 libc6-dev:i386 : Depends: linux-libc-dev:i386

I don't know exactly where this came from, but I'm also wondering why
we build the sbuild-chroot-target-db2m at all in the repro test.

Felix

 meta-test/recipes-core/images/isar-image-ci.bb |  2 +-
 testsuite/repro-build-test.py                  | 10 +++++-----
 2 files changed, 6 insertions(+), 6 deletions(-)

Patch

diff --git a/meta-test/recipes-core/images/isar-image-ci.bb b/meta-test/recipes-core/images/isar-image-ci.bb
index 9133da74..7f2b404d 100644
--- a/meta-test/recipes-core/images/isar-image-ci.bb
+++ b/meta-test/recipes-core/images/isar-image-ci.bb
@@ -19,7 +19,7 @@  WKS_FILE:qemuamd64:debian-bookworm ?= "multipart-efi.wks"
 IMAGE_INSTALL:append:qemuamd64:debian-bookworm = " prebuilt-docker-img prebuilt-podman-img"
 
 # qemuamd64-bullseye
-IMAGE_FSTYPES:append:qemuamd64:debian-bullseye ?= " cpio.gz tar.gz"
+IMAGE_FSTYPES:append:qemuamd64:debian-bullseye ?= " cpio.zst tar.zst"
 WKS_FILE:qemuamd64:debian-bullseye ?= "sdimage-efi-btrfs"
 IMAGE_INSTALL:append:qemuamd64:debian-bullseye = " expand-on-first-boot"
 IMAGER_INSTALL:remove:qemuamd64:debian-bullseye ?= "${GRUB_BOOTLOADER_INSTALL}"
diff --git a/testsuite/repro-build-test.py b/testsuite/repro-build-test.py
index d24e8f84..c06269f5 100755
--- a/testsuite/repro-build-test.py
+++ b/testsuite/repro-build-test.py
@@ -21,9 +21,9 @@  class ReproBuild(CIBuilder):
             'source_date_epoch', default=self.git_last_commit_timestamp()
         )
         self.init()
-        self.build_repro_image(target, source_date_epoch, 'image1.tar.gz')
-        self.build_repro_image(target, source_date_epoch, 'image2.tar.gz')
-        self.compare_repro_image('image1.tar.gz', 'image2.tar.gz')
+        self.build_repro_image(target, source_date_epoch, 'image1.tar.zst')
+        self.build_repro_image(target, source_date_epoch, 'image2.tar.zst')
+        self.compare_repro_image('image1.tar.zst', 'image2.tar.zst')
 
     def git_last_commit_timestamp(self):
         return process.run('git log -1 --pretty=%ct').stdout.decode().strip()
@@ -33,10 +33,10 @@  class ReproBuild(CIBuilder):
         machine, image_name = CIUtils.getVars(
             'MACHINE', 'IMAGE_FULLNAME', target=target_name
         )
-        return f"{image_dir}/{machine}/{image_name}.tar.gz"
+        return f"{image_dir}/{machine}/{image_name}.tar.zst"
 
     def build_repro_image(
-        self, target, source_date_epoch=None, image_name='image.tar.gz'
+        self, target, source_date_epoch=None, image_name='image.tar.zst'
     ):
         if not source_date_epoch:
             self.error(