From 1ea5ea8a022d14dc93e7f4c1d97b8f3462908e6b Mon Sep 17 00:00:00 2001 From: Lieven Hey Date: Tue, 23 Jan 2024 11:00:03 +0100 Subject: [PATCH] build appimage with static runtime This allows the user to run the appimage on non fuse2 systems (all moderns systems use fuse3). This is achieved by using the static appimage runtime. Since linuxdeploy doesn't support changing the runtime I only use it to create the appdir directory. Then I use the original appimagetool to package the appimage using the static runtime. This should also make it possible to run the appimage on a non glibc system but I don't have access to one so I can't test it. fixes: #485 --- scripts/appimage/Dockerfile | 6 ++++++ scripts/appimage/build_appimage.sh | 4 ++++ 2 files changed, 10 insertions(+) diff --git a/scripts/appimage/Dockerfile b/scripts/appimage/Dockerfile index 4d550519a..b1839ff18 100644 --- a/scripts/appimage/Dockerfile +++ b/scripts/appimage/Dockerfile @@ -127,6 +127,12 @@ RUN cd /opt && git clone --recursive https://github.com/KDAB/KDDockWidgets.git - cd KDDockWidgets && mkdir build && cd build && cmake -DCMAKE_INSTALL_PREFIX=/usr -DKDDockWidgets_EXAMPLES=0 -DKDDockWidgets_FRONTENDS="qtwidgets" .. && \ make -j && make install && cd /opt && rm -Rf KDDockWidgets +RUN wget https://github.com/AppImage/type2-runtime/releases/download/continuous/runtime-x86_64 && \ + wget https://github.com/AppImage/appimagetool/releases/download/continuous/appimagetool-x86_64.AppImage && \ + chmod +x appimagetool-x86_64.AppImage && mv appimagetool-x86_64.AppImage /usr/bin/ && \ + mv runtime-x86_64 /opt/ && \ + yum install -y desktop-file-utils + FROM intermediate WORKDIR / diff --git a/scripts/appimage/build_appimage.sh b/scripts/appimage/build_appimage.sh index 922d7818b..a1696b5b3 100755 --- a/scripts/appimage/build_appimage.sh +++ b/scripts/appimage/build_appimage.sh @@ -74,4 +74,8 @@ linuxdeploy-x86_64.AppImage --appdir appdir --plugin qt \ -d "./appdir/usr/share/applications/com.kdab.hotspot.desktop" \ --output appimage +# package appdir with type 2 runtime so we don't depend on glibc and fuse2 +appimagetool-x86_64.AppImage --runtime-file /opt/runtime-x86_64 appdir + +mv Hotspot-x86_64.AppImage "/output/hotspot-static-$gitversion-x86_64.AppImage" mv Hotspot*x86_64.AppImage "/output/hotspot-$gitversion-x86_64.AppImage"