From cd4518d97394692a505a8bbe5e7cec509074d046 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 | 5 ++++- 2 files changed, 10 insertions(+), 1 deletion(-) 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..87ed8a2da 100755 --- a/scripts/appimage/build_appimage.sh +++ b/scripts/appimage/build_appimage.sh @@ -74,4 +74,7 @@ linuxdeploy-x86_64.AppImage --appdir appdir --plugin qt \ -d "./appdir/usr/share/applications/com.kdab.hotspot.desktop" \ --output appimage -mv Hotspot*x86_64.AppImage "/output/hotspot-$gitversion-x86_64.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-$gitversion-x86_64.AppImage"