Skip to content

extra/sysext: cut install tree - #2773

Open
supakeen wants to merge 1 commit into
osbuild:mainfrom
supakeen:sysext-goes-brrr
Open

supakeen wants to merge 1 commit into
osbuild:mainfrom
supakeen:sysext-goes-brrr

Conversation

@supakeen

Copy link
Copy Markdown
Member

The sysext extras by default already layered on top of the reference pipeline (usually the OS pipeline) for their RPM transaction. This means that the sysext installs all RPMs from the reference pipeline plus any additional ones. This was on purpose since it's easy to reason about and it shows that the naive implementation works.

When standalone is turned on we don't do that and instead resolve the RPM transaction for the sysext separately.

Change the default behavior for non-standalone sysexts to copy in the reference tree (so the RPM database and interpreters necessary for scriptlets are present) and then cut down the to-be-installed RPMs by taking the subset of those that weren't already installed in the reference pipeline.

This really speeds up builds and due to the transaction nature of the depsolver we can guarantee that we can build on top of the reference pipeline in this way.

Some numbers, for an image type that layers three sysexts (podman, weechat, and tmux):

  • Before: 7m08s total.
  • After: 4m13s total.

The latter is basically the same time as the build without any system extensions.

The sysext extras by default already layered on top of the reference
pipeline (usually the OS pipeline) for their RPM transaction. This means
that the sysext installs *all* RPMs from the reference pipeline plus any
additional ones. This was on purpose since it's easy to reason about and
it shows that the naive implementation works.

When `standalone` is turned on we don't do that and instead resolve the
RPM transaction for the sysext separately.

Change the default behavior for non-standalone sysexts to copy in the
reference tree (so the RPM database and interpreters necessary for
scriptlets are present) and then cut down the to-be-installed RPMs by
taking the subset of those that weren't already installed in the
reference pipeline.

This really speeds up builds and due to the transaction nature of the
depsolver we can guarantee that we can build on top of the reference
pipeline in this way.

Some numbers, for an image type that layers three sysexts (`podman`,
`weechat`, and `tmux`):

- Before: 7m08s total.
- After:  4m13s total.

The latter is basically the same time as the build without any system
extensions.

Signed-off-by: Simon de Vlieger <cmdr@supakeen.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant