From 34dab17999b2f8f8d049ea43b63e5795ba399715 Mon Sep 17 00:00:00 2001 From: deepend-tildeclub <58404188+deepend-tildeclub@users.noreply.github.com> Date: Mon, 12 Jan 2026 23:05:11 -0700 Subject: [PATCH 1/5] Rename workflow for AppImage build --- .../.github/workflows/appimage-build.yml | 77 +++++++++++++++++++ 1 file changed, 77 insertions(+) create mode 100644 .github/workflows/.github/workflows/appimage-build.yml diff --git a/.github/workflows/.github/workflows/appimage-build.yml b/.github/workflows/.github/workflows/appimage-build.yml new file mode 100644 index 00000000..c40155ae --- /dev/null +++ b/.github/workflows/.github/workflows/appimage-build.yml @@ -0,0 +1,77 @@ +name: ZoiteChat AppImage Build + +on: + push: + branches: [master] + pull_request: + branches: [master] + +jobs: + appimage_build: + runs-on: ubuntu-24.04 + + steps: + - uses: actions/checkout@v4 + with: + submodules: true + + - name: Install build dependencies + run: | + set -eux + sudo apt-get update + sudo apt-get install -y --no-install-recommends \ + build-essential pkg-config meson ninja-build cmake \ + gettext \ + libcanberra-dev libdbus-glib-1-dev libglib2.0-dev libgtk2.0-dev \ + libluajit-5.1-dev libpci-dev libperl-dev libssl-dev \ + python3-dev python3-cffi mono-devel desktop-file-utils \ + patchelf file curl + + - name: Configure + run: | + set -eux + rm -rf build + meson setup build \ + --prefix=/usr \ + -Dtext-frontend=true \ + -Dtheme-manager=true \ + -Dauto_features=enabled + + - name: Build + run: | + set -eux + ninja -C build + + - name: Install to AppDir + run: | + set -eux + rm -rf AppDir + DESTDIR="${PWD}/AppDir" ninja -C build install + + - name: Build AppImage + env: + APPIMAGE_EXTRACT_AND_RUN: 1 + run: | + set -eux + curl -L -o linuxdeploy-x86_64.AppImage \ + https://github.com/linuxdeploy/linuxdeploy/releases/download/continuous/linuxdeploy-x86_64.AppImage + curl -L -o linuxdeploy-plugin-gtk-x86_64.AppImage \ + https://github.com/linuxdeploy/linuxdeploy-plugin-gtk/releases/download/continuous/linuxdeploy-plugin-gtk-x86_64.AppImage + chmod +x linuxdeploy-x86_64.AppImage linuxdeploy-plugin-gtk-x86_64.AppImage + + VERSION="$(git describe --tags --always)" + ./linuxdeploy-x86_64.AppImage \ + --appdir AppDir \ + --desktop-file AppDir/usr/share/applications/io.github.Zoitechat.desktop \ + --icon-file AppDir/usr/share/icons/hicolor/48x48/apps/io.github.Zoitechat.png \ + --plugin gtk \ + --output appimage + + appimage_path=$(ls -1 *.AppImage | grep -v linuxdeploy | head -n 1) + mv "$appimage_path" "Zoitechat-${VERSION}-x86_64.AppImage" + + - name: Upload AppImage artifact + uses: actions/upload-artifact@v4 + with: + name: zoitechat-appimage + path: Zoitechat-*-x86_64.AppImage From 9307b667116eea70e4f53964c7abba64de7c4d8d Mon Sep 17 00:00:00 2001 From: deepend-tildeclub <58404188+deepend-tildeclub@users.noreply.github.com> Date: Mon, 12 Jan 2026 23:05:50 -0700 Subject: [PATCH 2/5] Rename .github/workflows/.github/workflows/appimage-build.yml to .github/workflows/appimage-build.yml --- .github/workflows/{.github/workflows => }/appimage-build.yml | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename .github/workflows/{.github/workflows => }/appimage-build.yml (100%) diff --git a/.github/workflows/.github/workflows/appimage-build.yml b/.github/workflows/appimage-build.yml similarity index 100% rename from .github/workflows/.github/workflows/appimage-build.yml rename to .github/workflows/appimage-build.yml From d6c4d36b019694d30a28b84323e702a45956f360 Mon Sep 17 00:00:00 2001 From: deepend-tildeclub <58404188+deepend-tildeclub@users.noreply.github.com> Date: Mon, 12 Jan 2026 23:40:41 -0700 Subject: [PATCH 3/5] Update AppImage build workflow for GTK version and dependencies --- .github/workflows/appimage-build.yml | 24 ++++++++++++++++++------ 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/.github/workflows/appimage-build.yml b/.github/workflows/appimage-build.yml index c40155ae..f118d165 100644 --- a/.github/workflows/appimage-build.yml +++ b/.github/workflows/appimage-build.yml @@ -22,7 +22,9 @@ jobs: sudo apt-get install -y --no-install-recommends \ build-essential pkg-config meson ninja-build cmake \ gettext \ - libcanberra-dev libdbus-glib-1-dev libglib2.0-dev libgtk2.0-dev \ + libcanberra-dev libdbus-glib-1-dev libglib2.0-dev \ + libgtk2.0-dev libgtk-3-dev \ + libgtk-3-bin libglib2.0-bin shared-mime-info gsettings-desktop-schemas \ libluajit-5.1-dev libpci-dev libperl-dev libssl-dev \ python3-dev python3-cffi mono-devel desktop-file-utils \ patchelf file curl @@ -51,15 +53,25 @@ jobs: - name: Build AppImage env: APPIMAGE_EXTRACT_AND_RUN: 1 + DEPLOY_GTK_VERSION: 3 run: | set -eux - curl -L -o linuxdeploy-x86_64.AppImage \ + + # linuxdeploy (AppImage) + curl -fL --retry 3 -o linuxdeploy-x86_64.AppImage \ https://github.com/linuxdeploy/linuxdeploy/releases/download/continuous/linuxdeploy-x86_64.AppImage - curl -L -o linuxdeploy-plugin-gtk-x86_64.AppImage \ - https://github.com/linuxdeploy/linuxdeploy-plugin-gtk/releases/download/continuous/linuxdeploy-plugin-gtk-x86_64.AppImage - chmod +x linuxdeploy-x86_64.AppImage linuxdeploy-plugin-gtk-x86_64.AppImage + chmod +x linuxdeploy-x86_64.AppImage + + # linuxdeploy-plugin-gtk (NO releases; use the maintained plugin script) + curl -fL --retry 3 -o linuxdeploy-plugin-gtk \ + https://raw.githubusercontent.com/linuxdeploy/linuxdeploy-plugin-gtk/master/linuxdeploy-plugin-gtk.sh + chmod +x linuxdeploy-plugin-gtk + + # Make the plugin discoverable for --plugin gtk + export PATH="${PWD}:${PATH}" VERSION="$(git describe --tags --always)" + ./linuxdeploy-x86_64.AppImage \ --appdir AppDir \ --desktop-file AppDir/usr/share/applications/io.github.Zoitechat.desktop \ @@ -67,7 +79,7 @@ jobs: --plugin gtk \ --output appimage - appimage_path=$(ls -1 *.AppImage | grep -v linuxdeploy | head -n 1) + appimage_path="$(ls -1 *.AppImage | grep -v linuxdeploy | head -n 1)" mv "$appimage_path" "Zoitechat-${VERSION}-x86_64.AppImage" - name: Upload AppImage artifact From 29d8326d1a1bf1bae20a9afce4f59c7b474ddbf8 Mon Sep 17 00:00:00 2001 From: deepend-tildeclub <58404188+deepend-tildeclub@users.noreply.github.com> Date: Mon, 12 Jan 2026 23:53:30 -0700 Subject: [PATCH 4/5] Add LDAI_NO_APPSTREAM environment variable --- .github/workflows/appimage-build.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/appimage-build.yml b/.github/workflows/appimage-build.yml index f118d165..222e7564 100644 --- a/.github/workflows/appimage-build.yml +++ b/.github/workflows/appimage-build.yml @@ -54,6 +54,7 @@ jobs: env: APPIMAGE_EXTRACT_AND_RUN: 1 DEPLOY_GTK_VERSION: 3 + LDAI_NO_APPSTREAM: 1 run: | set -eux From 6b105133ec5a100d2c48c9365430b4d2d0d2679f Mon Sep 17 00:00:00 2001 From: deepend-tildeclub <58404188+deepend-tildeclub@users.noreply.github.com> Date: Tue, 13 Jan 2026 00:03:02 -0700 Subject: [PATCH 5/5] Implement custom AppRun for AppImage packaging Added custom AppRun script for AppImage to handle runtime paths and SSL certificate overrides. --- .github/workflows/appimage-build.yml | 39 +++++++++++++++++++++++++--- 1 file changed, 35 insertions(+), 4 deletions(-) diff --git a/.github/workflows/appimage-build.yml b/.github/workflows/appimage-build.yml index 222e7564..f36a14d4 100644 --- a/.github/workflows/appimage-build.yml +++ b/.github/workflows/appimage-build.yml @@ -58,25 +58,56 @@ jobs: run: | set -eux - # linuxdeploy (AppImage) curl -fL --retry 3 -o linuxdeploy-x86_64.AppImage \ https://github.com/linuxdeploy/linuxdeploy/releases/download/continuous/linuxdeploy-x86_64.AppImage chmod +x linuxdeploy-x86_64.AppImage - # linuxdeploy-plugin-gtk (NO releases; use the maintained plugin script) curl -fL --retry 3 -o linuxdeploy-plugin-gtk \ https://raw.githubusercontent.com/linuxdeploy/linuxdeploy-plugin-gtk/master/linuxdeploy-plugin-gtk.sh chmod +x linuxdeploy-plugin-gtk - - # Make the plugin discoverable for --plugin gtk export PATH="${PWD}:${PATH}" + # Bundle CA certificates into the AppDir + install -Dm644 /etc/ssl/certs/ca-certificates.crt \ + AppDir/etc/ssl/certs/ca-certificates.crt + + # Custom AppRun: preserve typical AppDir runtime paths AND force CA bundle + cat > AppRun <<'EOF' + #!/bin/sh + set -eu + + APPDIR="${APPDIR:-$(dirname "$(readlink -f "$0")")}" + + export PATH="$APPDIR/usr/bin:${PATH:-/usr/bin:/bin}" + export LD_LIBRARY_PATH="$APPDIR/usr/lib:$APPDIR/usr/lib/x86_64-linux-gnu:${LD_LIBRARY_PATH:-}" + export XDG_DATA_DIRS="$APPDIR/usr/share:${XDG_DATA_DIRS:-/usr/local/share:/usr/share}" + + if [ -d "$APPDIR/usr/share/glib-2.0/schemas" ]; then + export GSETTINGS_SCHEMA_DIR="$APPDIR/usr/share/glib-2.0/schemas${GSETTINGS_SCHEMA_DIR:+:$GSETTINGS_SCHEMA_DIR}" + fi + + if [ -d "$APPDIR/usr/lib/x86_64-linux-gnu/gio/modules" ]; then + export GIO_EXTRA_MODULES="$APPDIR/usr/lib/x86_64-linux-gnu/gio/modules${GIO_EXTRA_MODULES:+:$GIO_EXTRA_MODULES}" + elif [ -d "$APPDIR/usr/lib/gio/modules" ]; then + export GIO_EXTRA_MODULES="$APPDIR/usr/lib/gio/modules${GIO_EXTRA_MODULES:+:$GIO_EXTRA_MODULES}" + fi + + # OpenSSL trust store override (fixes “unable to get local issuer certificate (20)”) + export SSL_CERT_FILE="${SSL_CERT_FILE:-$APPDIR/etc/ssl/certs/ca-certificates.crt}" + export SSL_CERT_DIR="${SSL_CERT_DIR:-$APPDIR/etc/ssl/certs}" + export CURL_CA_BUNDLE="${CURL_CA_BUNDLE:-$SSL_CERT_FILE}" + + exec "$APPDIR/usr/bin/zoitechat" "$@" + EOF + chmod +x AppRun + VERSION="$(git describe --tags --always)" ./linuxdeploy-x86_64.AppImage \ --appdir AppDir \ --desktop-file AppDir/usr/share/applications/io.github.Zoitechat.desktop \ --icon-file AppDir/usr/share/icons/hicolor/48x48/apps/io.github.Zoitechat.png \ + --custom-apprun ./AppRun \ --plugin gtk \ --output appimage