From b1466ec649aa1ebb62e454f62f0544bf522dedd9 Mon Sep 17 00:00:00 2001 From: Laurent Trinques Date: Sat, 2 May 2026 22:37:13 +0200 Subject: [PATCH] Update windows-build.yml --- .github/workflows/windows-build.yml | 78 +++++++++++++---------------- 1 file changed, 35 insertions(+), 43 deletions(-) diff --git a/.github/workflows/windows-build.yml b/.github/workflows/windows-build.yml index a0dad411e..30eefc5d9 100644 --- a/.github/workflows/windows-build.yml +++ b/.github/workflows/windows-build.yml @@ -110,45 +110,44 @@ jobs: cd "$GITHUB_WORKSPACE" # --- DLLs runtime compilateur (non copiées par windeployqt) --- - echo "=== Copie DLLs runtime UCRT64 ===" + # --- DLLs runtime : copie automatique via ldd --- + # On copie d'abord les DLLs garanties (runtime GCC + KF5 + ICU) + # car ldd ne les liste pas toujours toutes (chargement dynamique). + echo "=== Copie DLLs runtime garanties ===" UCRT=/ucrt64/bin for dll in \ libgcc_s_seh-1.dll \ libstdc++-6.dll \ libwinpthread-1.dll \ - libgomp-1.dll \ - libdouble-conversion.dll \ - libpcre2-16-0.dll \ - libzstd.dll \ - libharfbuzz-0.dll \ - libpng16-16.dll \ - libfreetype-6.dll \ - libbz2-1.dll \ - libglib-2.0-0.dll \ - libintl-8.dll \ - libiconv-2.dll \ - zlib1.dll \ - libsqlite3-0.dll \ - libmd4c.dll \ - libgraphite2.dll \ - libbrotlidec.dll \ - libpcre2-8-0.dll; do - if [ -f "$UCRT/$dll" ]; then - cp -v "$UCRT/$dll" "$BIN/" - else - echo "WARN: $dll non trouve dans $UCRT" - fi + libgomp-1.dll; do + [ -f "$UCRT/$dll" ] && cp -v "$UCRT/$dll" "$BIN/" || echo "WARN: $dll non trouve" done - - # ICU (le numéro de version peut varier, on copie tout) cp -v "$UCRT"/libicu*.dll "$BIN/" 2>/dev/null || echo "WARN: libicu*.dll non trouvees" + cp -v "$UCRT"/KF5*.dll "$BIN/" 2>/dev/null || echo "WARN: KF5*.dll non trouvees" - # KDE Frameworks 5 (kwidgetsaddons, kcoreaddons) - cp -v "$UCRT"/KF5*.dll "$BIN/" 2>/dev/null || echo "WARN: KF5*.dll non trouvees" + # Copie automatique de toutes les dependances UCRT64 detectees par ldd + echo "=== Copie automatique dependances ldd ===" + ldd "$BIN/QElectroTech.exe" \ + | grep -i '/ucrt64/bin/' \ + | awk '{print $3}' \ + | while read -r dep; do + cp -v "$dep" "$BIN/" 2>/dev/null || true + done + + # Passe recursive : certaines DLLs ont elles-memes des dependances UCRT64 + echo "=== Passe recursive sur les DLLs copiees ===" + find "$BIN" -maxdepth 1 -name "*.dll" | while read -r lib; do + ldd "$lib" 2>/dev/null \ + | grep -i '/ucrt64/bin/' \ + | awk '{print $3}' \ + | while read -r dep; do + [ -f "$BIN/$(basename "$dep")" ] || cp -v "$dep" "$BIN/" 2>/dev/null || true + done + done echo "DLLs totales apres runtime : $(find "$BIN" -name '*.dll' | wc -l)" - # --- Diagnostic : DLLs encore manquantes --- + # --- Diagnostic final --- echo "=== ldd — dependances non resolues ===" ldd "$BIN/QElectroTech.exe" | grep -i "not found" || echo "Aucune dependance manquante detectee" @@ -230,31 +229,24 @@ jobs: echo "version=$FULL_VERSION" >> "$GITHUB_OUTPUT" echo "Detected version: $FULL_VERSION" - - name: Patch QET64.nsi — version et chemins + - name: Patch QET64.nsi — version uniquement shell: msys2 {0} run: | set -euo pipefail VERSION="${{ steps.qet_version.outputs.version }}" NSI="$GITHUB_WORKSPACE/nsis_root/QET64.nsi" - # Chemin absolu en forward-slashes : NSIS (MSYS2) les accepte nativement - ROOT_FWD=$(cygpath -u "$GITHUB_WORKSPACE/nsis_root" | sed 's|/|//|g' || true) - ROOT_FWD=$(cygpath -m "$GITHUB_WORKSPACE/nsis_root") + # Patch version uniquement. + # Tous les chemins du .nsi sont relatifs (./files/, .\images\) et + # sont resolus par makensis depuis nsis_root/ — aucun patch necessaire. sed -i "s|!define SOFT_VERSION .*|!define SOFT_VERSION \"${VERSION}\"|" "$NSI" - # Patcher les chemins "files/" relatifs -> absolus (forward-slashes, NSIS MSYS2 OK) - # Les chemins ".\images\" sont laisses relatifs : makensis tourne - # depuis nsis_root/ et les resout correctement. - sed -i \ - -e "s|\"\./files/|\"${ROOT_FWD}/files/|g" \ - -e "s|\"files\\\\|\"${ROOT_FWD}/files/|g" \ - -e "s|\"files/LICENSE\"|\"${ROOT_FWD}/files/LICENSE\"|g" \ - "$NSI" - echo '=== SOFT_VERSION ===' grep 'SOFT_VERSION' "$NSI" - echo '=== File directives (10 premieres) ===' - grep -n 'File\|LICENSE\|images' "$NSI" | head -15 + echo '=== Structure nsis_root ===' + ls "$GITHUB_WORKSPACE/nsis_root/" + echo '=== Contenu files/bin (premiers fichiers) ===' + ls "$GITHUB_WORKSPACE/nsis_root/files/bin/" | head -10 - name: Build NSIS installer shell: msys2 {0}