Skip to content

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

Closed
maxamillion wants to merge 1 commit into
midstreamfrom
fix/rpm-fedora43-fixes
Closed

maxamillion wants to merge 1 commit into
midstreamfrom
fix/rpm-fedora43-fixes

Conversation

@maxamillion

Copy link
Copy Markdown
Owner

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).
@maxamillion maxamillion self-assigned this Apr 6, 2026
@maxamillion maxamillion closed this Apr 6, 2026
itdove pushed a commit to itdove/OpenShell that referenced this pull request Apr 6, 2026
maxamillion pushed a commit that referenced this pull request May 14, 2026
* docs(rfc): Add gateway configuration RFC

* Update RFC to handle config directories

docs(rfc): address conf.d pattern and remove stale scratch branch reference

Closes out open question #2 with a conf.d-style directory loader as a
planned follow-on to the v1 single-file approach. Documents the three
design decisions needed before implementation. Removes reference to
scratch/server-config-file branch which does not exist.

* docs(rfc): sync gateway config RFC with current repo state

Resync RFC 0002 with the gateway code as it stands today: drop
already-implemented framing, restructure the schema so each compute
driver owns its [openshell.drivers.<name>] table, add the missing
OIDC, metrics-listener, docker, and podman sections, and exclude
database_url and ssh_handshake_secret from the file schema (env/CLI
only).

* docs(rfc): renumber gateway configuration RFC to 0003

RFC 0002 was claimed by the agent-driven policy management RFC that
landed first. Move the gateway configuration proposal to the next
available number.

* Update rfc/0003-gateway-configuration/README.md

Co-authored-by: Drew Newberry <anewberry@nvidia.com>

---------

Co-authored-by: Drew Newberry <anewberry@nvidia.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