Skip to content

fix(rpm): resolve Fedora 43 install and runtime failures#18

Merged
maxamillion merged 4 commits into
midstreamfrom
fix/rpm-fedora43-fixes
Apr 6, 2026
Merged

fix(rpm): resolve Fedora 43 install and runtime failures#18
maxamillion merged 4 commits into
midstreamfrom
fix/rpm-fedora43-fixes

Conversation

@maxamillion

Copy link
Copy Markdown

Summary

Fixes three issues discovered during comprehensive RPM testing on a fresh Fedora 43 (x86_64) instance with Podman 5.8.1, testing both rootful and rootless container runtimes.

Changes

Fix 1: Default image tag dev does not exist (Critical)

The RPM binary compiled by COPR defaults OPENSHELL_IMAGE_TAG to dev at build time, but the LobsterTrap GHCR registry only publishes midstream tags. This causes openshell gateway start to fail with a 404 on image pull.

  • Added export OPENSHELL_IMAGE_TAG=midstream to the spec's %build section

Fix 2: Legacy iptables modules not loaded on Fedora 43 (High)

k3s bundles its own iptables-legacy binary for flannel CNI networking. Fedora 43 only loads nf_tables by default and does not auto-load the legacy ip_tables, iptable_nat, iptable_filter, and iptable_mangle kernel modules. Without these, flannel fails to write subnet.env and no pods can be scheduled.

  • Ship /etc/modules-load.d/openshell.conf in the RPM to load legacy modules at boot
  • Also added nftables kube-proxy mode detection to the cluster entrypoint as a forward-looking improvement (kube-proxy nftables mode is GA in k3s v1.35/Kubernetes 1.35)

Fix 3: python3-openshell uninstallable on Fedora 43 (Medium)

Fedora 43 ships python3-grpcio 1.48.4 (need >= 1.60) and python3-protobuf 3.19.6 (need >= 4.25). The version gap is too large to work around.

  • Changed Requires to Recommends so the package can be installed; users needing the SDK can install grpcio/protobuf via pip/uv

Testing

Full test matrix on Fedora 43 (x86_64), Podman 5.8.1:

Test Result
RPM install (openshell) PASS
CLI: version, help, completions, doctor, status PASS (all subcommands)
Rootful podman: gateway start/stop/destroy PASS
Rootful podman: sandbox create/list/get/logs/delete PASS
Rootless podman: gateway start/stop/destroy PASS
Rootless podman: sandbox create/list/get/logs/delete PASS
  • mise run pre-commit passes
  • Unit tests added/updated (no Rust code changes; one pre-existing test failure on midstream)
  • E2E tests added/updated

Checklist

  • Follows Conventional Commits
  • Architecture docs updated (if applicable)

Three issues discovered during comprehensive RPM testing on Fedora 43:

1. Set OPENSHELL_IMAGE_TAG=midstream at RPM build time so the CLI
   references container images that exist in the LobsterTrap GHCR
   registry (the default 'dev' tag does not exist).

2. Ship /etc/modules-load.d/openshell.conf to load legacy iptables
   kernel modules required by k3s flannel CNI. Modern Fedora loads
   only nf_tables by default, but k3s bundles its own iptables-legacy
   binary for flannel networking. Also add nftables kube-proxy mode
   detection to the cluster entrypoint as a forward-looking
   improvement for when k3s gains native nftables flannel support.

3. Change python3-openshell dependencies from Requires to Recommends
   because Fedora 43 ships grpcio 1.48 and protobuf 3.19, which are
   too old for the SDK (needs >=1.60 and >=4.25 respectively).
@coderabbitai

coderabbitai Bot commented Apr 6, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 1baa4b79-8f40-4305-a2dd-50ca99b91cb4

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch fix/rpm-fedora43-fixes

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

The midstream-container-build workflow was not passing OPENSHELL_CARGO_VERSION
to the Docker build, causing gateway and sandbox binaries inside the container
images to report version 0.0.0. Add a compute-versions job that derives the
cargo version from git tags via release.py, matching the upstream workflow
pattern.
- Add COPR/dnf install method to quickstart guide alongside binary and uv
- Add Fedora 43+ and RHEL/CentOS Stream 10+ to the support matrix
- Add RPM install option to README install section
The %{_modulesloaddir} macro used in %install and %files is provided by
systemd-rpm-macros. Without this BuildRequires, COPR build roots do not
have the macro defined, causing RPM to expand it literally and fail with
'File must begin with "/"'.
@maxamillion maxamillion merged commit 5085967 into midstream Apr 6, 2026
16 checks passed
maxamillion added a commit that referenced this pull request Apr 6, 2026
The nftables kube-proxy mode detection added in PR #18 breaks NodePort
routing on hosts where nft is available (including Fedora 43). When
kube-proxy runs in nftables mode, the gateway service NodePort (30051)
becomes unreachable, causing the health check to time out and the
gateway start to fail.

The modules-load.d config shipped by the RPM already ensures the legacy
iptables kernel modules are loaded, which is the correct fix for the
original problem. Remove the nftables detection until k3s nftables mode
is validated with the full openshell gateway service configuration.
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