From 0190e5e35059a0831f77a9878c3468d6e5dcf94b Mon Sep 17 00:00:00 2001 From: u8array Date: Mon, 5 Oct 2026 23:15:00 +0200 Subject: [PATCH] build(linux): the AppImage carries the metainfo, validated in the Rust workflow --- .github/workflows/rust.yml | 17 +++++++++++------ .../packaging/flatpak/de.u8array.zplab.yml | 4 +++- src-tauri/tauri.conf.json | 5 +++++ 3 files changed, 19 insertions(+), 7 deletions(-) diff --git a/.github/workflows/rust.yml b/.github/workflows/rust.yml index d22b6868..6927ba1a 100644 --- a/.github/workflows/rust.yml +++ b/.github/workflows/rust.yml @@ -1,9 +1,7 @@ name: Rust -# Rust lives in src-tauri and is only compiled during a release build, so its -# unit tests, clippy, and fmt never gated a PR. This runs them on every change -# that touches the crate. Path-filtered so pure-frontend PRs don't pay the -# (heavy) Tauri dependency compile. +# src-tauri gets no other PR gate, because Rust and the packaging data only matter in a release build. +# Path-filtered because the Tauri dependency compile is too heavy for pure-frontend PRs. on: pull_request: branches: [main, prod] @@ -17,8 +15,15 @@ defaults: working-directory: ./src-tauri jobs: - # Format check is platform-independent (rustfmt parses, doesn't compile), so - # run it once instead of per matrix platform. + # Nothing in the release build validates the metainfo, so this job is its only gate. + metainfo: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v7 + - run: sudo apt-get update && sudo apt-get install -y appstream + - run: appstreamcli validate --no-net packaging/linux/de.u8array.zplab.metainfo.xml + + # rustfmt parses without compiling, so one run covers every matrix platform. fmt: runs-on: ubuntu-latest steps: diff --git a/src-tauri/packaging/flatpak/de.u8array.zplab.yml b/src-tauri/packaging/flatpak/de.u8array.zplab.yml index 6be47233..f0d87498 100644 --- a/src-tauri/packaging/flatpak/de.u8array.zplab.yml +++ b/src-tauri/packaging/flatpak/de.u8array.zplab.yml @@ -1,4 +1,4 @@ -# Flathub manifest. Flathub builds this itself from the release deb, release.yml has no Flatpak leg. +# Flathub manifest. Flathub builds it from the release deb, so release.yml has no Flatpak leg. app-id: de.u8array.zplab runtime: org.gnome.Platform runtime-version: "50" @@ -33,6 +33,8 @@ modules: # Tauri files the 256 px icon under a size no theme lookup reads. - install -Dm644 usr/share/icons/hicolor/256x256@2/apps/ZPLab.png /app/share/icons/hicolor/256x256/apps/ZPLab.png - install -Dm644 de.u8array.zplab.metainfo.xml /app/share/metainfo/de.u8array.zplab.metainfo.xml + # sed -i reports success on no match, so a missed rename would ship an unresolved launchable. + - grep -q 'ZPLab.desktop' /app/share/metainfo/de.u8array.zplab.metainfo.xml # The packaged metainfo launches the deb's desktop file name. - sed -i 's#ZPLab.desktop#de.u8array.zplab.desktop#' /app/share/metainfo/de.u8array.zplab.metainfo.xml sources: diff --git a/src-tauri/tauri.conf.json b/src-tauri/tauri.conf.json index 99f3bd75..66732ae5 100644 --- a/src-tauri/tauri.conf.json +++ b/src-tauri/tauri.conf.json @@ -58,6 +58,11 @@ "icons/icon.ico" ], "linux": { + "appimage": { + "files": { + "/usr/share/metainfo/de.u8array.zplab.metainfo.xml": "packaging/linux/de.u8array.zplab.metainfo.xml" + } + }, "deb": { "files": { "/usr/lib/udev/rules.d/70-zplab.rules": "packaging/udev/70-zplab.rules",