From 9fc5c68c2b125e581f49eaaaef193a7ef5f54246 Mon Sep 17 00:00:00 2001 From: Antoine Lambert <antoine.lambert33@gmail.com> Date: Fri, 6 Oct 2023 18:44:11 +0200 Subject: [PATCH] Experiment with linuxdeployqt --- bundlers/linux/make_appimage_bundle.sh.in | 80 ++++------------------- 1 file changed, 11 insertions(+), 69 deletions(-) diff --git a/bundlers/linux/make_appimage_bundle.sh.in b/bundlers/linux/make_appimage_bundle.sh.in index 672993c43a..254bf3fabb 100644 --- a/bundlers/linux/make_appimage_bundle.sh.in +++ b/bundlers/linux/make_appimage_bundle.sh.in @@ -4,18 +4,13 @@ # talipot portable bundle (using AppImageKit) suitable to # run on most linux distributions +set -e + TALIPOT_INSTALL_DIR=@CMAKE_INSTALL_PREFIX@ OUTPUT_DIR=/tmp QMAKE=@QT_QMAKE_EXECUTABLE@ -centos7=true -if grep -q "CentOS Linux release 8" /etc/centos-release -then - centos7=false -fi - -usage() -{ +usage() { echo "Usage: $(basename $0) [OPTIONS]" cat <<EOF Options: @@ -64,14 +59,6 @@ echo "#!/bin/sh" > $APPRUN_FILE echo "BUNDLE_DIR=\"\$(dirname \$0)\"" >> $APPRUN_FILE echo "export PYTHONHOME=\${BUNDLE_DIR}/usr" >> $APPRUN_FILE echo "export TLP_DIR=\${BUNDLE_DIR}/usr/lib" >> $APPRUN_FILE -echo "export LD_LIBRARY_PATH=\${BUNDLE_DIR}/usr/lib" >> $APPRUN_FILE -if [ "$centos7" = true ] -then - # configure GDK2 for AppImage environment - # (needed for qt5 gtk3 platformthemes plugin) - echo "export GDK_PIXBUF_MODULE_FILE=\ -\${BUNDLE_DIR}/usr/lib/gdk-pixbuf-2.0/2.10.0/loaders.cache" >> $APPRUN_FILE -fi echo "\${BUNDLE_DIR}/usr/bin/talipot \$*" >> $APPRUN_FILE chmod 755 $APPRUN_FILE @@ -110,18 +97,7 @@ cp -Rp $TALIPOT_INSTALL_DIR/share $BUNDLE_USR_DIR mkdir $BUNDLE_USR_DIR/plugins cp -v -Rp @QT_PLUGINS_DIR@/imageformats $BUNDLE_USR_DIR/plugins cp -v -Rp @QT_PLUGINS_DIR@/platforms $BUNDLE_USR_DIR/plugins -if [ "$centos7" = true ] -then - cp -v -Rp @QT_PLUGINS_DIR@/platformthemes $BUNDLE_USR_DIR/plugins -fi cp -v -Rp @QT_PLUGINS_DIR@/xcbglintegrations $BUNDLE_USR_DIR/plugins - -if [ "$centos7" = true ] -then - # add gdk-2.0 plugins directory (needed for qt5 gtk3 platformthemes plugin) - cp -v -Rp /usr/lib64/gdk-pixbuf-2.0 $BUNDLE_LIB_DIR -fi - # copy graphviz plugins needed by talipot plugins wrapping graphviz layouts cp -v -Rp /usr/lib64/graphviz $BUNDLE_LIB_DIR/graphviz @@ -167,48 +143,22 @@ if [ "$PYTHON_LIB" != "" ]; then popd > /dev/null 2>&1 fi -function looking_for_plugin_dependencies() { - LIBS_DIR=$1 - for PLUGIN in $(find $LIBS_DIR -name "*.so") - do - echo "looking for $(basename $PLUGIN) dependencies" - for LIB in $(ldd $PLUGIN | grep "=> /" | awk '{print $3}') - do - if [ ! -e $BUNDLE_LIB_DIR/$(basename $LIB) ]; then - cp -v --preserve=mode $LIB $BUNDLE_LIB_DIR - fi - done - done -} - -# copy other common libs needed by talipot plugins -looking_for_plugin_dependencies $BUNDLE_LIB_DIR/talipot - -# copy other common libs needed by qt plugins -looking_for_plugin_dependencies $BUNDLE_USR_DIR/plugins - -# copy other common libs needed by graphviz plugins -looking_for_plugin_dependencies $BUNDLE_LIB_DIR/graphviz +# copy required shared libs using linuxdeployqt tool +wget "https://github.com/probonopd/linuxdeployqt/releases/download/\ +continuous/linuxdeployqt-continuous-x86_64.AppImage" +chmod a+x linuxdeployqt-continuous-x86_64.AppImage -# copy other common libs needed by python modules -looking_for_plugin_dependencies $PYTHON_PACKAGE_BUNDLE_DIR/lib-dynload +./linuxdeployqt-continuous-x86_64.AppImage --appimage-extract-and-run \ + $BUNDLE_BIN_DIR/talipot -bundle-non-qt-libs -no-translations pushd $BUNDLE_LIB_DIR > /dev/null 2>&1 + # remove unneeded libs LIBS=$(ls libc.* libdbus*.* libdl.* libdrm.* libexpat.* libEGL.* \ libfontconfig.* libfreetype.* libgio-*.* libglib-*.* libgmodule-*.* libgobject-*.* \ libgcc_s.* libGL.* libGLdispatch.* libharfbuzz.* libm.* libnsl.* libpthread.* libresolv.* \ librt.* libstdc++.* libutil.* libuuid.* libxcb*.* libX*.* libz.* 2> /dev/null) -if [ "$LIBS" != "" ]; then - rm $LIBS -fi - -if [ "$centos7" = false ] -then - # copy some missing libs - cp -v --preserve=mode $(/sbin/ldconfig -p | grep libxcb-xinput.so | \ - cut -d ">" -f 2 | xargs) . -fi +rm $LIBS popd > /dev/null 2>&1 @@ -219,11 +169,3 @@ pushd $BUNDLE_USR_DIR > /dev/null 2>&1 ln -s lib @CMAKE_INSTALL_LIBDIR@ 2>/dev/null popd > /dev/null 2>&1 - -# tweak OS/ABI header part of libraries (System V instead of Linux) -for LIB in $(find $BUNDLE_LIB_DIR -name '*.so*') -do - # LIB may be in read only mode, make it writable before stripping it - chmod +w $LIB - strip --strip-unneeded $LIB -done