@@ -6,10 +6,11 @@ sudo ()
66 " $@ "
77}
88
9+ sysroot_path=" $( pwd) /sysroot"
10+
911# Build
10- if [[ " $1 " != " 0" ]]; then
11- .ci/common/build.sh appimage_build linux || exit 1
12- fi
12+ PLATFORM=$1
13+ .ci/common/build.sh appimage_build $PLATFORM || exit 1
1314
1415repo_dir=$( pwd)
1516cd appimage_build
@@ -45,45 +46,53 @@ cmake .. &&
4546make -j$( nproc --all) &&
4647mv src/linuxdeploy-plugin-appimage ../.. &&
4748cd ../.. &&
48- rm -rf plugin-appimage &&
49-
50- # Build AppImageKit
51- sudo apt install -y snapd squashfs-tools &&
52- sudo snap install docker &&
53- git clone https://github.com/AppImage/AppImageKit --recurse-submodules &&
54- cd AppImageKit &&
55- sudo env ARCH=$( arch) bash ci/build.sh
56- sudo cp out/appimagetool /usr/bin/ &&
57- sudo cp out/digest /usr/bin/ &&
58- sudo cp out/validate /usr/bin/ &&
59- cd .. &&
60- sudo mkdir -p /usr/lib/appimagekit &&
61- sudo ln -s /usr/bin/mksquashfs /usr/lib/appimagekit/mksquashfs &&
49+ rm -rf plugin-appimage
6250
6351# Install patchelf from PyPI (see https://github.com/linuxdeploy/linuxdeploy-plugin-qt/issues/133#issuecomment-1608168363)
6452sudo apt install -y python3-pip
53+ python3 -m venv .venv
54+ source .venv/bin/activate
6555pip3 install patchelf
66- export PATH=$PATH :~ /.local/bin
56+ patchelf --version
57+
58+ # Use custom ldd and strip
59+ if [[ " $PLATFORM " == " linux_gcc_arm64" ]]; then
60+ ln -s /usr/bin/aarch64-linux-gnu-strip strip
61+ sudo cp ../.ci/bin/xldd /usr/bin/aarch64-linux-gnu-ldd
62+ ln -s /usr/bin/aarch64-linux-gnu-ldd ldd
63+ export CT_XLDD_ROOT=" $sysroot_path "
64+ fi
65+
66+ # Set LD_LIBRARY_PATH (directories with *.so files)
67+ LD_LIBRARY_PATH=" "
68+
69+ for file in $( find . -type f -name " *.so" ) ; do
70+ dir=$( dirname " $file " )
71+ if [[ " :$LD_LIBRARY_PATH :" != * " :$dir :" * ]]; then
72+ LD_LIBRARY_PATH=" $LD_LIBRARY_PATH :` readlink -f $dir ` "
73+ fi
74+ done
75+
76+ LD_LIBRARY_PATH=${LD_LIBRARY_PATH#: }
77+ export LD_LIBRARY_PATH
78+ echo " LD_LIBRARY_PATH set to: $LD_LIBRARY_PATH "
6779
6880# Build AppImage
81+ if [[ " $PLATFORM " == " linux_gcc_arm64" ]]; then
82+ # TODO: Do not use AppImageKit releases, they're obsolete
83+ wget https://github.com/AppImage/AppImageKit/releases/download/continuous/runtime-aarch64
84+ export ARCH=arm_aarch64
85+ APPIMAGE_ARCH=aarch64
86+ export LDAI_RUNTIME_FILE=runtime-aarch64
87+ else
88+ APPIMAGE_ARCH=x86_64
89+ fi
90+
6991export QML_SOURCES_PATHS=$( pwd) /src &&
70- export EXTRA_QT_PLUGINS= " svg;" &&
71- export LDAI_UPDATE_INFORMATION=" ${appimage_zsync_prefix}${app_name} *-${APPIMAGE_ARCH-$(arch) } .AppImage.zsync"
92+ export EXTRA_QT_MODULES= " qml; svg;" &&
93+ export LDAI_UPDATE_INFORMATION=" ${appimage_zsync_prefix}${app_name} *-${APPIMAGE_ARCH} .AppImage.zsync"
7294echo " AppImage update information: ${LDAI_UPDATE_INFORMATION} "
7395
74- case " $( qmake -query QMAKE_XSPEC) " in
75- linux-arm-gnueabi-g++)
76- wget https://github.com/AppImage/AppImageKit/releases/download/continuous/runtime-armhf
77- export ARCH=arm
78- export LDAI_RUNTIME_FILE=runtime-armhf
79- ;;
80- linux-aarch64-gnu-g++)
81- wget https://github.com/AppImage/AppImageKit/releases/download/continuous/runtime-aarch64
82- export ARCH=arm_aarch64
83- export LDAI_RUNTIME_FILE=runtime-aarch64
84- ;;
85- esac
86-
8796./linuxdeploy --appdir AppDir -e src/app/${executable_name} -i $repo_dir /res/${executable_name} .png -d $repo_dir /release/appimage.desktop --plugin qt --output appimage
8897
8998mv * .AppImage* $repo_dir
0 commit comments