Skip to content

fix(recipes): restore the X server on Alpine xfce - #66

Merged
NovusEdge merged 1 commit into
mainfrom
fix/xfce-alpine-xorg
Sep 5, 2026
Merged

NovusEdge merged 1 commit into
mainfrom
fix/xfce-alpine-xorg

Conversation

@NovusEdge

@NovusEdge NovusEdge commented Sep 5, 2026 •

Copy link
Copy Markdown
Owner

What changed

The Alpine path of the xfce recipe calls setup-xorg-base again before installing the xfce packages.

Why

#48 merged install-alpine.sh into install.sh and dropped that call. Alpine's xfce4 metapackage does not depend on xorg-server or xinit, so an installed VM loops on startx: not found on tty1 and just e2e fails its libinput assert after 90s. An Aug 10 provision log from the old script shows the 66-package xorg batch that a run on main today lacks. Neither #48 nor #62 ran the live gate.

Tests run

  • sh -n, go build ./..., recipe and guest tests, golangci-lint run ./...
  • Live boot: pending. The same commit is being cherry-picked onto feat/recipe-contract-v3 for the feat(recipes): add recipe contract v3 #65 Alpine leg; that output will be pasted here.

Summary by CodeRabbit

  • Bug Fixes
    • Alpine-based XFCE installations now include the required X server, xinit, and input support.
    • Starting the XFCE desktop with startx now works correctly after installation.

PR #48 merged install-alpine.sh into install.sh and dropped its setup-xorg-base call. Alpine's xfce4 metapackage does not depend on xorg-server or xinit, so tty1 looped on 'startx: not found' and the e2e libinput assert failed.

Signed-off-by: NovusEdge <novusedge0@gmail.com>
@NovusEdge NovusEdge added bug Something isn't working needs-live-boot Cannot be verified by agents; needs a real Alpine boot recipes bundled or index recipes labels Sep 5, 2026
@NovusEdge NovusEdge self-assigned this Sep 5, 2026
@coderabbitai

coderabbitai Bot commented Sep 5, 2026 •

Copy link
Copy Markdown

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Team

Run ID: 568b379d-db6d-4169-9a60-7bb711c67d2e

📥 Commits

Reviewing files that changed from the base of the PR and between ad47b8c and 5605c6a.

📒 Files selected for processing (1)
  • internal/recipes/bundled/xfce/install.sh

Included review availability: Your plan provides up to 1 included review per hour; 0 remain after this review.


Walkthrough

The Alpine XFCE recipe now runs setup-xorg-base before installing XFCE packages. This adds xorg-server, xinit, and xf86-input-libinput for subsequent startx execution.

Changes

Alpine XFCE setup

Layer / File(s) Summary
Install Xorg prerequisites
internal/recipes/bundled/xfce/install.sh
The apk branch runs setup-xorg-base before installing XFCE packages.

Estimated code review effort: 1 (Trivial) | ~2 minutes

Merge Risk: ⚪ Minimal · up to 5605c

The Alpine XFCE setup now installs Xorg prerequisites before XFCE, restoring the dependencies needed for startx. No actionable merge risk remains.

Poem

A rabbit checks the Alpine nest
Xorg arrives to make it best
XFCE packages follow in line
startx now finds its server fine
Soft paws approve the setup sign

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly and concisely describes restoring the X server for Alpine XFCE, which is the main change.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff. Analyzed 0 functions across 1…
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches 💡 1
🛠️ Fix failing CI checks 💡
  • Create stacked PR
  • Commit on current branch
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch fix/xfce-alpine-xorg

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 boot on Alpine 3.24.1 disk mode, with this commit cherry-picked onto feat/recipe-contract-v3 as 305a1dd. The xorg batch is back and the libinput assert passes:

(37/66) Installing xinit (1.4.4-r0)
(57/66) Installing xorg-server-common (21.1.24-r0)
(66/66) Installing xorg-server (21.1.24-r0)
=== assert: disk installer completed and wrote an ext4 root ===
=== assert: recipe applied (xfce present) ===
=== assert: udev is the device manager (not mdev) ===
=== assert: Xorg drives input through libinput (mouse clickable) ===
PASS: e2e-1231512 reached a clickable xfce desktop with no manual steps
=== assert: docker recipe contract ===
=== assert: non-secret param reruns ===
e2e-1231512 stopped
e2e-1231512 deleted

Before the fix the same run stopped at FAIL: no libinput device in Xorg.0.log after 90s with tty1 looping on startx: not found.

@NovusEdge
NovusEdge merged commit eb2f7cd into main Sep 5, 2026
5 of 6 checks passed
@NovusEdge
NovusEdge deleted the fix/xfce-alpine-xorg branch September 5, 2026 09:27
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bug Something isn't working needs-live-boot Cannot be verified by agents; needs a real Alpine boot recipes bundled or index recipes

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant