mirror of
https://github.com/theupriser/steamify-cachyos-live-iso.git
synced 2026-10-02 15:10:26 +02:00
docs: update TODO with today's packagechooserq work and lessons learned
This commit is contained in:
1 parent
219aef176a
commit
17ecdc1a26
1 file changed
+82
-64
@@ -2,73 +2,91 @@
|
|||||||
|
|
||||||
## Open
|
## Open
|
||||||
|
|
||||||
1. **Steamify installer page** (2026-09-28, in progress).
|
1. **Steamify installer page** (2026-09-28, working end to end).
|
||||||
Tested live in the ISO VM (vmisoboot.sh, QMP clicks/screenshots +
|
`packagechooserq` (custom QML) doesn't exist in CachyOS's own
|
||||||
`pkexec-wrapper calamares -D6` foregrounded, its own debug log):
|
`cachyos-calamares-next` build (`-DSKIP_MODULES=...packagechooserq...`),
|
||||||
- **`packagechooserq` (custom QML) does not exist on this Calamares
|
so it's built out of tree against the installed Calamares headers (see
|
||||||
build**: only `packagechooser` is installed
|
the build VM notes in the steam-machine-iso skill) and its `.so` +
|
||||||
(`ls /usr/lib/calamares/modules`). `SteamifyPage.qml` can't be loaded
|
`module.desc` are baked straight into `archiso/airootfs/usr/lib/calamares/
|
||||||
by any real module here; confirm a module is actually installed
|
modules/packagechooserq/` (no conflict: the package never ships that
|
||||||
before writing QML/config for it again.
|
path). `netinstall` (checkbox tree) stays as a manually-swappable
|
||||||
- **`packagechooser`, `mode: optionalmultiple`, genuinely multi-selects**
|
fallback (`steamify-cachyos-dev/share/sn.sh` + `nisteamify.conf`) for
|
||||||
(confirmed from its actual global-storage write, not its static label
|
when the module can't load, but isn't wired into `calamares-online.sh`
|
||||||
text which misleadingly says "Choose a product..." either way):
|
automatically yet — see the version-mismatch item below.
|
||||||
`"packagechooser@steamifypage" selected "single,gaming,theme"` — a
|
- **Fixed this session**: selected-row contrast (border-only highlight,
|
||||||
real comma-separated list, matching `steamify-install`'s expected
|
was a translucent teal fill making white text unreadable), page
|
||||||
`--options` format. Global storage key: `packagechooser_steamifypage`.
|
background (was falling through to Calamares' white default), a
|
||||||
- **Multi-select only works with Shift/Ctrl-click** (plain clicks
|
sub-option `└` marker, more right padding so the row border clears the
|
||||||
replace the selection), so it's unusable as the Steamify page and
|
scrollbar, Summary step showing readable labels (packagechooserq's
|
||||||
not a fallback either.
|
`prettyStatus()` overridden, only for this module instance, to render
|
||||||
- **Its UI doesn't look like a multi-select either** (a plain list with a
|
an HTML bullet list from a new `items.json` that `calamares-online.sh`
|
||||||
big blank preview pane, no checkboxes shown) — confirmed by the user
|
writes next to `Items.qml`), and a **pre-existing bug**: `steamify.sh`
|
||||||
watching the VM live. Not good enough visually, even though it's
|
on the ISO was never executable (`curl -o` in `steamify-prepare.sh`
|
||||||
functionally correct.
|
doesn't set +x, and `profiledef.sh`'s `file_permissions` never listed
|
||||||
- **Decision (the user, 2026-09-28): use `netinstall` instead**, the
|
it), so `calamares-online.sh`'s direct exec of it
|
||||||
module that actually renders a checkbox tree (confirmed live on the
|
(`"$sbin" --defaults --list`) silently failed and `items.json` (no
|
||||||
Packages step: CachyOS Packages/shell config/base-devel/KDE-Desktop
|
static fallback) was never written — fixed by adding the path to
|
||||||
all ticked together, real checkboxes). Not yet re-confirmed live this
|
`file_permissions`.
|
||||||
session (the live session's keyboard layout flipped to Dutch after
|
- **Still open**:
|
||||||
the Welcome page's live keyboard preview, breaking `/`/`(`/`)` in
|
- Bake the `packagechooserq` *build* into the ISO build pipeline
|
||||||
`qmptype.py`'s US-layout key map — `setxkbmap us` has no effect on
|
itself (a `build-calamares-modules.sh` step: install
|
||||||
Wayland; fix the layout in the live session's own settings before
|
`cachyos-calamares-next`, build out of tree, install into
|
||||||
typing shell commands with those characters again).
|
`airootfs`) instead of committing a prebuilt `.so`, so it always
|
||||||
- **Next**, from already-known Calamares internals (its `Config.cpp`
|
matches whatever Calamares version is current at build time.
|
||||||
logged `"packagechooser@desktop" groups to select in netinstall
|
- Version-mismatch fallback: after `calamares-online.sh`'s
|
||||||
QList("KDE-Desktop")` — i.e. netinstall groups CAN be driven by
|
`pacman -Sy cachyos-calamares-next`, check the installed version
|
||||||
another module's choice, and/or defined directly): write a
|
against what the module was built for; on a mismatch, switch
|
||||||
`netinstall_steamify.conf`/groups YAML for Steamify's items (id,
|
`settings.conf` to the `netinstall` page instead (generate its
|
||||||
name, description per group; check whether a non-package/virtual
|
groups conf from `--defaults --list` there too) rather than risk an
|
||||||
group is possible, or whether `packages: []` with `critical: false`
|
"Initialization Failed" module.
|
||||||
is enough to make a group purely informational/no-op for pacman) from
|
- "Boot into gaming mode" as an opt-out sub-toggle under SteamOS
|
||||||
`steamify.sh --defaults --list`, generated in `calamares-online.sh`
|
conversion (agreed with the user) isn't implemented on either page
|
||||||
(same spot the abandoned Items.qml/packagechooser YAML generation
|
yet — both still use the old Gaming/Desktop radio-row.
|
||||||
was). Read the selection back from whichever global-storage key
|
- A Python job (e.g. `steamifychoice`, before `packages@online`) to
|
||||||
netinstall actually writes (`netinstallSelect`, seen in Config.cpp;
|
normalize either page's choice (packagechooserq's
|
||||||
confirm the exact key/shape live) in
|
`packagechooser_steamifypage` GS key, or netinstall's
|
||||||
`shellprocess_steamify.conf`/`steamify-install`. Boot into
|
packageOperations markers) into one `steamifyChoice` GS key, so
|
||||||
(gaming/desktop) still needs its own small `packagechooser`,
|
`shellprocess_steamify.conf` doesn't need to know which page ran.
|
||||||
`mode: required` page (an either/or choice doesn't fit a checkbox
|
- **Lessons learned**:
|
||||||
tree).
|
|
||||||
- Dead code from this session, left in the tree for now: `SteamifyPage.qml`.
|
|
||||||
- **Lessons for next time:**
|
|
||||||
- Verify a Calamares module is actually installed
|
- Verify a Calamares module is actually installed
|
||||||
(`ls /usr/lib/calamares/modules`) before writing QML/config for it.
|
(`ls /usr/lib/calamares/modules`) before writing QML/config for it;
|
||||||
- Read a module's *actual* logged global-storage writes, not its UI
|
`packagechooser`'s multi-select needs Shift/Ctrl-click (plain click
|
||||||
label text, to know what a `mode`/`method` really does.
|
replaces the selection) — not usable as-is, `packagechooserq` or
|
||||||
- Both testable live in the booted ISO VM with no rebuild: edit
|
`netinstall` only.
|
||||||
`/etc/calamares/modules/*.conf` + `settings.conf`, relaunch
|
- Both pages are testable live in the booted ISO VM with no rebuild:
|
||||||
|
hot-swap `/etc/calamares/modules/*.conf` + `settings.conf`
|
||||||
|
(`share/sq.sh` / `share/sn.sh`), relaunch
|
||||||
`pkexec-wrapper calamares -D6` in a **separate Konsole tab** (it
|
`pkexec-wrapper calamares -D6` in a **separate Konsole tab** (it
|
||||||
blocks the tab it runs in — typing into that same tab just echoes
|
blocks the tab it runs in). A C++ module change needs a real
|
||||||
inertly into its blocked stdin, doesn't run commands).
|
rebuild (out-of-tree, in the build VM) + redeploy of the `.so`, no
|
||||||
- Watch for the live session's keyboard layout changing away from US
|
shortcut.
|
||||||
(e.g. via Calamares' Welcome page keyboard preview) mid-session:
|
- The live session's keyboard layout keeps drifting to Dutch (e.g.
|
||||||
`qmptype.py` assumes US and silently sends wrong characters
|
after Calamares' Welcome page, or after opening System Settings),
|
||||||
(`/` → `-`, parens garbled) once it does, with no error for the
|
breaking `/`/`(`/`)`/`&`/`>` in `qmptype.py`'s US-layout map with no
|
||||||
common ones. Check with a no-symbols probe (`echo test123`) after
|
error for the common ones (`/` → `-`) — `setxkbmap us` typed via
|
||||||
any language/keyboard step, and fix via the live session's own
|
QMP *does* fix it (unlike the earlier Wayland claim), but check
|
||||||
keyboard settings if needed, not `setxkbmap` (no effect on Wayland).
|
with a no-symbols probe after any language/keyboard step regardless.
|
||||||
|
- `qmptype.py` has no key for `&` or `>` at all: a typed command using
|
||||||
|
either raises "no key for" and can leave an unterminated quote in
|
||||||
|
the shell's input buffer; send Ctrl+C before retyping. Avoid
|
||||||
|
redirection/`&&` in typed commands — write it to a file and run
|
||||||
|
`bash /media/foo.sh` instead, since a file's contents aren't typed
|
||||||
|
character-by-character.
|
||||||
|
- Send QMP keystrokes one command at a time with a beat in between;
|
||||||
|
firing several `qmptype.py` calls back-to-back can interleave with
|
||||||
|
the guest's own prompt redraw and garble the input.
|
||||||
|
- Don't screenshot-poll for VM readiness: pass `VM_SERIAL=<file>` to
|
||||||
|
`run.sh`/`vmisoboot.sh` and grep the plain-text serial log instead
|
||||||
|
(near-zero tokens vs. repeated screenshot+image-analysis).
|
||||||
|
- The build VM's guest sshd applies OpenSSH's `PerSourcePenalties`:
|
||||||
|
repeated quick reconnect attempts within its window make `ssh`/`scp`
|
||||||
|
fail instantly with "Connection closed" (verbose: "Not allowed at
|
||||||
|
this time"), and each further attempt seems to extend the penalty
|
||||||
|
rather than reset it. Don't retry-loop through it; back off for a
|
||||||
|
while, or just restart the VM (clears its in-memory penalty state
|
||||||
|
immediately) instead of waiting it out.
|
||||||
|
|
||||||
2. **Check the live name**2. **Check the live name**2. **Check the live name**2. **Check the live name** (the build tree has it right:
|
2. **Check the live name** (the build tree has it right:
|
||||||
`build/x86_64/airootfs/etc/os-release`) after the next build: Hello's subtitle should say
|
`build/x86_64/airootfs/etc/os-release`) after the next build: Hello's subtitle should say
|
||||||
"Steamify CachyOS, based on CachyOS rolling" (`steamify-customize.sh`,
|
"Steamify CachyOS, based on CachyOS rolling" (`steamify-customize.sh`,
|
||||||
run by mkarchiso after the packages; the airootfs copy of os-release is
|
run by mkarchiso after the packages; the airootfs copy of os-release is
|
||||||
|
|||||||
Reference in new issue
Block a user