pungi/1790.patch
Adam Williamson 560916cd83 Backport patches for ostree_container, ostree compose speedup
PR #1789 improved various aspects of the ostree_container phase
regarding subvariant handling and filenames, this is mainly to
help us with how we want to handle bootc images (currently in
the IoT compose, but the generic base bootc image may move to
the Fedora compose).

PR #1790 rejigs the compose phase handling so the main image
build phase is not unnecessarily blocked on the ostree_install
phase. This should cut 60-90 minutes out of the main Fedora
compose time.

(cherry picked from commit 13884fef2c199b613442af03c24b737a7e3cb057)
2025-09-29 18:05:38 +03:00

83 lines
3.0 KiB
Diff

From b83ac496b5a20bd0493328999fc619711c6a512a Mon Sep 17 00:00:00 2001
From: Adam Williamson <awilliam@redhat.com>
Date: Oct 11 2024 18:18:48 +0000
Subject: Don't block main image build phase on ostree_install phase
I did a time map of a Fedora compose today, and noticed that we
spend about an hour waiting for the ostree_install phase to
complete before we start up the compose_images_phase which does
all the other image builds.
This is unnecessary. Nothing else depends on ostree_install; it
should be fine to start up the extra_phase (which contains
compose_images_phase) while the ostree stuff is still running.
This implements that by splitting the ostree phases out of the
essentials_phase which contains the real precursors to the
extra_phase. We start the essentials and ostree phases together,
but only wait for the essentials phase to complete before
kicking off extra_phase, so it can start while the ostree
phase is still running.
One tweak we have to make to accommodate this is to move
image_checksum_phase out of extra_phase, to avoid it potentially
running before all ostree installer images are built. The
checksum phase is quite fast - it takes about five minutes -
and any time benefit of running it in parallel with the osbs and
repoclosure phases seems like it must be smaller than the time
loss of waiting for ostree_install before kicking off extra.
Signed-off-by: Adam Williamson <awilliam@redhat.com>
---
diff --git a/pungi/scripts/pungi_koji.py b/pungi/scripts/pungi_koji.py
index c643d53..b2382b0 100644
--- a/pungi/scripts/pungi_koji.py
+++ b/pungi/scripts/pungi_koji.py
@@ -476,11 +476,15 @@ def run_compose(
buildinstall_phase,
(gather_phase, createrepo_phase),
extrafiles_phase,
+ )
+ ostree_schema = (
(ostree_phase, ostree_installer_phase),
ostree_container_phase,
)
essentials_phase = pungi.phases.WeaverPhase(compose, essentials_schema)
+ ostree_phase = pungi.phases.WeaverPhase(compose, ostree_schema)
essentials_phase.start()
+ ostree_phase.start()
essentials_phase.stop()
# write treeinfo before ISOs are created
@@ -507,12 +511,9 @@ def run_compose(
osbuild_phase,
kiwibuild_phase,
)
- post_image_phase = pungi.phases.WeaverPhase(
- compose, (image_checksum_phase, image_container_phase)
- )
compose_images_phase = pungi.phases.WeaverPhase(compose, compose_images_schema)
extra_phase_schema = (
- (compose_images_phase, post_image_phase),
+ (compose_images_phase, image_container_phase),
osbs_phase,
repoclosure_phase,
)
@@ -520,6 +521,12 @@ def run_compose(
extra_phase.start()
extra_phase.stop()
+ # wait for ostree phase here too - it can happily run in parallel
+ # with all of the other stuff
+ ostree_phase.stop()
+ # now we do checksums as all images are done
+ image_checksum_phase.start()
+ image_checksum_phase.stop()
pungi.metadata.write_compose_info(compose)
if not (