From 2a27d2a54c8e76c0cb8ba2e142470f5f3fc39e18 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 | 9 +++++++-- scripts/appimage/build_appimage.sh | 5 ++++- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/scripts/appimage/Dockerfile b/scripts/appimage/Dockerfile index 4d550519a..514583fc6 100644 --- a/scripts/appimage/Dockerfile +++ b/scripts/appimage/Dockerfile @@ -43,7 +43,7 @@ RUN sed -i 's#enabled=1#enabled=0#' /etc/yum/pluginconf.d/fastestmirror.conf && # kgraphviewer boost boost-devel graphviz-devel \ # appimages - fuse fuse-libs bzip2 && \ + fuse fuse-libs bzip2 desktop-file-utils && \ ln -s /usr/bin/cmake3 /usr/bin/cmake && \ rm -Rf /var/cache/yum && \ . /opt/rh/devtoolset-11/enable @@ -66,7 +66,12 @@ RUN wget https://download.qt.io/official_releases/qt/5.15/${QT_VERSION}/single/q # appimage build tools RUN wget https://github.com/linuxdeploy/linuxdeploy/releases/download/1-alpha-20230713-1/linuxdeploy-x86_64.AppImage && chmod +x linuxdeploy-x86_64.AppImage && \ - wget https://github.com/linuxdeploy/linuxdeploy-plugin-qt/releases/download/continuous/linuxdeploy-plugin-qt-x86_64.AppImage && chmod +x linuxdeploy-plugin-qt-x86_64.AppImage && mv linuxdeploy* /usr/bin/ + wget https://github.com/linuxdeploy/linuxdeploy-plugin-qt/releases/download/continuous/linuxdeploy-plugin-qt-x86_64.AppImage && chmod +x linuxdeploy-plugin-qt-x86_64.AppImage && mv linuxdeploy* /usr/bin/ && \ + 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/ + # qcustomplot RUN cd /opt && mkdir qcustomplot && cd qcustomplot && \ 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"