Skip to content

feat(recipes): extend the developer recipes to the new Linux guests - #99

Merged
NovusEdge merged 1 commit into
mainfrom
feat/recipes-new-guests
Sep 6, 2026
Merged

NovusEdge merged 1 commit into
mainfrom
feat/recipes-new-guests

Conversation

@NovusEdge

Copy link
Copy Markdown
Owner

Closes #85. Depends on #97, which merged: a guest with recipes produces more
than one cloud-config document, and AlmaLinux and Rocky could not read the
archive stoat used to emit.

devtools and python-dev now declare almalinux, rocky and opensuse.

The two dnf guests reuse the Fedora script. It is renamed install-rpm.sh to
say what it covers, matching what python-dev already called its own.
openSUSE gets one new script per recipe, because zypper names its interpreter
package differently.

Package names, checked on the guests

I booted AlmaLinux 9.8 and Leap 16.0 and asked their package managers rather
than assuming.

dnf list vim reports no match on AlmaLinux, which suggested the RPM list
needed changing. dnf install vim resolves anyway: vim-enhanced provides the
name, and the transaction installs four packages. So the existing list works
unchanged on all three dnf guests, and the script says so in a comment.

Leap 16 names the interpreter for its version. python313 and python313-pip
install python3-base, and in the guest:

python3: /usr/bin/python3
pip3: /usr/bin/pip3
pip: /usr/bin/pip
Python 3.13.14
pip 25.0.1 from /usr/lib/python3.13/site-packages/pip (python 3.13)
venv ok

Both binaries the recipe looks for exist, and python3 -m venv works, so the
shared venv logic needs no change.

Tests

TestBundledCommonDeveloperRecipeContracts now expects all eight guests and
checks that every declared script resolves.
TestBundledPythonDevFallsBackWhenEscalationRefuses covers the three new
mappings, so the escalation probe from #92 is exercised on them too.

Live evidence

Filled in when the matrix finishes.

Not in this change

The five python-dev installers differ by one package line and share about a
hundred lines of venv and escalation logic. Collapsing them into one script
that switches on the guest is worth doing, and it is a bigger change than this
one.

devtools and python-dev now declare almalinux, rocky and opensuse. The two
dnf guests reuse the Fedora script, which is renamed install-rpm.sh to match
what it covers. openSUSE gets its own script per recipe.

Package names were checked on the guests themselves. AlmaLinux 9.8 resolves
vim through vim-enhanced, so the rpm list needs no change. Leap 16 names the
interpreter python313 and its pip python313-pip; both give /usr/bin/python3,
/usr/bin/pip3 and a working venv.

Signed-off-by: NovusEdge <novusedge0@gmail.com>
@NovusEdge NovusEdge added enhancement New feature recipes bundled or index recipes guest guest OS support labels Sep 6, 2026
@NovusEdge NovusEdge self-assigned this Sep 6, 2026
@coderabbitai

coderabbitai Bot commented Sep 6, 2026

Copy link
Copy Markdown

Warning

Review limit reached

Next included review available in 17 minutes.

Check out review usage here.

View limit details

Limit details: You’ve used the included review currently available.

You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.

Learn how review limits work.

Review configuration:

⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Team

Run ID: 1cff98b8-8f5c-4687-8366-0537f09efe8c

📥 Commits

Reviewing files that changed from the base of the PR and between 60460a8 and 27d214d.

📒 Files selected for processing (7)
  • docs/recipes/overview.md
  • internal/recipes/bundled/devtools/install-rpm.sh
  • internal/recipes/bundled/devtools/install-zypper.sh
  • internal/recipes/bundled/devtools/recipe.toml
  • internal/recipes/bundled/python-dev/install-zypper.sh
  • internal/recipes/bundled/python-dev/recipe.toml
  • internal/recipes/samples_test.go

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@NovusEdge

Copy link
Copy Markdown
Owner Author

Live evidence

Candidate 27d214d, retained under common-recipes/live/n3, one attempt per row.

Guest start verify stop
AlmaLinux 9 passed passed passed
Rocky 9 passed passed passed
openSUSE Leap 16.0 passed passed passed

Each row creates the VM with --recipes devtools,python-dev, boots it, waits for SSH, then waits for both recipes to report healthy. Verify checks that the declared outputs resolve to real executables in the guest, runs the recipe fixture scripts, confirms a second apply plans both recipes as skip, and checks a sentinel written into the virtual environment survives the reapply and the health probe.

This is the first time these three guests have taken a cloud recipe at all. Before #97 the seed was a cloud-config-archive, and their cloud-init failed its init-local stage on it.

common_gate.py learned where the three images live; it previously knew only the original five.

@NovusEdge
NovusEdge merged commit ae801cd into main Sep 6, 2026
8 checks passed
@NovusEdge
NovusEdge deleted the feat/recipes-new-guests branch September 6, 2026 15:06
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature guest guest OS support recipes bundled or index recipes

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Extend the common developer recipes to the new Linux guests

1 participant