Skip to content
Extraits de code Groupes Projets
Valider 13402591 rédigé par Elliu's avatar Elliu
Parcourir les fichiers

BUILD: WIP: try wayland appimage

parent 143012f1
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
......@@ -21,68 +21,124 @@ function join_by() {
fi
}
function get_additional_libs() {
case $* in
*qt*)
for LIB in /usr/lib/x86_64-linux-gnu/libQt6WaylandEglCompositorHwIntegration.so \
/usr/lib/x86_64-linux-gnu/libQt6WaylandEglClientHwIntegration.so \
/usr/lib/x86_64-linux-gnu/libQt6WaylandCompositor.so \
/usr/lib/x86_64-linux-gnu/libQt6OpenGLWidgets.so \
/usr/lib/x86_64-linux-gnu/libQt6OpenGL.so \
/usr/lib/x86_64-linux-gnu/libQt6MultimediaWidgets.so \
/usr/lib/x86_64-linux-gnu/libQt6Multimedia.so \
/usr/lib/x86_64-linux-gnu/libQt6Concurrent.so \
/usr/lib/x86_64-linux-gnu/libQt6WaylandClient.so \
/usr/lib/x86_64-linux-gnu/libQt6XcbQpa.so \
/usr/lib/x86_64-linux-gnu/libQt6EglFSDeviceIntegration.so \
/usr/lib/x86_64-linux-gnu/libQt6EglFsKmsGbmSupport.so \
/usr/lib/x86_64-linux-gnu/libQt6EglFsKmsSupport.so ;
do
for FILE in ${LIB}*; do
echo -n " -l${FILE} "
done
done;;
*);;
esac
}
function deploy() {
local EXEC=${1,,}
local WITHQTPLUGIN="$2"
local EXTRA_QT_PLUGINS="concurrent;core;dbus;eglfsdeviceintegration;eglfskmssupport;gui;multimedia;multimediawidgets;"
local EXTRA_QT_PLUGINS+="opengl;openglwidgets;waylandclient;waylandcompositor;widgets;xcbqpa;"
export EXTRA_QT_PLUGINS
local EXTRA_CUSTOM_QT_PLUGINS=(
"wayland-shell-integration/libxdg-shell.so"
"wayland-graphics-integration-client/libdmabuf-server.so"
"wayland-graphics-integration-client/libdrm-egl-server.so"
"wayland-graphics-integration-client/libqt-plugin-wayland-egl.so"
"wayland-graphics-integration-client/libshm-emulation-server.so"
"wayland-graphics-integration-client/libvulkan-server.so"
"wayland-graphics-integration-server/libqt-wayland-compositor-drm-egl-server-buffer.so"
"wayland-graphics-integration-server/libqt-wayland-compositor-wayland-egl.so"
"wayland-graphics-integration-server/libqt-wayland-compositor-wayland-eglstream-controller.so"
"egldeviceintegrations/libqeglfs-emu-integration.so"
"egldeviceintegrations/libqeglfs-kms-egldevice-integration.so"
"egldeviceintegrations/libqeglfs-kms-integration.so"
"egldeviceintegrations/libqeglfs-x11-integration.so"
)
local EXTRA_GRAPHIC_LIBS=(
"/usr/lib/x86_64-linux-gnu/libEGL_mesa.so.0"
"/usr/lib/x86_64-linux-gnu/libEGL_mesa.so.0.0.0"
"/usr/lib/x86_64-linux-gnu/libEGL.so.1"
"/usr/lib/x86_64-linux-gnu/libEGL.so.1.1.0"
"/usr/lib/x86_64-linux-gnu/libOpenGL.so"
"/usr/lib/x86_64-linux-gnu/libOpenGL.so.0"
"/usr/lib/x86_64-linux-gnu/libOpenGL.so.0.0.0"
"/usr/lib/x86_64-linux-gnu/libgbm.so.1.0.0"
"/usr/lib/x86_64-linux-gnu/libgbm.so.1"
"/usr/lib/x86_64-linux-gnu/libglapi.so.0.0.0"
"/usr/lib/x86_64-linux-gnu/libglapi.so.0"
"/usr/lib/x86_64-linux-gnu/libGLdispatch.so.0.0.0"
"/usr/lib/x86_64-linux-gnu/libGLdispatch.so.0"
"/usr/lib/x86_64-linux-gnu/libGLX_mesa.so.0.0.0"
"/usr/lib/x86_64-linux-gnu/libGLX_indirect.so.0"
"/usr/lib/x86_64-linux-gnu/libGLX_mesa.so.0"
"/usr/lib/x86_64-linux-gnu/libGLX.so.0.0.0"
"/usr/lib/x86_64-linux-gnu/libGLX.so.0"
"/usr/lib/x86_64-linux-gnu/libGL.so.1.7.0"
"/usr/lib/x86_64-linux-gnu/libGL.so.1"
"/usr/lib/x86_64-linux-gnu/libGLX.so"
"/usr/lib/x86_64-linux-gnu/libGL.so"
)
local EXTRA_DRI_LIBS=(
"i915_dri.so"
"i965_dri.so"
"iris_dri.so"
"kms_swrast_dri.so"
"nouveau_dri.so"
"nouveau_vieux_dri.so"
"r200_dri.so"
"r300_dri.so"
"r600_dri.so"
"radeon_dri.so"
"radeonsi_dri.so"
"swrast_dri.so"
"virtio_gpu_dri.so"
"vmwgfx_dri.so"
"zink_dri.so"
"i965_drv_video.so"
"iHD_drv_video.so"
"nouveau_drv_video.so"
"r600_drv_video.so"
"radeonsi_drv_video.so"
)
local EXTRA_DRM_LIBS=(
"libdrm.so.2.4.0"
"libdrm.so.2"
"libdrm_amdgpu.so.1.0.0"
"libdrm_amdgpu.so.1"
"libdrm_intel.so.1.0.0"
"libdrm_intel.so.1"
"libdrm_nouveau.so.2.0.0"
"libdrm_nouveau.so.2"
"libdrm_radeon.so.1.0.1"
"libdrm_radeon.so.1"
)
local EXTRA_PLATFORM_PLUGINS="libqxcb.so;libqeglfs.so;libqwayland-egl.so;libqwayland-generic.so;"
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"
local EXCLUDE_LIBS="-name *$(join_by "* -or -name *" $EXCLUDE_LIBS)*"
local QT_SRC=/usr/lib/x86_64-linux-gnu/qt6/plugins
local QT_DST=${EXEC^}/usr/plugins
local qtPlugin=()
if [[ "x$WITHQTPLUGIN" == "x1" ]]; then
qtPlugin+=(--plugin qt)
# Will do most of the work
linuxdeploy -v1 --appdir ${EXEC^} -e target/release/${EXEC} \
-i ${EXEC}/${EXEC}.png -d ${EXEC}/${EXEC}.desktop \
${*:2} $(get_additional_libs $*)
# 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/
case ${*:2} in
*qt*)
for PLUGIN in ${QT_SRC}/*; do
local PLUGIN=$(basename ${PLUGIN})
mkdir -p ${QT_DST}/${PLUGIN}
cp -rf ${QT_SRC}/${PLUGIN}/* ${QT_DST}/${PLUGIN}/
for lib in "${EXTRA_DRI_LIBS[@]}"; do
local dest="$(dirname "${EXEC^}/usr/lib/dri/$lib")"
mkdir -p "$dest"
cp "/usr/lib/x86_64-linux-gnu/dri/$lib" "$dest"
qtPlugin+=(--deploy-deps-only="${EXEC^}/usr/lib/dri/$lib" --library="/usr/lib/x86_64-linux-gnu/dri/$lib")
done
for lib in "${EXTRA_DRM_LIBS[@]}"; do
local dest="$(dirname "${EXEC^}/usr/lib/dri/$lib")"
mkdir -p "$dest"
cp "/usr/lib/x86_64-linux-gnu/$lib" "$dest"
qtPlugin+=(--deploy-deps-only="${EXEC^}/usr/lib/dri/$lib" --library="/usr/lib/x86_64-linux-gnu/$lib")
done
for lib in "${EXTRA_GRAPHIC_LIBS[@]}"; do
qtPlugin+=(--library="$lib")
done
for PRL_FILE in /usr/lib/x86_64-linux-gnu/libQt6Wayland*.prl; do
cp ${PRL_FILE} ${EXEC^}/usr/lib/$(basename ${PRL_FILE})
for plug in "${EXTRA_CUSTOM_QT_PLUGINS[@]}"; do
local dest="$(dirname "${EXEC^}/usr/plugins/$plug")"
mkdir -p "$dest"
cp "/usr/lib/x86_64-linux-gnu/qt6/plugins/$plug" "$dest"
qtPlugin+=(--deploy-deps-only="${EXEC^}/usr/plugins/$plug" --library="/usr/lib/x86_64-linux-gnu/qt6/plugins/$plug")
done
;;
*);;
esac
fi
# Will do most of the work
linuxdeploy -v1 --appdir ${EXEC^} -e target/release/${EXEC} \
-i ${EXEC}/${EXEC}.png -d ${EXEC}/${EXEC}.desktop "${qtPlugin[@]}"
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
......@@ -102,6 +158,7 @@ this_dir="\$(readlink -f "\$(dirname "\$0")")"
source "\$HOOK"
done
}
export LD_PRELOAD="/usr/lib/libdrm.so.2"
exec "\$this_dir/usr/bin/${EXEC}" \$@
EOF
......@@ -112,5 +169,5 @@ EOF
deploy lkt
deploy amadeus
deploy lektord --plugin qt
deploy lektord 1
......@@ -11,6 +11,7 @@ PKG_BACKPORT+=" qt6-image-formats-plugins qt6-gtk-platformtheme qt6-base-abi lib
PKG_BACKPORT+=" libqt6multimedia6 libqt6concurrent6 libqt6multimediawidgets6 "
PKG_BACKPORT+=" libqt6opengl6 libqt6openglwidgets6 libqt6widgets6"
PKG_BACKPORT+=" qt6-translations-l10n qt6-l10n-tools"
PKG_BACKPORT+=" libdrm2 libdrm-nouveau2 libdrm-radeon1 libdrm-amdgpu1 libdrm-common libdrm-intel1"
PKG_BACKPORT+=" qt6-wayland-dev qt6-wayland qt6-wayland-dev-tools"
PKG_BACKPORT+=" libqt6waylandclient6 libqt6waylandcompositor6 libqt6waylandeglclienthwintegration6"
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter