@@ -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,60 @@ 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
50+
51+ # Download appimagetool
52+ wget https://github.com/AppImage/appimagetool/releases/download/continuous/appimagetool-x86_64.AppImage &&
53+ mv appimagetool-* .AppImage appimagetool
54+ chmod +x appimagetool
55+ export PATH=$( pwd) :$PATH
6256
6357# Install patchelf from PyPI (see https://github.com/linuxdeploy/linuxdeploy-plugin-qt/issues/133#issuecomment-1608168363)
6458sudo apt install -y python3-pip
59+ python3 -m venv .venv
60+ source .venv/bin/activate
6561pip3 install patchelf
66- export PATH=$PATH :~ /.local/bin
62+ patchelf --version
63+
64+ # Use custom ldd and strip
65+ if [[ " $PLATFORM " == " linux_gcc_arm64" ]]; then
66+ ln -s /usr/bin/aarch64-linux-gnu-strip strip
67+ sudo cp ../.ci/bin/xldd /usr/bin/aarch64-linux-gnu-ldd
68+ ln -s /usr/bin/aarch64-linux-gnu-ldd ldd
69+ export CT_XLDD_ROOT=" $sysroot_path "
70+ fi
71+
72+ # Set LD_LIBRARY_PATH (directories with *.so files)
73+ LD_LIBRARY_PATH=" "
74+
75+ for file in $( find . -type f -name " *.so" ) ; do
76+ dir=$( dirname " $file " )
77+ if [[ " :$LD_LIBRARY_PATH :" != * " :$dir :" * ]]; then
78+ LD_LIBRARY_PATH=" $LD_LIBRARY_PATH :` readlink -f $dir ` "
79+ fi
80+ done
81+
82+ LD_LIBRARY_PATH=${LD_LIBRARY_PATH#: }
83+ export LD_LIBRARY_PATH
84+ echo " LD_LIBRARY_PATH set to: $LD_LIBRARY_PATH "
6785
6886# Build AppImage
87+ if [[ " $PLATFORM " == " linux_gcc_arm64" ]]; then
88+ # TODO: Do not use AppImageKit releases, they're obsolete
89+ wget https://github.com/AppImage/AppImageKit/releases/download/continuous/runtime-aarch64
90+ export ARCH=arm_aarch64
91+ APPIMAGE_ARCH=aarch64
92+ export LDAI_RUNTIME_FILE=runtime-aarch64
93+ export QEMU_LD_PREFIX=" $sysroot_path "
94+ else
95+ APPIMAGE_ARCH=x86_64
96+ fi
97+
6998export 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"
99+ export EXTRA_QT_MODULES= " qml; svg;" &&
100+ export LDAI_UPDATE_INFORMATION=" ${appimage_zsync_prefix}${app_name} *-${APPIMAGE_ARCH} .AppImage.zsync"
72101echo " AppImage update information: ${LDAI_UPDATE_INFORMATION} "
73102
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-
87103./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
88104
89105mv * .AppImage* $repo_dir
0 commit comments