Skip to content

Commit 57e1e6c

Browse files
committed
docs(skills): document Tuner libpeas gotcha, fix exceptions table, runtime-update PRs, empty x-version
- app-gotchas.md: add org.altlinux.Tuner section (-Dgjs=false for libpeas 2.x on GNOME Platform 49; mozjs-128 not available); add Tuner row to app table - pipeline.md: rewrite exceptions table as conditional (screenshots vs no-screenshots); add Runtime-update PRs section (CI doesn't trigger with no flatpaks/ diffs) - versioning.md: document empty x-version string as equivalent to absent x-version; add Flathub API curl one-liner for checking current upstream version Assisted-by: Claude Sonnet 4.6 via OpenCode
1 parent 4df9a05 commit 57e1e6c

File tree

3 files changed

+61
-10
lines changed

3 files changed

+61
-10
lines changed

skills/app-gotchas.md

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ Per-app known issues and workarounds. Each app has a dedicated `GOTCHAS.md` in i
1212
| firefox-nightly | `flatpaks/firefox-nightly/GOTCHAS.md` | app-id is `org.mozilla.firefox.nightly` (renamed from `org.mozilla.firefox` to avoid Flathub clash), rolling aarch64 sha256, BaseApp required pre-install, `.appdata.xml` skips CI validation |
1313
| thunderbird-nightly | `flatpaks/thunderbird-nightly/GOTCHAS.md` | x86_64 only (no aarch64), comm-central icon pinning — verify each size sha256 independently (swap of 32/64 was a bug), `--persist=.thunderbird-nightly` profile isolation, no BaseApp pre-install needed, extension stubs created in build-commands (not cleanup-commands) |
1414
| virtualbox | `flatpaks/virtualbox/GOTCHAS.md` | KVM backend (no vboxdrv kernel module), X11 only (VBoxSVGA Wayland bug), hardening disabled, gsoap serial build, shared-modules SDL1+GLU inlined |
15+
| org.altlinux.Tuner | (inline in `app-gotchas.md`) | `libpeas` 2.x requires `-Dgjs=false` on GNOME Platform 49 (mozjs-128 not available) |
1516

1617
## Flatpak install scope — always system-wide
1718

@@ -105,6 +106,35 @@ x-skip-launch-check: true
105106
106107
Applies to: **goose**, **lmstudio** (any Electron GUI app).
107108
109+
## org.altlinux.Tuner
110+
111+
### libpeas 2.x: `-Dgjs=false` required on GNOME Platform 49
112+
113+
`libpeas` 2.0.x depends on `gjs` (GNOME JavaScript), which requires SpiderMonkey
114+
(`mozjs-128`). `mozjs-128` is **not included** in `org.gnome.Platform//49`, so the
115+
`libpeas` build fails on any clean x86_64 build with:
116+
117+
```
118+
meson: error: Dependency "mozjs-128" not found
119+
```
120+
121+
**Fix:** add `-Dgjs=false` to the `libpeas` module's `config-opts`:
122+
123+
```yaml
124+
- name: libpeas
125+
buildsystem: meson
126+
config-opts:
127+
- -Dgjs=false
128+
# ... other opts
129+
```
130+
131+
This disables the GJS plugin loader; Tuner does not use it, so functionality is unaffected.
132+
133+
**Why aarch64 may pass while x86_64 fails:** flatpak-builder caches build artifacts
134+
by content hash. If a prior aarch64 build of `libpeas` was cached before the mozjs-128
135+
check was enforced, the cached result is reused and the step appears to pass. A clean
136+
build (no cache) will reproduce the failure on both arches.
137+
108138
## bundle-repack apps: no metainfo injection
109139

110140
The `release.yaml` pipeline downloads a pre-built upstream `.flatpak` and repackages it as

skills/pipeline.md

Lines changed: 26 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,16 @@ until CI passes end-to-end:
127127
Never close a "new app" issue based solely on files being committed. The Flatpak
128128
must be buildable and installable before the issue is closed.
129129

130+
## Runtime-update PRs
131+
132+
When a runtime-update PR is created (e.g. by raptor[bot] or Copilot), the manifest
133+
may already reflect the target state — `runtime-version` set on import with no other
134+
diffs. **CI will not trigger on a branch with no file changes to `flatpaks/`.**
135+
136+
To trigger CI: make a real, correct change to the manifest. The canonical fix is to
137+
set `x-version` to the current upstream release version (check Flathub or the upstream
138+
repo). This is always a valid improvement — `x-version` must not be empty.
139+
130140
## flatpak-builder-lint known errors
131141

132142
`build.yml` runs `flatpak-builder-lint manifest "flatpaks/$app/manifest.yaml"` during CI.
@@ -195,16 +205,23 @@ Both steps use the same `exceptions.json` file as the manifest lint step.
195205

196206
#### Required exceptions for non-Flathub repos
197207

198-
These errors fire on every manifest.yaml app in testhub (not Flathub-specific behavior):
208+
These errors can fire on manifest.yaml apps in testhub. Which ones apply depends on the
209+
app's metainfo content:
199210

200-
| Exception | Reason |
201-
|---|---|
202-
| `appstream-screenshots-not-mirrored-in-ostree` | No `--mirror-screenshots-url` passed; not required outside Flathub |
203-
| `appstream-no-flathub-manifest-key` | `flathub::manifest` custom tag only required for Flathub submissions |
204-
| `appstream-external-screenshot-url` | Same root cause as above — screenshots not mirrored |
205-
| `metainfo-missing-screenshots` | Personal hosting repo — no screenshots maintained here |
206-
207-
Add these **four** to `exceptions.json` for every manifest.yaml app.
211+
| Exception | When it fires | Add? |
212+
|---|---|---|
213+
| `appstream-no-flathub-manifest-key` | Always — `flathub::manifest` custom tag only required for Flathub submissions | Always |
214+
| `appstream-screenshots-not-mirrored-in-ostree` | App has screenshots in metainfo but `--mirror-screenshots-url` not passed | If app has screenshots |
215+
| `appstream-external-screenshot-url` | App has screenshots pointing to external URLs (not dl.flathub.org/media) | If app has screenshots |
216+
| `metainfo-missing-screenshots` | App has no screenshots in metainfo | If app has no screenshots |
217+
218+
**Practical rule:** Add `appstream-no-flathub-manifest-key` universally. Then:
219+
- If the app **has** screenshots in metainfo: add `appstream-external-screenshot-url` + `appstream-screenshots-not-mirrored-in-ostree`
220+
- If the app **has no** screenshots: add `metainfo-missing-screenshots`
221+
222+
Note: `appstream-screenshots-not-mirrored-in-ostree` and `appstream-external-screenshot-url`
223+
fire at **different** lint stages (builddir vs repo respectively) — both must be in
224+
`exceptions.json` or the build will fail at one stage even if the other passes.
208225

209226
If CI surfaces additional errors after first run, add them to `exceptions.json` and
210227
document in the app's `GOTCHAS.md`. Do not add metainfo fields we cannot keep accurate

skills/versioning.md

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,11 +14,15 @@ Every package must carry an explicit version tag on ghcr.io in addition to `:lat
1414
- `release.yaml` apps: `version` is a required field — CI errors if missing.
1515
- `manifest.yaml` apps: add `x-version: "<version>"` as a top-level field.
1616
flatpak-builder ignores `x-`-prefixed fields — safe to add.
17-
- If `x-version` is absent, the build warns and pushes `:latest` only.
17+
- If `x-version` is absent **or set to an empty string (`x-version: ''`)**, the build
18+
warns and pushes `:latest` only. Both cases are equivalent failures — always set a
19+
real version string.
1820
- Version strings must reflect the actual upstream app version — not build dates,
1921
git shas, or repo versions.
2022
- When upgrading an app, update `x-version` (or `version`) in the same commit that
2123
updates the source URL and sha256.
24+
- **Checking the current version:** use the Flathub API:
25+
`curl -s https://flathub.org/api/v2/appstream/<app-id> | python3 -c "import json,sys; d=json.load(sys.stdin); print([r['version'] for r in d.get('releases',[])][:3])"`
2226

2327
## Source URL convention (manifest.yaml apps)
2428

0 commit comments

Comments
 (0)