From f350e4f967d6dca3331b7c4fa2ee2b4a60ec86d2 Mon Sep 17 00:00:00 2001 From: Samuel <36420837+Samueru-sama@users.noreply.github.com> Date: Fri, 19 Jul 2024 16:30:20 -0400 Subject: [PATCH 1/5] CI/AppImage: Make anylinux appimage Uses go-appimage to make an appimage with bundled glibc, which increases the compatibility of the appimage to any linux distribution. --- .github/workflows/release.yml | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index b483e3af0..295b73228 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -203,8 +203,17 @@ jobs: --appdir "$APP.AppDir" -d contrib/Helix.desktop \ -i contrib/helix.png --output appimage - mv "$APP-$VERSION-$ARCH.AppImage" \ - "$APP-$VERSION-$ARCH.AppImage.zsync" dist + # anylinux appimage + APPIMAGETOOL=$(wget -q https://api.github.com/repos/probonopd/go-appimage/releases -O - \ + | sed 's/[()",{} ]/\n/g' | grep -oi 'https.*continuous.*tool.*86_64.*mage$') + wget -q "$APPIMAGETOOL" -O ./appimagetool + chmod +x ./appimagetool + "$APP-$VERSION-$ARCH.AppImage" --appimage-extract + ./appimagetool -s deploy squashfs-root/usr/share/applications/Helix.desktop + ARCH=x86_64 VERSION="$VERSION-anylinux" ./appimagetool -s squashfs-root + mv *anylinux*AppImage dist + mv "$APP"-*-"$ARCH.AppImage".AppImage \ + "$APP"-*-"$ARCH.AppImage".AppImage.zsync dist - name: Build archive shell: bash From 073153abcff57f1d9ecfc27d53ff8da6f0841067 Mon Sep 17 00:00:00 2001 From: Samuel <36420837+Samueru-sama@users.noreply.github.com> Date: Sun, 21 Jul 2024 17:17:27 -0400 Subject: [PATCH 2/5] CI/AppImage: Fix error in --appimage-extract --- .github/workflows/release.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 295b73228..7e04ab759 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -207,8 +207,8 @@ jobs: APPIMAGETOOL=$(wget -q https://api.github.com/repos/probonopd/go-appimage/releases -O - \ | sed 's/[()",{} ]/\n/g' | grep -oi 'https.*continuous.*tool.*86_64.*mage$') wget -q "$APPIMAGETOOL" -O ./appimagetool - chmod +x ./appimagetool - "$APP-$VERSION-$ARCH.AppImage" --appimage-extract + chmod +x ./appimagetool ./*AppImage + ./"$APP-$VERSION-$ARCH.AppImage" --appimage-extract ./appimagetool -s deploy squashfs-root/usr/share/applications/Helix.desktop ARCH=x86_64 VERSION="$VERSION-anylinux" ./appimagetool -s squashfs-root mv *anylinux*AppImage dist From 743f2bccd6a0a5aaf431a2c5c5d65e4e02228be3 Mon Sep 17 00:00:00 2001 From: Samuel <36420837+Samueru-sama@users.noreply.github.com> Date: Sun, 21 Jul 2024 18:52:21 -0400 Subject: [PATCH 3/5] CI/AppImage: Fix mistake in mv --- .github/workflows/release.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 7e04ab759..3b9467e63 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -212,8 +212,8 @@ jobs: ./appimagetool -s deploy squashfs-root/usr/share/applications/Helix.desktop ARCH=x86_64 VERSION="$VERSION-anylinux" ./appimagetool -s squashfs-root mv *anylinux*AppImage dist - mv "$APP"-*-"$ARCH.AppImage".AppImage \ - "$APP"-*-"$ARCH.AppImage".AppImage.zsync dist + mv "$APP"-*-"$ARCH".AppImage \ + "$APP"-*-"$ARCH".AppImage.zsync dist - name: Build archive shell: bash From 17d0227d74fec47575ff740ec4c21210ea9c4c6a Mon Sep 17 00:00:00 2001 From: Samuel <36420837+Samueru-sama@users.noreply.github.com> Date: Mon, 22 Jul 2024 18:32:35 -0400 Subject: [PATCH 4/5] CI/AppImage: Set `$HELIX_RUNTIME` env variable Go-appimagetool replaces the existing AppRun, as result the env variable from the original appimage was missing. --- .github/workflows/release.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 3b9467e63..05cf67a46 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -210,6 +210,7 @@ jobs: chmod +x ./appimagetool ./*AppImage ./"$APP-$VERSION-$ARCH.AppImage" --appimage-extract ./appimagetool -s deploy squashfs-root/usr/share/applications/Helix.desktop + sed -i '13i\export HELIX_RUNTIME="${HERE}"/usr/lib/helix/runtime' squashfs-root/AppRun ARCH=x86_64 VERSION="$VERSION-anylinux" ./appimagetool -s squashfs-root mv *anylinux*AppImage dist mv "$APP"-*-"$ARCH".AppImage \ From a6d7fc6cdc5212790fcf0d2a8d6d07ad58e409a2 Mon Sep 17 00:00:00 2001 From: Samuel <36420837+Samueru-sama@users.noreply.github.com> Date: Fri, 1 Nov 2024 11:21:23 -0400 Subject: [PATCH 5/5] CI/AppImage: deploy all dependencies manually --- .github/workflows/release.yml | 47 ++++++++++++++++++----------------- 1 file changed, 24 insertions(+), 23 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 05cf67a46..f0424af7b 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -162,9 +162,9 @@ jobs: shell: bash if: matrix.build == 'x86_64-linux' run: | - # Required as of 22.x https://github.com/AppImage/AppImageKit/wiki/FUSE + export APPIMAGE_EXTRACT_AND_RUN=1 sudo add-apt-repository universe - sudo apt install libfuse2 + sudo apt install desktop-file-utils zsync mkdir dist @@ -187,34 +187,35 @@ jobs: rm -rf runtime/grammars/sources cp -r runtime "$APP.AppDir/usr/lib/helix/runtime" + # Bundle libc and all dependencies + ldd "$APP.AppDir"/usr/bin/hx | awk -F"[> ]" '{print $4}' \ + | xargs -I {} cp -vf {} "$APP.AppDir"/usr/lib + cp -v /lib64/ld-linux-x86-64.so.2 "$APP.AppDir" + rm -f "$APP.AppDir"/usr/lib/ld-linux-x86-64.so.2 2>/dev/null || true + cat << 'EOF' > "$APP.AppDir/AppRun" #!/bin/sh - APPDIR="$(dirname "$(readlink -f "${0}")")" - HELIX_RUNTIME="$APPDIR/usr/lib/helix/runtime" exec "$APPDIR/usr/bin/hx" "$@" + unset ARGV0 + export HELIX_RUNTIME="$APPDIR/usr/lib/helix/runtime" + exec "$APPDIR/ld-linux-x86-64.so.2" \ + --library-path "$APPDIR/usr/lib" "$APPDIR/usr/bin/hx" "$@" EOF chmod 755 "$APP.AppDir/AppRun" - curl -Lo linuxdeploy-x86_64.AppImage \ - https://github.com/linuxdeploy/linuxdeploy/releases/download/continuous/linuxdeploy-x86_64.AppImage - chmod +x linuxdeploy-x86_64.AppImage + cp contrib/Helix.desktop "$APP.AppDir" + cp contrib/helix.png "$APP.AppDir" + ln -s helix.png "$APP.AppDir"/.DirIcon - ./linuxdeploy-x86_64.AppImage \ - --appdir "$APP.AppDir" -d contrib/Helix.desktop \ - -i contrib/helix.png --output appimage + curl -Lo appimagetool \ + "https://github.com/AppImage/appimagetool/releases/download/continuous/appimagetool-x86_64.AppImage" + chmod +x appimagetool - # anylinux appimage - APPIMAGETOOL=$(wget -q https://api.github.com/repos/probonopd/go-appimage/releases -O - \ - | sed 's/[()",{} ]/\n/g' | grep -oi 'https.*continuous.*tool.*86_64.*mage$') - wget -q "$APPIMAGETOOL" -O ./appimagetool - chmod +x ./appimagetool ./*AppImage - ./"$APP-$VERSION-$ARCH.AppImage" --appimage-extract - ./appimagetool -s deploy squashfs-root/usr/share/applications/Helix.desktop - sed -i '13i\export HELIX_RUNTIME="${HERE}"/usr/lib/helix/runtime' squashfs-root/AppRun - ARCH=x86_64 VERSION="$VERSION-anylinux" ./appimagetool -s squashfs-root - mv *anylinux*AppImage dist - mv "$APP"-*-"$ARCH".AppImage \ - "$APP"-*-"$ARCH".AppImage.zsync dist + ./appimagetool -n -u "$UPDATE_INFORMATION" ./"$APP.AppDir" \ + ./"$APP-$VERSION-$ARCH.AppImage" + + mv "$APP-$VERSION-$ARCH.AppImage" \ + "$APP-$VERSION-$ARCH.AppImage.zsync" dist - name: Build archive shell: bash @@ -296,7 +297,7 @@ jobs: file_glob: true tag: ${{ github.ref_name }} overwrite: true - + - name: Upload binaries as artifact uses: actions/upload-artifact@v4 if: env.preview == 'true'