diff --git a/.gitea/workflows/release.yml b/.gitea/workflows/release.yml index d4506d2..689d6f1 100644 --- a/.gitea/workflows/release.yml +++ b/.gitea/workflows/release.yml @@ -181,8 +181,12 @@ jobs: -O /tmp/linuxdeploy.AppImage chmod +x /tmp/linuxdeploy.AppImage - (cd /tmp && /tmp/linuxdeploy.AppImage --appimage-extract) - mv /tmp/squashfs-root /tmp/linuxdeploy-root + rm -rf /root/linuxdeploy-root + (cd /root && /tmp/linuxdeploy.AppImage --appimage-extract) + mv /root/squashfs-root /root/linuxdeploy-root + echo "Extracted linuxdeploy:" + ls /root/linuxdeploy-root/ + ls /root/linuxdeploy-root/usr/bin/ 2>/dev/null || echo "no usr/bin" gcc -o ~/.cache/tauri/linuxdeploy-x86_64.AppImage tools/ld_wrapper.c chmod +x ~/.cache/tauri/linuxdeploy-x86_64.AppImage @@ -192,6 +196,7 @@ jobs: TAURI_SIGNING_PRIVATE_KEY: ${{ secrets.TAURI_SIGNING_PRIVATE_KEY }} TAURI_SIGNING_PRIVATE_KEY_PASSWORD: '' NODE_OPTIONS: '--max_old_space_size=4096' + RUST_LOG: tauri_bundler=debug run: npm run tauri -- build --bundles appimage,deb - name: Upload to release diff --git a/tools/ld_wrapper.c b/tools/ld_wrapper.c index 083bc1b..56bb0fb 100644 --- a/tools/ld_wrapper.c +++ b/tools/ld_wrapper.c @@ -1,5 +1,37 @@ #include +#include +#include +#include +#include + int main(int argc, char **argv) { - execv("/tmp/linuxdeploy-root/AppRun", argv); + const char *appdir = "/root/linuxdeploy-root"; + char apprun[256], ldbin[256], new_path[4096]; + struct stat st; + + snprintf(apprun, sizeof(apprun), "%s/AppRun", appdir); + snprintf(ldbin, sizeof(ldbin), "%s/usr/bin/linuxdeploy", appdir); + + fprintf(stderr, "[ld-wrapper] APPDIR=%s\n", appdir); + fprintf(stderr, "[ld-wrapper] AppRun exists: %s\n", stat(apprun, &st) == 0 ? "yes" : "NO"); + fprintf(stderr, "[ld-wrapper] linuxdeploy exists: %s\n", stat(ldbin, &st) == 0 ? "yes" : "NO"); + fflush(stderr); + + setenv("APPDIR", appdir, 1); + char *old_path = getenv("PATH"); + snprintf(new_path, sizeof(new_path), "%s/usr/bin:%s", appdir, old_path ? old_path : ""); + setenv("PATH", new_path, 1); + + if (stat(ldbin, &st) == 0) { + fprintf(stderr, "[ld-wrapper] exec %s\n", ldbin); + fflush(stderr); + execv(ldbin, argv); + perror("[ld-wrapper] execv linuxdeploy"); + } + + fprintf(stderr, "[ld-wrapper] fallback exec %s\n", apprun); + fflush(stderr); + execv(apprun, argv); + perror("[ld-wrapper] execv AppRun"); return 1; }