Sélectionner une révision Git
-
Adrien NUNES a rédigéAdrien NUNES a rédigé
package_appimages.bash 2,61 Kio
#!/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