Skip to content

fix(system): add openSUSE platform support#397

Open
peplocanto wants to merge 1 commit into
Gentleman-Programming:mainfrom
peplocanto:fix/opensuse-support
Open

fix(system): add openSUSE platform support#397
peplocanto wants to merge 1 commit into
Gentleman-Programming:mainfrom
peplocanto:fix/opensuse-support

Conversation

@peplocanto
Copy link
Copy Markdown

🔗 Linked Issue

Closes #140


🏷️ PR Type

What kind of change does this PR introduce?

  • type:bug — Bug fix (non-breaking change that fixes an issue)
  • type:feature — New feature (non-breaking change that adds functionality)
  • type:docs — Documentation only
  • type:refactor — Code refactoring (no functional changes)
  • type:chore — Build, CI, or tooling changes
  • type:breaking-change — Breaking change (fix or feature that changes existing behavior)

📝 Summary

Adds openSUSE family support so gentle-ai no longer exits with unsupported linux distro on openSUSE Tumbleweed/Leap systems detected through /etc/os-release.


📂 Changes

File / Area What Changed
internal/system Detects openSUSE-family distros and maps them to zypper with supported platform status
internal/installcmd Resolves zypper dependency installs and enables openSUSE paths for OpenCode, GGA, and Kimi uv hints
internal/cli Clarifies optional Go messaging and Engram PATH guidance now that non-brew Engram uses released binaries
e2e/ Adds an openSUSE Tumbleweed Docker E2E target and includes it in the platform matrix
docs/ and PRD.md Documents openSUSE support, zypper commands, and optional Go behavior

🧪 Test Plan

Unit Tests

go test ./...

E2E Tests (Docker required)

sg docker -c './e2e/docker-test.sh'

Additional local verification:

git diff --check
go build -o /tmp/gentle-ai-opensuse ./cmd/gentle-ai
gentle-ai install --dry-run
timeout 5s script -q -c "gentle-ai" /dev/null

Results:

  • Unit tests pass (go test ./...)
  • E2E tests pass (sg docker -c './e2e/docker-test.sh', PASSED: 4 / 4)
  • Manually tested locally on openSUSE Tumbleweed
  • gentle-ai install --dry-run reports os=linux distro=opensuse package-manager=zypper status=supported
  • Installed patched binary starts the TUI under a pseudo-terminal without the unsupported distro error

🤖 Automated Checks

The following checks run automatically on this PR:

Check Status Description
Check Issue Reference PR body must contain Closes/Fixes/Resolves #N
Check Issue Has status:approved Linked issue must have been approved before work began
Check PR Has type:* Label Exactly one type:* label must be applied
Unit Tests go test ./... must pass
E2E Tests cd e2e && ./docker-test.sh must pass

✅ Contributor Checklist

  • PR is linked to an issue with status:approved
  • I have added the appropriate type:* label to this PR
  • Unit tests pass (go test ./...)
  • E2E tests pass (cd e2e && ./docker-test.sh)
  • I have updated documentation if necessary
  • My commits follow Conventional Commits format
  • My commits do not include Co-Authored-By trailers

💬 Notes for Reviewers

The openSUSE E2E target uses opensuse/tumbleweed:latest and validates the same Tier 1 dry-run smoke suite as the existing Linux Docker matrix.

Copy link
Copy Markdown
Contributor

@Alan-TheGentleman Alan-TheGentleman left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The openSUSE support looks potentially valuable, but the process gates are missing.

Please add the required type:* label, confirm the linked approved issue, and refresh CI after rebasing on main so we review current code instead of a stale branch.

@Alan-TheGentleman
Copy link
Copy Markdown
Contributor

Heads-up: this PR is now showing a merge conflict against main. We shipped v1.31.0 (and a number of follow-up fixes) over the past two days — several files this PR touches were also modified upstream.

Could you rebase against current main and resolve the conflicts?

git fetch upstream main
git rebase upstream/main
# resolve any conflicts
git push --force-with-lease

Once it's green again I can review for merge. Sorry for the drift — it's the cost of the cleanup velocity. Thanks for sticking with it.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

type:bug Bug fix

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Support for OpenSuse

2 participants