From b60eaef7c6f388a1011b8c0e2e37e1b1ea49e240 Mon Sep 17 00:00:00 2001 From: Paul WOISARD Date: Sat, 17 Oct 2026 22:01:31 +0200 Subject: [PATCH] =?UTF-8?q?fix(appimage):=20embarquer=20libxkbcommon-x11?= =?UTF-8?q?=20et=20les=20d=C3=A9pendances=20xcb=20du=20plugin=20Qt=20(d?= =?UTF-8?q?=C3=A9marrage=20sur=20syst=C3=A8me=20minimal)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Le test AppImageHub échouait : libxkbcommon-x11.so.0 absente, plugin xcb non chargeable. Le build échoue désormais si ces bibliothèques manquent au lieu d'avertir. Co-Authored-By: Claude Sonnet 5.5 --- .github/workflows/linux-appimage.yml | 2 +- packaging/appimage/build_appimage.sh | 20 ++++++++++++-------- 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/.github/workflows/linux-appimage.yml b/.github/workflows/linux-appimage.yml index 15e60f0..ee33133 100644 --- a/.github/workflows/linux-appimage.yml +++ b/.github/workflows/linux-appimage.yml @@ -82,7 +82,7 @@ jobs: run: | sudo apt-get update sudo apt-get install -y --no-install-recommends \ - libxcb-cursor0 libegl1 libgl1 libxkbcommon0 libdbus-1-3 libfontconfig1 libglib2.0-0 binutils appstream desktop-file-utils + libxcb-cursor0 libegl1 libgl1 libxkbcommon0 libxkbcommon-x11-0 libdbus-1-3 libfontconfig1 libglib2.0-0 binutils appstream desktop-file-utils - name: Install Python dependencies run: | diff --git a/packaging/appimage/build_appimage.sh b/packaging/appimage/build_appimage.sh index 53f7abc..13c4d1a 100755 --- a/packaging/appimage/build_appimage.sh +++ b/packaging/appimage/build_appimage.sh @@ -61,15 +61,19 @@ echo "== 3/4 Bibliothèques xcb pour Qt6 (libxcb-cursor n'est pas installée pa INTERNAL="$APPDIR/usr/lib/pdf-equilibrist/_internal" # (pas de `exit` dans awk : avec pipefail, ldconfig recevrait SIGPIPE et set -e arrêterait le script) cursor="$(ldconfig -p | awk '/libxcb-cursor\.so\.0 /{p=$NF} END{print p}')" -if [ -n "$cursor" ]; then - # la bibliothèque + ses dépendances libxcb-* (hors libxcb.so.1 : fournie par tout système X11) - for lib in "$cursor" $(ldd "$cursor" | awk '/libxcb-/{print $3}'); do - cp -nL "$lib" "$INTERNAL/" 2>/dev/null || true - done - echo " embarquée : $(ls "$INTERNAL" | grep -c '^libxcb-' || true) bibliothèque(s) libxcb-*" -else - echo " AVERTISSEMENT : libxcb-cursor.so.0 introuvable sur la machine de build (apt install libxcb-cursor0)" +xkbx11="$(ldconfig -p | awk '/libxkbcommon-x11\.so\.0 /{p=$NF} END{print p}')" +qxcb="$(find "$INTERNAL" -name libqxcb.so | head -1)" +if [ -z "$cursor" ] || [ -z "$xkbx11" ]; then + echo " ERREUR : libxcb-cursor.so.0 ou libxkbcommon-x11.so.0 introuvable sur la machine de build" >&2 + echo " (apt install libxcb-cursor0 libxkbcommon-x11-0) : l'AppImage ne démarrerait pas sur un système minimal" >&2 + exit 1 fi +# les bibliothèques + leurs dépendances xcb-* / xkbcommon* (hors libxcb.so.1 et libX11 : fournies par tout système X11). +# Sans cela Qt échoue sur un système minimal : « Could not load the Qt platform plugin "xcb" ». +for lib in "$cursor" "$xkbx11" $(ldd "$cursor" "$xkbx11" ${qxcb:+"$qxcb"} | awk '/libxcb-|libxkbcommon/{print $3}' | sort -u); do + cp -nL "$lib" "$INTERNAL/" 2>/dev/null || true +done +echo " embarquées : $(ls "$INTERNAL" | grep -Ec '^(libxcb-|libxkbcommon)' || true) bibliothèque(s) xcb-*/xkbcommon*" du -sh "$APPDIR" | awk '{print " AppDir : " $1}'