@@ -7,83 +7,107 @@ sudo ()
77}
88
99# Build
10- if [[ " $1 " != " 0" ]]; then
11- .ci/common/build.sh appimage_build linux || exit 1
10+ if [[ " $1 " == " " ]]; then
11+ PLATFORM=linux
12+ else
13+ PLATFORM=" linux_$1 "
1214fi
15+ # .ci/common/build.sh appimage_build $PLATFORM || exit 1
1316
1417repo_dir=$( pwd)
1518cd appimage_build
1619
1720# Build linuxdeploy
18- sudo apt install -y build-essential g++ pkg-config curl wget libpng-dev libjpeg-dev zsync desktop-file-utils libxcb-cursor0 &&
19- git clone https://github.com/Open-Typer/linuxdeploy linuxdeploy-build --recurse-submodules &&
20- mkdir linuxdeploy-build/build
21- cd linuxdeploy-build/build &&
22- # Add src/core/copyright to include paths (see https://github.com/linuxdeploy/linuxdeploy/issues/212)
23- cmake -DCMAKE_CXX_FLAGS=-isystem\ $( pwd) /../src/core/copyright .. &&
24- make -j$( nproc --all) &&
25- mv bin/linuxdeploy ../.. &&
26- cd ../.. &&
27- rm -rf linuxdeploy-build &&
28-
29- # Build linuxdeploy-plugin-qt
30- sudo apt install -y nlohmann-json3-dev &&
31- git clone https://github.com/Open-Typer/linuxdeploy-plugin-qt plugin-qt --recurse-submodules &&
32- mkdir plugin-qt/build &&
33- cd plugin-qt/build &&
34- cmake .. &&
35- make -j$( nproc --all) &&
36- mv bin/linuxdeploy-plugin-qt ../.. &&
37- cd ../.. &&
38- rm -rf plugin-qt &&
39-
40- # Build linuxdeploy-plugin-appimage
41- git clone https://github.com/linuxdeploy/linuxdeploy-plugin-appimage plugin-appimage --recurse-submodules &&
42- mkdir plugin-appimage/build &&
43- cd plugin-appimage/build &&
44- cmake .. &&
45- make -j$( nproc --all) &&
46- mv src/linuxdeploy-plugin-appimage ../.. &&
47- cd ../.. &&
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 &&
21+ # sudo apt install -y build-essential g++ pkg-config curl wget libpng-dev libjpeg-dev zsync desktop-file-utils libxcb-cursor0 &&
22+ # git clone https://github.com/Open-Typer/linuxdeploy linuxdeploy-build --recurse-submodules &&
23+ # mkdir linuxdeploy-build/build
24+ # cd linuxdeploy-build/build &&
25+ # # Add src/core/copyright to include paths (see https://github.com/linuxdeploy/linuxdeploy/issues/212)
26+ # cmake -DCMAKE_CXX_FLAGS=-isystem\ $(pwd)/../src/core/copyright .. &&
27+ # make -j$(nproc --all) &&
28+ # mv bin/linuxdeploy ../.. &&
29+ # cd ../.. &&
30+ # rm -rf linuxdeploy-build &&
31+
32+ # # Build linuxdeploy-plugin-qt
33+ # sudo apt install -y nlohmann-json3-dev &&
34+ # git clone https://github.com/Open-Typer/linuxdeploy-plugin-qt plugin-qt --recurse-submodules &&
35+ # mkdir plugin-qt/build &&
36+ # cd plugin-qt/build &&
37+ # cmake .. &&
38+ # make -j$(nproc --all) &&
39+ # mv bin/linuxdeploy-plugin-qt ../.. &&
40+ # cd ../.. &&
41+ # rm -rf plugin-qt &&
42+
43+ # # Build linuxdeploy-plugin-appimage
44+ # git clone https://github.com/linuxdeploy/linuxdeploy-plugin-appimage plugin-appimage --recurse-submodules &&
45+ # mkdir plugin-appimage/build &&
46+ # cd plugin-appimage/build &&
47+ # cmake .. &&
48+ # make -j$(nproc --all) &&
49+ # mv src/linuxdeploy-plugin-appimage ../.. &&
50+ # cd ../.. &&
51+ # rm -rf plugin-appimage
52+
53+ # # Download appimagetool
54+ # wget https://github.com/AppImage/appimagetool/releases/download/continuous/appimagetool-x86_64.AppImage &&
55+ # mv appimagetool-*.AppImage appimagetool
56+ # chmod +x appimagetool
57+ export PATH=$( pwd) :$PATH
6258
6359# Install patchelf from PyPI (see https://github.com/linuxdeploy/linuxdeploy-plugin-qt/issues/133#issuecomment-1608168363)
6460sudo apt install -y python3-pip
61+ python3 -m venv .venv
62+ source .venv/bin/activate
6563pip3 install patchelf
66- export PATH=$PATH :~ /.local/bin
64+ patchelf --version
65+
66+ # Use custom ldd and strip
67+ if [[ " $PLATFORM " == " linux_aarch64" ]]; then
68+ ln -s /usr/bin/${BUILD_TOOLCHAIN_PREFIX} strip strip
69+ sudo cp ../.ci/bin/xldd /usr/bin/${BUILD_TOOLCHAIN_PREFIX} ldd
70+ ln -s /usr/bin/${BUILD_TOOLCHAIN_PREFIX} ldd ldd
71+ export CT_XLDD_ROOT=" $BUILD_SYSROOT_PATH "
72+ fi
73+
74+ # Set LD_LIBRARY_PATH (directories with *.so files)
75+ # TODO: Installing with cmake is probably a better idea
76+ LD_LIBRARY_PATH=" "
77+
78+ for file in $( find . -type f -name " *.so*" ) ; do
79+ dir=$( dirname " $file " )
80+ if [[ " :$LD_LIBRARY_PATH :" != * " :$dir :" * ]]; then
81+ LD_LIBRARY_PATH=" $LD_LIBRARY_PATH :` readlink -f $dir ` "
82+ fi
83+ done
84+
85+ LD_LIBRARY_PATH=${LD_LIBRARY_PATH#: }
86+ LD_LIBRARY_PATH=" $LD_LIBRARY_PATH :$QT_ROOT_DIR /lib" # Qt
87+ export LD_LIBRARY_PATH
88+ echo " LD_LIBRARY_PATH set to: $LD_LIBRARY_PATH "
6789
6890# Build AppImage
91+ if [[ " $PLATFORM " == " linux_aarch64" ]]; then
92+ wget https://github.com/AppImage/type2-runtime/releases/download/continuous/runtime-aarch64
93+ export ARCH=arm_aarch64
94+ APPIMAGE_ARCH=aarch64
95+ export LDAI_RUNTIME_FILE=runtime-aarch64
96+ export QEMU_LD_PREFIX=" $BUILD_SYSROOT_PATH "
97+ export PATH=" $QT_ROOT_DIR /bin:$PATH " # use cross Qt
98+ export PATH=" $PATH :$QT_HOST_PATH /libexec"
99+
100+ # mkdir -p AppDir/usr/lib
101+ # cp "$QT_ROOT_DIR"/lib/libQt*OpenGLWidgets.so* AppDir/usr/lib # TODO: Find out why this isn't deployed
102+ else
103+ APPIMAGE_ARCH=x86_64
104+ fi
105+
69106export 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"
107+ export EXTRA_QT_MODULES= " qml; svg;" &&
108+ export LDAI_UPDATE_INFORMATION=" ${appimage_zsync_prefix}${app_name} *-${APPIMAGE_ARCH} .AppImage.zsync"
72109echo " AppImage update information: ${LDAI_UPDATE_INFORMATION} "
73110
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-
87111./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
88112
89113mv * .AppImage* $repo_dir
0 commit comments