From 197fd2bb6f08ec39ca4698c03952f4c52e80500a Mon Sep 17 00:00:00 2001 From: Bearice Ren Date: Tue, 7 Jul 2026 16:51:42 +0900 Subject: [PATCH] fix(ci): ship a PNG icon for the AppImage MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit linuxdeploy's icon deploy uses CImg, which cannot read .ico files, and the ubuntu runner ships no ImageMagick to convert at build time — so the AppImage step fell back to the raw .ico and failed: ERROR: CImg... Failed to recognize format of file '...rustcat.ico' Commit a pre-generated 256x256 assets/rustcat.png (derived from appIcon.ico) and point linuxdeploy at it directly. This removes the runtime ImageMagick dependency entirely. Co-Authored-By: Claude --- .github/workflows/rust.yaml | 27 +++++++-------------------- assets/rustcat.png | Bin 0 -> 19494 bytes 2 files changed, 7 insertions(+), 20 deletions(-) create mode 100644 assets/rustcat.png diff --git a/.github/workflows/rust.yaml b/.github/workflows/rust.yaml index 82fc9d5..1cde4c6 100644 --- a/.github/workflows/rust.yaml +++ b/.github/workflows/rust.yaml @@ -167,9 +167,11 @@ jobs: cp target/generate-rpm/*.rpm rpm-out/RustCat-linux-x86_64.rpm - name: Build AppImage - # Best-effort: linuxdeploy + an AppImage-from-AppImage bootstrap can be - # finicky in CI. A failure here must not block the core deb/rpm/tarball - # artifacts, so this step is allowed to fail and its upload is lenient. + # Best-effort: linuxdeploy's CImg-based icon deploy cannot read .ico, + # and the ubuntu runner ships no ImageMagick, so a pre-generated + # rustcat.png is committed to the repo and used directly here. This + # step is allowed to fail and its upload is lenient so a flaky + # AppImage never blocks the core deb/rpm/tarball artifacts. continue-on-error: true shell: bash run: | @@ -179,22 +181,7 @@ jobs: mkdir -p appimage/AppDir/usr/share/icons cp target/release/rust_cat appimage/AppDir/usr/bin/ cp assets/rustcat.desktop appimage/AppDir/usr/share/applications/ - - # linuxdeploy prefers a PNG icon; convert the multi-resolution ICO - # with whichever ImageMagick binary the runner ships (v7: magick, - # v6: convert). Fall back to the raw .ico if neither is present. - ICON_ARG=() - if command -v magick >/dev/null 2>&1; then - magick assets/appIcon.ico appimage/AppDir/usr/share/icons/rustcat.png - ICON_ARG=(--icon-file appimage/AppDir/usr/share/icons/rustcat.png) - elif command -v convert >/dev/null 2>&1; then - convert assets/appIcon.ico appimage/AppDir/usr/share/icons/rustcat.png - ICON_ARG=(--icon-file appimage/AppDir/usr/share/icons/rustcat.png) - else - cp assets/appIcon.ico appimage/AppDir/usr/share/icons/rustcat.ico - ICON_ARG=(--icon-file appimage/AppDir/usr/share/icons/rustcat.ico) - fi - + cp assets/rustcat.png appimage/AppDir/usr/share/icons/rustcat.png # AppImage desktop entry must point to the binary inside the AppDir sed -i 's|^Exec=.*|Exec=rust_cat|' appimage/AppDir/usr/share/applications/rustcat.desktop @@ -210,7 +197,7 @@ jobs: fi ./linuxdeploy --appdir appimage/AppDir \ --desktop-file appimage/AppDir/usr/share/applications/rustcat.desktop \ - "${ICON_ARG[@]}" \ + --icon-file appimage/AppDir/usr/share/icons/rustcat.png \ --output appimage mv appimage/*.AppImage "${OUTPUT}" diff --git a/assets/rustcat.png b/assets/rustcat.png new file mode 100644 index 0000000000000000000000000000000000000000..c18c9d831c01203f3228b9abd0148622c396afce GIT binary patch literal 19494 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 literal 0 HcmV?d00001