Repository navigation
feat: split the package into ignity-core and ignity-utils - #39
Merged
Merged
Conversation
ignity-core ships everything but fix-perms and depends on the virtual ignity-utils-impl. ignity-utils ships the execline fix-perms and provides it, like ignity-utils-rs, which can be installed instead. Both replace the single ignity package of 0.1.0. The nfpm configs are now one per package, with ARCH and VERSION given by `poe package:<format>`: the version only lives in pyproject.toml.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What is the change being made?
The single
ignitypackage is split into two packages, for each format (deb, rpm, apk) and arch:ignity-core: everything butfix-perms(boot stages, execline, s6, s6-portable-utils,preboot,gen-accounts,load-envfile,with-env,with-retries). It depends on the virtualignity-utils-impl, pluspasswd/shadow-utils/shadowandgrep.ignity-utils: the execline/usr/bin/fix-perms. It providesignity-utils-impl, depends onignity-core(execlineb shebang) andfindutils, and conflicts withignity-utils-rs.ignitypackage of 0.1.0.Packaging:
nfpm.{amd64,arm64}.yamlare replaced bynfpm.{core,utils}.yaml.poe package:<format>passes themARCHandVERSION, so the version only lives inpyproject.tomlandrelease.pystops rewriting the nfpm configs.ignity-{core,utils}-<version>-linux-<arch>.<format>. The CI and release globs already match them.posttransrerunspostinstall.sh. The%preunof the obsoletedignityruns after the new%postand would remove/bin/execlineb.conflicts, so they are!ignity/!ignity-utils-rsdependencies instead.Why is the change being made?
ignity-utils-rs is a static Rust drop-in replacement for
fix-perms. Its package providesignity-utils-impland conflicts with/replacesignity-utils, expectingignity-coreto depend on that virtual package. With the split, an image can pick either implementation offix-perms.ignity-utilsholds exactly what ignity-utils-rs replaces (fix-permsonly), so swapping them never removes another tool.How has this been tested?
Locally on arm64 (podman), with the six packages built by nfpm:
IGNITY_INSTALL=package DOCKER_BASE_IMAGE=<base> uv run poe testondebian:bookworm-slim,fedora:latestandalpine:3: 71 passed each.uv run poe test(source install): 71 passed.ignity-corealone fails on the missingignity-utils-implwith apt, dnf and apk.ignityis replaced,/bin/execlinebis still linked,fix-permsis present;breaks: ignity-core[!ignity]) untilapk del ignity, then works.Not run yet: amd64 (CI
sanitize), and the swap to ignity-utils-rs, which has no release yet.poe package:*is Linux-only: on macOS, podman resolves the relative.:/tmpmount in its VM, so nfpm was run by hand with$PWD.How has this been documented?
apk del ignityfirst on Alpine)..claude/CLAUDE.mdupdated.Related Issues
None.