#!/usr/bin/env bash set -xe [ ! -f /build/.gitignore ] && { echo "The appimage folder is not mounted in the docker" exit 1 } [ ! -d squashfs-root ] && { echo "The appimage utilities where not deployed..." exit 1 } export ARCH=$(arch) export PATH="$PWD/squashfs-root/usr/bin:$PATH" export LD_LIBRARY_PATH="$PWD/squashfs-root/usr/lib:$LD_LIBRARY_PATH" export QMAKE=/usr/lib/qt6/bin/qmake6 function join_by() { local d=${1-} f=${2-} if shift 2; then printf %s "$f" "${@/#/$d}" fi } function deploy() { local EXEC=${1,,} local WITHQTPLUGIN="$2" local EXTRA_PLATFORM_PLUGINS="libqxcb.so;libqwayland-egl.so;libqwayland-generic.so;" export EXTRA_PLATFORM_PLUGINS local EXCLUDE_LIBS="libgdk_pixbuf libpango libcairo libgio libglib libgmodule libgobject libgthread libX11-xcb libxcb-" local EXCLUDE_LIBS="-name *$(join_by "* -or -name *" $EXCLUDE_LIBS)*" local qtPlugin=() if [[ "x$WITHQTPLUGIN" == "x1" ]]; then qtPlugin+=(--plugin qt) fi # Will do most of the work linuxdeploy -v1 --appdir ${EXEC^} -e target/release/${EXEC} \ -i ${EXEC}/${EXEC}.png -d ${EXEC}/${EXEC}.desktop "${qtPlugin[@]}" # Handle aftermath things here, we force copy the qt plugins for wayland and remove unwanted # libs... NOTE: For now we force the xcb platform because of troubles with wayland... mkdir -p ${EXEC^}/apprun-hooks/ find ${EXEC^}/usr/lib/ -type f -and \( ${EXCLUDE_LIBS} \) -delete cp LICENSE CHANGELOG.md CONTRIBUTING.md ${EXEC^}/ install -Dm644 ${EXEC}/${EXEC}.appdata.xml ${EXEC^}/usr/share/metainfo/${EXEC}.appdata.xml case ${*:2} in *qt*) cp -rf /usr/lib/x86_64-linux-gnu/qt6/plugins/wayland-shell-integration ${EXEC^}/usr/plugins/wayland-shell-integration for SHELL in ${EXEC^}/usr/plugins/wayland-shell-integration/*; do patchelf --force-rpath --set-rpath \$ORIGIN/../../lib:\$ORIGIN ${SHELL} done ;; *);; esac # Custom AppRun script! unlink ${EXEC^}/AppRun \ && touch ${EXEC^}/AppRun \ && chmod +x ${EXEC^}/AppRun cat > ${EXEC^}/AppRun <<EOF #!/usr/bin/env bash set -e this_dir="\$(readlink -f "\$(dirname "\$0")")" [ ! -n "\$(find "\$this_dir"/apprun-hooks/ -maxdepth 0 -type d -empty 2>/dev/null)" ] \ && [ -d "\$this_dir"/apprun-hooks/ ] \ && { for HOOK in "\$this_dir"/apprun-hooks/*; do source "\$HOOK" done } exec "\$this_dir/usr/bin/${EXEC}" \$@ EOF # Pack the AppImage appimagetool -v --comp xz ${EXEC^} mv ${EXEC^}-$(arch).AppImage /build/ } deploy lkt deploy amadeus deploy lektord 1