From 9551eabf2df76b205f2cd6a6210328e4a5c41b80 Mon Sep 17 00:00:00 2001 From: Tickbase Date: Sun, 12 Jul 2026 10:57:49 +0200 Subject: [PATCH] bump version & build --- .github/workflows/build.yml | 120 +++++++++++++++++++++++++++++++++--- package-lock.json | 4 +- package.json | 2 +- src-tauri/Cargo.lock | 2 +- src-tauri/Cargo.toml | 2 +- src-tauri/tauri.conf.json | 2 +- 6 files changed, 116 insertions(+), 16 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index bad8ba6..49374c2 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -163,20 +163,120 @@ jobs: - name: Install frontend dependencies run: npm ci - - name: Build Tauri app with updater - uses: tauri-apps/tauri-action@v0 + - name: Build Tauri app + run: npm run tauri build + env: + TAURI_SIGNING_PRIVATE_KEY: ${{ secrets.TAURI_SIGNING_PRIVATE_KEY }} + TAURI_SIGNING_PRIVATE_KEY_PASSWORD: ${{ secrets.TAURI_SIGNING_PRIVATE_KEY_PASSWORD }} + + - name: Strip bundled GTK/WebKit/GLib stack, rely on the host's instead + run: | + set -euo pipefail + cd src-tauri/target/release/bundle/appimage + APPIMAGE=$(ls *.AppImage) + chmod +x "$APPIMAGE" + ./"$APPIMAGE" --appimage-extract >/dev/null + + LDCONFIG_CACHE=$(ldconfig -p) + resolve_lib_path() { + awk -v lib="$1" '$1==lib {print $NF; exit}' <<< "$LDCONFIG_CACHE" + } + + # WebKitGTK bundled by the AppImage tooling is pinned to whatever the + # build image ships, and drifts out of sync with newer host systems + # (freezes on old bundled WebKit, EGL/DMABUF crashes on some newer + # ones). The only configuration that's tested clean is deferring the + # whole GTK/WebKit/GLib stack to the host's own matched libraries, so + # we compute the full dependency closure from the host side (whatever + # is actually installed here) and strip every bundled copy that's + # also part of that closure. + declare -A EXCLUDE + for seed in libwebkit2gtk-4.1.so.0 libglib-2.0.so.0 libgio-2.0.so.0 libgobject-2.0.so.0 libgmodule-2.0.so.0; do + EXCLUDE[$seed]=1 + done + + changed=1 + while [ "$changed" -eq 1 ]; do + changed=0 + for lib in "${!EXCLUDE[@]}"; do + hostpath=$(resolve_lib_path "$lib") + [ -n "$hostpath" ] && [ -e "$hostpath" ] || continue + deps=$(ldd "$hostpath" 2>/dev/null | grep -oE '[a-zA-Z0-9._+-]+\.so[0-9.]*' | sort -u) || true + for d in $deps; do + if [ -z "${EXCLUDE[$d]:-}" ]; then + if find squashfs-root/usr/lib -maxdepth 1 -name "${d}*" 2>/dev/null | grep -q .; then + EXCLUDE[$d]=1 + changed=1 + fi + fi + done + done + done + + echo "Excluding ${#EXCLUDE[@]} bundled libraries, relying on the host's instead:" + for lib in "${!EXCLUDE[@]}"; do echo " $lib"; done | sort + + for lib in "${!EXCLUDE[@]}"; do + find squashfs-root/usr/lib -maxdepth 1 -name "${lib%.so*}.so*" -delete + done + + curl -sSL -o appimagetool "https://github.com/AppImage/appimagetool/releases/download/continuous/appimagetool-x86_64.AppImage" + chmod +x appimagetool + rm -f "$APPIMAGE" + ARCH=x86_64 ./appimagetool --appimage-extract-and-run squashfs-root "$APPIMAGE" + rm -rf squashfs-root appimagetool + + - name: Sign artifacts and upload to release env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} TAURI_SIGNING_PRIVATE_KEY: ${{ secrets.TAURI_SIGNING_PRIVATE_KEY }} TAURI_SIGNING_PRIVATE_KEY_PASSWORD: ${{ secrets.TAURI_SIGNING_PRIVATE_KEY_PASSWORD }} - with: - releaseId: ${{ needs.create-release.outputs.release_id }} - projectPath: '.' - includeDebug: false - includeRelease: true - includeUpdaterJson: true - tauriScript: 'npm run tauri' - args: ${{ matrix.args }} + VERSION: ${{ needs.create-release.outputs.version }} + REPO: ${{ github.repository }} + run: | + set -euo pipefail + cd src-tauri/target/release/bundle + + APPIMAGE_PATH=$(ls appimage/*.AppImage) + DEB_PATH=$(ls deb/*.deb) + RPM_PATH=$(ls rpm/*.rpm) + + for f in "$APPIMAGE_PATH" "$DEB_PATH" "$RPM_PATH"; do + npx --prefix "$GITHUB_WORKSPACE" tauri signer sign "$f" + done + + APPIMAGE_NAME=$(basename "$APPIMAGE_PATH") + DEB_NAME=$(basename "$DEB_PATH") + RPM_NAME=$(basename "$RPM_PATH") + + jq -n \ + --arg version "$VERSION" \ + --arg pub_date "$(date -u +"%Y-%m-%dT%H:%M:%SZ")" \ + --arg appimage_sig "$(cat "${APPIMAGE_PATH}.sig")" \ + --arg appimage_url "https://github.com/$REPO/releases/latest/download/$APPIMAGE_NAME" \ + --arg deb_sig "$(cat "${DEB_PATH}.sig")" \ + --arg deb_url "https://github.com/$REPO/releases/latest/download/$DEB_NAME" \ + --arg rpm_sig "$(cat "${RPM_PATH}.sig")" \ + --arg rpm_url "https://github.com/$REPO/releases/latest/download/$RPM_NAME" \ + '{ + version: $version, + notes: "", + pub_date: $pub_date, + platforms: { + "linux-x86_64": { signature: $appimage_sig, url: $appimage_url }, + "linux-x86_64-appimage": { signature: $appimage_sig, url: $appimage_url }, + "linux-x86_64-deb": { signature: $deb_sig, url: $deb_url }, + "linux-x86_64-rpm": { signature: $rpm_sig, url: $rpm_url } + } + }' > latest.json + + gh release upload "v${VERSION}" \ + "$APPIMAGE_PATH" "${APPIMAGE_PATH}.sig" \ + "$DEB_PATH" "${DEB_PATH}.sig" \ + "$RPM_PATH" "${RPM_PATH}.sig" \ + latest.json \ + --clobber \ + --repo "$REPO" publish-release: name: Publish release diff --git a/package-lock.json b/package-lock.json index 5417d84..9fd14ce 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "creamlinux", - "version": "1.7.0", + "version": "1.7.1", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "creamlinux", - "version": "1.7.0", + "version": "1.7.1", "license": "MIT", "dependencies": { "@tauri-apps/api": "^2.5.0", diff --git a/package.json b/package.json index aa6980d..06bdc68 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "creamlinux", "private": true, - "version": "1.7.0", + "version": "1.7.1", "type": "module", "author": "Tickbase", "repository": "https://github.com/Novattz/creamlinux-installer", diff --git a/src-tauri/Cargo.lock b/src-tauri/Cargo.lock index eab4ca1..f7d7131 100644 --- a/src-tauri/Cargo.lock +++ b/src-tauri/Cargo.lock @@ -495,7 +495,7 @@ dependencies = [ [[package]] name = "creamlinux-installer" -version = "1.7.0" +version = "1.7.1" dependencies = [ "async-trait", "log", diff --git a/src-tauri/Cargo.toml b/src-tauri/Cargo.toml index 2e8ea0a..1cb4d0f 100644 --- a/src-tauri/Cargo.toml +++ b/src-tauri/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "creamlinux-installer" -version = "1.7.0" +version = "1.7.1" description = "DLC Manager for Steam games on Linux" authors = ["tickbase"] license = "MIT" diff --git a/src-tauri/tauri.conf.json b/src-tauri/tauri.conf.json index 31ceaa2..e3413bb 100644 --- a/src-tauri/tauri.conf.json +++ b/src-tauri/tauri.conf.json @@ -19,7 +19,7 @@ }, "productName": "Creamlinux", "mainBinaryName": "creamlinux", - "version": "1.7.0", + "version": "1.7.1", "identifier": "com.creamlinux.dev", "app": { "withGlobalTauri": false,