From 4134917a4562af540db3e32f3e8e419c718c3d9c Mon Sep 17 00:00:00 2001 From: "D. Rect." <48034372+DistractionRectangle@users.noreply.github.com> Date: Mon, 7 Jul 2025 18:57:00 +0000 Subject: [PATCH 1/3] refactor: split platform specific config out of tauri.conf.json Allows for better per platform default config. Currently the default serves windows/macos fine while it has to be tweaked in order to build for linux make build-tauri now successfully runs where it errored out before. Appimages made with make alone however is incomplete as there are still post processing steps in the github release workflow to bundle additional resources. - split platform specific config out of tauri.conf.json into auxiliary platform specific config files, natively supported by tauri - pull improved defaults out of template-tauri-build-linux-x64.yml into new tauri.linux.conf.json - fix tauri-build-linx-x64.yml to utilize new tauri.linux.conf.json --- .../template-tauri-build-linux-x64.yml | 11 ++----- src-tauri/tauri.conf.json | 29 +------------------ src-tauri/tauri.linux.conf.json | 26 +++++++++++++++++ src-tauri/tauri.macos.conf.json | 15 ++++++++++ src-tauri/tauri.windows.conf.json | 18 ++++++++++++ 5 files changed, 63 insertions(+), 36 deletions(-) create mode 100644 src-tauri/tauri.linux.conf.json create mode 100644 src-tauri/tauri.macos.conf.json create mode 100644 src-tauri/tauri.windows.conf.json diff --git a/.github/workflows/template-tauri-build-linux-x64.yml b/.github/workflows/template-tauri-build-linux-x64.yml index 303b00109..635a1542c 100644 --- a/.github/workflows/template-tauri-build-linux-x64.yml +++ b/.github/workflows/template-tauri-build-linux-x64.yml @@ -104,20 +104,15 @@ jobs: run: | echo "Version: ${{ inputs.new_version }}" # Update tauri.conf.json - jq --arg version "${{ inputs.new_version }}" '.version = $version | .bundle.createUpdaterArtifacts = true | .bundle.resources = ["resources/pre-install/**/*"] | .bundle.externalBin = ["binaries/cortex-server", "resources/bin/uv"]' ./src-tauri/tauri.conf.json > /tmp/tauri.conf.json + jq --arg version "${{ inputs.new_version }}" '.version = $version | .bundle.createUpdaterArtifacts = true' ./src-tauri/tauri.conf.json > /tmp/tauri.conf.json mv /tmp/tauri.conf.json ./src-tauri/tauri.conf.json if [ "${{ inputs.channel }}" != "stable" ]; then jq '.bundle.linux.deb.files = {"usr/bin/bun": "resources/bin/bun", "usr/lib/Jan-${{ inputs.channel }}/binaries": "binaries/deps", "usr/lib/Jan-${{ inputs.channel }}/binaries/engines": "binaries/engines", - "usr/lib/Jan-${{ inputs.channel }}/binaries/libvulkan.so": "binaries/libvulkan.so"}' ./src-tauri/tauri.conf.json > /tmp/tauri.conf.json - else - jq '.bundle.linux.deb.files = {"usr/bin/bun": "resources/bin/bun", - "usr/lib/Jan/binaries": "binaries/deps", - "usr/lib/Jan/binaries/engines": "binaries/engines", - "usr/lib/Jan/binaries/libvulkan.so": "binaries/libvulkan.so"}' ./src-tauri/tauri.conf.json > /tmp/tauri.conf.json + "usr/lib/Jan-${{ inputs.channel }}/binaries/libvulkan.so": "binaries/libvulkan.so"}' ./src-tauri/tauri.linux.conf.json > /tmp/tauri.linux.conf.json + mv /tmp/tauri.linux.conf.json ./src-tauri/tauri.linux.conf.json fi - mv /tmp/tauri.conf.json ./src-tauri/tauri.conf.json jq --arg version "${{ inputs.new_version }}" '.version = $version' web-app/package.json > /tmp/package.json mv /tmp/package.json web-app/package.json diff --git a/src-tauri/tauri.conf.json b/src-tauri/tauri.conf.json index 210322297..e6f9d6214 100644 --- a/src-tauri/tauri.conf.json +++ b/src-tauri/tauri.conf.json @@ -76,7 +76,6 @@ }, "bundle": { "active": true, - "targets": ["nsis", "app", "dmg", "deb", "appimage"], "createUpdaterArtifacts": false, "icon": [ "icons/32x32.png", @@ -84,32 +83,6 @@ "icons/128x128@2x.png", "icons/icon.icns", "icons/icon.ico" - ], - "resources": [ - "resources/pre-install/**/*", - "resources/lib/", - "binaries/**/*" - ], - "externalBin": [ - "binaries/cortex-server", - "resources/bin/bun", - "resources/bin/uv" - ], - "linux": { - "appimage": { - "bundleMediaFramework": false, - "files": {} - }, - "deb": { - "files": { - "usr/bin/bun": "resources/bin/bun", - "usr/lib/Jan/binaries": "binaries/deps", - "usr/lib/Jan/binaries/engines": "binaries/engines" - } - } - }, - "windows": { - "signCommand": "powershell -ExecutionPolicy Bypass -File ./sign.ps1 %1" - } + ] } } diff --git a/src-tauri/tauri.linux.conf.json b/src-tauri/tauri.linux.conf.json new file mode 100644 index 000000000..4174cd770 --- /dev/null +++ b/src-tauri/tauri.linux.conf.json @@ -0,0 +1,26 @@ +{ + "bundle": { + "targets": ["deb", "appimage"], + "resources": [ + "resources/pre-install/**/*" + ], + "externalBin": [ + "binaries/cortex-server", + "resources/bin/uv" + ], + "linux": { + "appimage": { + "bundleMediaFramework": false, + "files": {} + }, + "deb": { + "files": { + "usr/bin/bun": "resources/bin/bun", + "usr/lib/Jan/binaries": "binaries/deps", + "usr/lib/Jan/binaries/engines": "binaries/engines", + "usr/lib/Jan/binaries/libvulkan.so": "binaries/libvulkan.so" + } + } + } + } +} diff --git a/src-tauri/tauri.macos.conf.json b/src-tauri/tauri.macos.conf.json new file mode 100644 index 000000000..485e1b784 --- /dev/null +++ b/src-tauri/tauri.macos.conf.json @@ -0,0 +1,15 @@ +{ + "bundle": { + "targets": ["app", "dmg"], + "resources": [ + "resources/pre-install/**/*", + "resources/lib/", + "binaries/**/*" + ], + "externalBin": [ + "binaries/cortex-server", + "resources/bin/bun", + "resources/bin/uv" + ] + } +} diff --git a/src-tauri/tauri.windows.conf.json b/src-tauri/tauri.windows.conf.json new file mode 100644 index 000000000..17ebd5dab --- /dev/null +++ b/src-tauri/tauri.windows.conf.json @@ -0,0 +1,18 @@ +{ + "bundle": { + "targets": ["nsis"], + "resources": [ + "resources/pre-install/**/*", + "resources/lib/", + "binaries/**/*" + ], + "externalBin": [ + "binaries/cortex-server", + "resources/bin/bun", + "resources/bin/uv" + ], + "windows": { + "signCommand": "powershell -ExecutionPolicy Bypass -File ./sign.ps1 %1" + } + } +} From 7d04d66a0b4920d47ddf4261d368b1e764765930 Mon Sep 17 00:00:00 2001 From: "D. Rect." <48034372+DistractionRectangle@users.noreply.github.com> Date: Tue, 8 Jul 2025 14:59:55 +0000 Subject: [PATCH 2/3] refactor: pull appimage packaging steps out of github linux release workflow - pulled appimage packaging steps out of release workflow into new src-tauri/build-utils/buildAppImage.sh - cleaned up yarn scripts: - moved multi platform yarn scripts out of yarn build:tauri: into generic yarn build:tauri - split yarn build:tauri:linux:win32 into separate yarn scripts so it's clearer what is specific to which platform - added src-tauri/build-utils/buildAppImage.sh to new yarn build:tauri:linux yarn script This is also a good entry point to add flatpak builds in the future. Part of #5641 --- .../template-tauri-build-linux-x64.yml | 40 ++++--------------- .gitignore | 3 +- Makefile | 2 + package.json | 7 ++-- src-tauri/build-utils/buildAppImage.sh | 33 +++++++++++++++ 5 files changed, 48 insertions(+), 37 deletions(-) create mode 100755 src-tauri/build-utils/buildAppImage.sh diff --git a/.github/workflows/template-tauri-build-linux-x64.yml b/.github/workflows/template-tauri-build-linux-x64.yml index 635a1542c..7ef9c88b1 100644 --- a/.github/workflows/template-tauri-build-linux-x64.yml +++ b/.github/workflows/template-tauri-build-linux-x64.yml @@ -152,41 +152,15 @@ jobs: chmod +x "$TAURI_TOOLKIT_PATH/linuxdeploy-x86_64.AppImage" make build-tauri - # Copy engines and bun to appimage - wget https://github.com/AppImage/AppImageKit/releases/download/continuous/appimagetool-x86_64.AppImage -O ./appimagetool - chmod +x ./appimagetool - if [ "${{ inputs.channel }}" != "stable" ]; then - ls ./src-tauri/target/release/bundle/appimage/ - cp ./src-tauri/resources/bin/bun ./src-tauri/target/release/bundle/appimage/Jan-${{ inputs.channel }}.AppDir/usr/bin/bun - mkdir -p ./src-tauri/target/release/bundle/appimage/Jan-${{ inputs.channel }}.AppDir/usr/lib/Jan-${{ inputs.channel }}/binaries/engines - cp -f ./src-tauri/binaries/deps/*.so* ./src-tauri/target/release/bundle/appimage/Jan-${{ inputs.channel }}.AppDir/usr/lib/Jan-${{ inputs.channel }}/binaries/ - cp -f ./src-tauri/binaries/*.so* ./src-tauri/target/release/bundle/appimage/Jan-${{ inputs.channel }}.AppDir/usr/lib/Jan-${{ inputs.channel }}/binaries/ - cp -rf ./src-tauri/binaries/engines ./src-tauri/target/release/bundle/appimage/Jan-${{ inputs.channel }}.AppDir/usr/lib/Jan-${{ inputs.channel }}/binaries/ - APP_IMAGE=./src-tauri/target/release/bundle/appimage/$(ls ./src-tauri/target/release/bundle/appimage/ | grep .AppImage | head -1) - echo $APP_IMAGE - rm -f $APP_IMAGE - ./appimagetool ./src-tauri/target/release/bundle/appimage/Jan-${{ inputs.channel }}.AppDir $APP_IMAGE - yarn tauri signer sign \ - --private-key "$TAURI_SIGNING_PRIVATE_KEY" \ - --password "$TAURI_SIGNING_PRIVATE_KEY_PASSWORD" \ - "$APP_IMAGE" - else - cp ./src-tauri/resources/bin/bun ./src-tauri/target/release/bundle/appimage/Jan.AppDir/usr/bin/bun - mkdir -p ./src-tauri/target/release/bundle/appimage/Jan.AppDir/usr/lib/Jan/binaries/engines - cp -f ./src-tauri/binaries/deps/*.so* ./src-tauri/target/release/bundle/appimage/Jan.AppDir/usr/lib/Jan/binaries/ - cp -f ./src-tauri/binaries/*.so* ./src-tauri/target/release/bundle/appimage/Jan.AppDir/usr/lib/Jan/binaries/ - cp -rf ./src-tauri/binaries/engines ./src-tauri/target/release/bundle/appimage/Jan.AppDir/usr/lib/Jan/binaries/ - APP_IMAGE=./src-tauri/target/release/bundle/appimage/$(ls ./src-tauri/target/release/bundle/appimage/ | grep AppImage | head -1) - echo $APP_IMAGE - rm -f $APP_IMAGE - ./appimagetool ./src-tauri/target/release/bundle/appimage/Jan.AppDir $APP_IMAGE - yarn tauri signer sign \ - --private-key "$TAURI_SIGNING_PRIVATE_KEY" \ - --password "$TAURI_SIGNING_PRIVATE_KEY_PASSWORD" \ - "$APP_IMAGE" - fi + + APP_IMAGE=./src-tauri/target/release/bundle/appimage/$(ls ./src-tauri/target/release/bundle/appimage/ | grep AppImage | head -1) + yarn tauri signer sign \ + --private-key "$TAURI_SIGNING_PRIVATE_KEY" \ + --password "$TAURI_SIGNING_PRIVATE_KEY_PASSWORD" \ + "$APP_IMAGE" env: + RELEASE_CHANNEL: "${{ inputs.channel }}" GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} POSTHOG_KEY: ${{ secrets.POSTHOG_KEY }} POSTHOG_HOST: ${{ secrets.POSTHOG_HOST }} diff --git a/.gitignore b/.gitignore index f09d958d0..e714bfdd6 100644 --- a/.gitignore +++ b/.gitignore @@ -49,4 +49,5 @@ src-tauri/resources/bin # Helper tools .opencode OpenCode.md -archive/ \ No newline at end of file +archive/ +.cache/ \ No newline at end of file diff --git a/Makefile b/Makefile index 6e69c602d..96a526342 100644 --- a/Makefile +++ b/Makefile @@ -22,6 +22,8 @@ config-yarn: install-and-build: config-yarn ifeq ($(OS),Windows_NT) echo "skip" +else ifeq ($(shell uname -s),Linux) + chmod +x src-tauri/build-utils/* endif yarn install yarn build:core diff --git a/package.json b/package.json index c8273cb33..c0b29b6a3 100644 --- a/package.json +++ b/package.json @@ -33,9 +33,10 @@ "copy:lib:win32": "cpx \"./lib/windows/*.dll\" \"./src-tauri/resources/lib/\"", "copy:lib:darwin": "mkdir -p \"./src-tauri/resources/lib/\"", "download:bin": "node ./scripts/download-bin.mjs", - "build:tauri:linux:win32": "yarn download:bin && yarn install:cortex && yarn build:icon && yarn copy:assets:tauri && yarn tauri build", - "build:tauri:darwin": "yarn install:cortex && yarn build:icon && yarn copy:assets:tauri && yarn tauri build --target universal-apple-darwin", - "build:tauri": "run-script-os", + "build:tauri:win32": "yarn download:bin && yarn tauri build", + "build:tauri:linux": "yarn download:bin && yarn tauri build && ./src-tauri/build-utils/buildAppImage.sh", + "build:tauri:darwin": "yarn tauri build --target universal-apple-darwin", + "build:tauri": "yarn install:cortex && yarn build:icon && yarn copy:assets:tauri && run-script-os", "build:icon": "tauri icon ./src-tauri/icons/icon.png", "build:core": "cd core && yarn build && yarn pack", "build:web": "yarn workspace @janhq/web-app build", diff --git a/src-tauri/build-utils/buildAppImage.sh b/src-tauri/build-utils/buildAppImage.sh new file mode 100755 index 000000000..3149e0b2c --- /dev/null +++ b/src-tauri/build-utils/buildAppImage.sh @@ -0,0 +1,33 @@ +#!/bin/bash +APPIMAGETOOL="./.cache/build-tools/appimagetool" +RELEASE_CHANNEL=${RELEASE_CHANNEL:-"stable"} + +# pull in AppImageTool if it's not pre cached +mkdir -p ./.cache/build-tools +if [ ! -f "${APPIMAGETOOL}" ]; then + wget https://github.com/AppImage/AppImageKit/releases/download/continuous/appimagetool-x86_64.AppImage -O "${APPIMAGETOOL}" + chmod +x "${APPIMAGETOOL}" +fi + +if [ "${RELEASE_CHANNEL}" != "stable" ]; then + APP_DIR=./src-tauri/target/release/bundle/appimage/Jan-${RELEASE_CHANNEL}.AppDir + LIB_DIR=$APP_DIR/usr/lib/Jan-${RELEASE_CHANNEL}/binaries +else + APP_DIR=./src-tauri/target/release/bundle/appimage/Jan.AppDir + LIB_DIR=$APP_DIR/usr/lib/Jan/binaries +fi + +# bundle additional resources in the AppDir without pulling in their dependencies +cp ./src-tauri/resources/bin/bun $APP_DIR/usr/bin/bun +mkdir -p $LIB_DIR/engines +cp -f ./src-tauri/binaries/deps/*.so* $LIB_DIR/ +cp -f ./src-tauri/binaries/*.so* $LIB_DIR/ +cp -rf ./src-tauri/binaries/engines $LIB_DIR/ + +# remove appimage generated by tauri build +APP_IMAGE=./src-tauri/target/release/bundle/appimage/$(ls ./src-tauri/target/release/bundle/appimage/ | grep AppImage | head -1) +echo $APP_IMAGE +rm -f $APP_IMAGE + +# repackage appimage with additional resources +"${APPIMAGETOOL}" $APP_DIR $APP_IMAGE \ No newline at end of file From a668204cdcc09b9d58a6864d0f9a60b724933f1b Mon Sep 17 00:00:00 2001 From: "D. Rect." <48034372+DistractionRectangle@users.noreply.github.com> Date: Tue, 8 Jul 2025 16:05:20 +0000 Subject: [PATCH 3/3] refactor: pin linuxdeploy in make/yarn build process instead of github workflow - pulls fix for #5463 out of the github release workflow and into the make/yarn build process - implements a wrapper script that pins linuxdeploy and injects a new location for XDG_CACHE_HOME into the build pipeline, allowing manipulating .cache/tauri without tainting the hosts .cache - adds ./.cache (project_root/.cache) to make clean and mise clean task - remove .devcontainer/buildAppImage.sh, obsolete now that extra build steps have been removed from the github workflow and incorporated in the normal build process - remove appimagetool from .devcontainer/postCreateCommand.sh, as it was only used by .devcontainer/buildAppImage.sh --- .devcontainer/buildAppImage.sh | 24 --------------- .devcontainer/postCreateCommand.sh | 4 --- .../template-tauri-build-linux-x64.yml | 6 ---- Makefile | 1 + mise.toml | 1 + package.json | 2 +- src-tauri/build-utils/shim-linuxdeploy.sh | 30 +++++++++++++++++++ 7 files changed, 33 insertions(+), 35 deletions(-) delete mode 100644 .devcontainer/buildAppImage.sh create mode 100755 src-tauri/build-utils/shim-linuxdeploy.sh diff --git a/.devcontainer/buildAppImage.sh b/.devcontainer/buildAppImage.sh deleted file mode 100644 index efb963d5a..000000000 --- a/.devcontainer/buildAppImage.sh +++ /dev/null @@ -1,24 +0,0 @@ -#!/usr/bin/env bash - -make clean - -# To reproduce https://github.com/menloresearch/jan/pull/5463 -TAURI_TOOLKIT_PATH="${XDG_CACHE_HOME:-$HOME/.cache}/tauri" -mkdir -p "$TAURI_TOOLKIT_PATH" -wget https://github.com/linuxdeploy/linuxdeploy/releases/download/1-alpha-20250213-2/linuxdeploy-x86_64.AppImage -O "$TAURI_TOOLKIT_PATH/linuxdeploy-x86_64.AppImage" -chmod +x "$TAURI_TOOLKIT_PATH/linuxdeploy-x86_64.AppImage" - -jq '.bundle.resources = ["resources/pre-install/**/*"] | .bundle.externalBin = ["binaries/cortex-server", "resources/bin/uv"]' ./src-tauri/tauri.conf.json > /tmp/tauri.conf.json -mv /tmp/tauri.conf.json ./src-tauri/tauri.conf.json - -make build-tauri - -cp ./src-tauri/resources/bin/bun ./src-tauri/target/release/bundle/appimage/Jan.AppDir/usr/bin/bun -mkdir -p ./src-tauri/target/release/bundle/appimage/Jan.AppDir/usr/lib/Jan/binaries/engines -cp -f ./src-tauri/binaries/deps/*.so* ./src-tauri/target/release/bundle/appimage/Jan.AppDir/usr/lib/Jan/binaries/ -cp -f ./src-tauri/binaries/*.so* ./src-tauri/target/release/bundle/appimage/Jan.AppDir/usr/lib/Jan/binaries/ -cp -rf ./src-tauri/binaries/engines ./src-tauri/target/release/bundle/appimage/Jan.AppDir/usr/lib/Jan/binaries/ -APP_IMAGE=./src-tauri/target/release/bundle/appimage/$(ls ./src-tauri/target/release/bundle/appimage/ | grep AppImage | head -1) -echo $APP_IMAGE -rm -f $APP_IMAGE -/opt/bin/appimagetool ./src-tauri/target/release/bundle/appimage/Jan.AppDir $APP_IMAGE \ No newline at end of file diff --git a/.devcontainer/postCreateCommand.sh b/.devcontainer/postCreateCommand.sh index 79fb4de1c..a9a1277b8 100755 --- a/.devcontainer/postCreateCommand.sh +++ b/.devcontainer/postCreateCommand.sh @@ -14,7 +14,3 @@ sudo apt install -yqq libwebkit2gtk-4.1-dev \ librsvg2-dev \ xdg-utils \ libfuse2 - -sudo mkdir -p /opt/bin -sudo wget https://github.com/AppImage/AppImageKit/releases/download/continuous/appimagetool-x86_64.AppImage -O /opt/bin/appimagetool -sudo chmod +x /opt/bin/appimagetool \ No newline at end of file diff --git a/.github/workflows/template-tauri-build-linux-x64.yml b/.github/workflows/template-tauri-build-linux-x64.yml index 7ef9c88b1..b07faa0bc 100644 --- a/.github/workflows/template-tauri-build-linux-x64.yml +++ b/.github/workflows/template-tauri-build-linux-x64.yml @@ -145,12 +145,6 @@ jobs: fi - name: Build app run: | - # Pin linuxdeploy version to prevent @tauri-apps/cli-linux-x64-gnu from pulling in an outdated version - TAURI_TOOLKIT_PATH="${XDG_CACHE_HOME:-$HOME/.cache}/tauri" - mkdir -p "$TAURI_TOOLKIT_PATH" - wget https://github.com/linuxdeploy/linuxdeploy/releases/download/1-alpha-20250213-2/linuxdeploy-x86_64.AppImage -O "$TAURI_TOOLKIT_PATH/linuxdeploy-x86_64.AppImage" - chmod +x "$TAURI_TOOLKIT_PATH/linuxdeploy-x86_64.AppImage" - make build-tauri APP_IMAGE=./src-tauri/target/release/bundle/appimage/$(ls ./src-tauri/target/release/bundle/appimage/ | grep AppImage | head -1) diff --git a/Makefile b/Makefile index 96a526342..5bd42c755 100644 --- a/Makefile +++ b/Makefile @@ -84,6 +84,7 @@ else ifeq ($(shell uname -s),Linux) rm -rf ./src-tauri/target rm -rf "~/jan/extensions" rm -rf "~/.cache/jan*" + rm -rf "./.cache" else find . -name "node_modules" -type d -prune -exec rm -rf '{}' + find . -name ".next" -type d -exec rm -rf '{}' + diff --git a/mise.toml b/mise.toml index 9f6cee5c7..86a90f742 100644 --- a/mise.toml +++ b/mise.toml @@ -164,6 +164,7 @@ elif [[ "$OSTYPE" == "linux-gnu"* ]]; then rm -rf ./src-tauri/target 2>/dev/null || true rm -rf ~/jan/extensions 2>/dev/null || true rm -rf "~/.cache/jan*" 2>/dev/null || true + rm -rf "./.cache" 2>/dev/null || true else # macOS cleanup (matches Makefile) find . -name "node_modules" -type d -prune -exec rm -rf '{}' + 2>/dev/null || true diff --git a/package.json b/package.json index c0b29b6a3..ce2e96117 100644 --- a/package.json +++ b/package.json @@ -34,7 +34,7 @@ "copy:lib:darwin": "mkdir -p \"./src-tauri/resources/lib/\"", "download:bin": "node ./scripts/download-bin.mjs", "build:tauri:win32": "yarn download:bin && yarn tauri build", - "build:tauri:linux": "yarn download:bin && yarn tauri build && ./src-tauri/build-utils/buildAppImage.sh", + "build:tauri:linux": "yarn download:bin && ./src-tauri/build-utils/shim-linuxdeploy.sh yarn tauri build && ./src-tauri/build-utils/buildAppImage.sh", "build:tauri:darwin": "yarn tauri build --target universal-apple-darwin", "build:tauri": "yarn install:cortex && yarn build:icon && yarn copy:assets:tauri && run-script-os", "build:icon": "tauri icon ./src-tauri/icons/icon.png", diff --git a/src-tauri/build-utils/shim-linuxdeploy.sh b/src-tauri/build-utils/shim-linuxdeploy.sh new file mode 100755 index 000000000..359ccd5ba --- /dev/null +++ b/src-tauri/build-utils/shim-linuxdeploy.sh @@ -0,0 +1,30 @@ +#!/usr/bin/env bash +set -euo pipefail + +# wrapper script to pin linuxdeploy version and inject environment variables into the +# build process. While yarn supports injecting environment vairables via env files, +# this applies to all yarn scripts. Using a wrapper allows granular control over +# when environment variables are injected, and avoids tainting the system .cache + +# avoid redownloading corepack if possible +export COREPACK_HOME=${COREPACK_HOME:-${XDG_CACHE_HOME:-$HOME/.cache}/node/corepack} +# move cache home to /.cache +export XDG_CACHE_HOME=${PWD}/.cache + +LINUXDEPLOY_VER="1-alpha-20250213-2" +LINUXDEPLOY="$XDG_CACHE_HOME/tauri/linuxdeploy-$LINUXDEPLOY_VER-x86_64.AppImage" +SYMLINK="$XDG_CACHE_HOME/tauri/linuxdeploy-x86_64.AppImage" + +mkdir -p "$XDG_CACHE_HOME/tauri" + +if [ ! -f "$LINUXDEPLOY" ]; then + GLOB_PATTERN="$XDG_CACHE_HOME/tauri/linuxdeploy-*-x86_64.AppImage" + rm -f $GLOB_PATTERN + wget "https://github.com/linuxdeploy/linuxdeploy/releases/download/$LINUXDEPLOY_VER/linuxdeploy-x86_64.AppImage" -O "$LINUXDEPLOY" + chmod a+x "$LINUXDEPLOY" +fi + +rm -f "$SYMLINK" +ln -s "$LINUXDEPLOY" "$SYMLINK" + +"$@" \ No newline at end of file