From adc067ba745cebf2e2a2f9523bc14136ca1d2680 Mon Sep 17 00:00:00 2001 From: Robin Haberkorn Date: Mon, 9 Sep 2024 23:22:15 +0200 Subject: [PATCH] fixed win32 CI and nightly builds (refs #5) * The libtool wrapper binaries do not pass down UTF-8 strings correctly, so the Unicode tests failed under some circumstances. * As we aren't actually linking against any locally-built shared libraries, we are passing --disable-shared to libtool which inhibts wrapper generation on win32 and fixes the test suite. * Also use up to date autotools. This didn't fix anything, though. * test suite: try writing an Unicode filename as well * There have been problems doing that on Win32 where UTF-8 was not correctly passed down from the command line and some Windows API calls were only working with ANSI filenames etc. --- .github/workflows/ci.yml | 9 ++++++--- .github/workflows/nightly.yml | 16 +++++++++++----- tests/testsuite.at | 2 ++ 3 files changed, 19 insertions(+), 8 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 03474c6..de9274e 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -112,16 +112,19 @@ jobs: - name: Install Build Dependencies run: > pacman -S --noconfirm --needed - base-devel autotools mingw-w64-i686-toolchain + base-devel mingw-w64-i686-autotools mingw-w64-i686-toolchain mingw-w64-i686-glib2 mingw-w64-i686-pdcurses groff mingw-w64-i686-doxygen - name: Configure Build env: PDCURSES_CFLAGS: -I/mingw32/include/pdcurses/ + # --disable-shared makes sure that libtool won't create wrapper binaries. + # They are not required and cause problems when running the test suite + # as they don't pass down UTF-8 parameters properly. run: | autoreconf -i - ./configure --with-interface=pdcurses-gui --enable-debug --enable-html-manual + ./configure --with-interface=pdcurses-gui --enable-debug --disable-shared --enable-html-manual - run: make - run: make install @@ -133,7 +136,7 @@ jobs: run: cd doc && make devdoc - name: make distcheck env: - DISTCHECK_CONFIGURE_FLAGS: --with-interface=pdcurses-gui + DISTCHECK_CONFIGURE_FLAGS: --with-interface=pdcurses-gui --disable-shared PDCURSES_CFLAGS: -I/mingw32/include/pdcurses/ run: make distcheck - name: Build Source Tarball diff --git a/.github/workflows/nightly.yml b/.github/workflows/nightly.yml index 1bd9321..2e438ef 100644 --- a/.github/workflows/nightly.yml +++ b/.github/workflows/nightly.yml @@ -169,7 +169,7 @@ jobs: - name: Install Build Dependencies run: > pacman -S --noconfirm --needed - base-devel autotools mingw-w64-i686-toolchain + base-devel mingw-w64-i686-autotools mingw-w64-i686-toolchain mingw-w64-i686-glib2 mingw-w64-i686-pdcurses groff @@ -188,14 +188,17 @@ jobs: CFLAGS: -O3 -flto CXXFLAGS: -O3 -flto LDFLAGS: -flto + # --disable-shared makes sure that libtool won't create wrapper binaries. + # They are not required and cause problems when running the test suite + # as they don't pass down UTF-8 parameters properly. run: | autoreconf -i mkdir build-wingui build-wincon (cd build-wingui - ../configure --with-interface=pdcurses-gui --enable-html-manual --program-prefix=g \ + ../configure --with-interface=pdcurses-gui --disable-shared --enable-html-manual --program-prefix=g \ PDCURSES_LIBS="-lpdcurses_wingui -lgdi32 -lcomdlg32 -lwinmm") (cd build-wincon - ../configure --with-interface=pdcurses --enable-html-manual \ + ../configure --with-interface=pdcurses --disable-shared --enable-html-manual \ PDCURSES_LIBS="-lpdcurses_wincon -lgdi32 -lwinmm") - name: make @@ -263,7 +266,7 @@ jobs: - name: Install Build Dependencies run: > pacman -S --noconfirm --needed - base-devel autotools mingw-w64-i686-toolchain + base-devel mingw-w64-i686-autotools mingw-w64-i686-toolchain mingw-w64-i686-glib2 mingw-w64-i686-gtk3 groff @@ -273,9 +276,12 @@ jobs: CFLAGS: -O3 -flto CXXFLAGS: -O3 -flto LDFLAGS: -flto + # --disable-shared makes sure that libtool won't create wrapper binaries. + # They are not required and cause problems when running the test suite + # as they don't pass down UTF-8 parameters properly. run: | autoreconf -i - ./configure --with-interface=gtk --enable-html-manual + ./configure --with-interface=gtk --disable-shared --enable-html-manual - name: make run: make -j 2 diff --git a/tests/testsuite.at b/tests/testsuite.at index 3e121fb..4749b13 100644 --- a/tests/testsuite.at +++ b/tests/testsuite.at @@ -93,6 +93,8 @@ AT_SETUP([Unicode]) AT_CHECK([$SCITECO -e "8594@I/Здравствуй, мир!/ Z-17\"N(0/0)' J0A-8594\"N(0/0)'"], 0, ignore, ignore) AT_CHECK([$SCITECO -e "8594@^Ua/Здравствуй, мир!/ :Qa-17\"N(0/0)' 0Qa-8594\"N(0/0)'"], 0, ignore, ignore) AT_CHECK([$SCITECO -e "@I/Здравствуй, мир!/ JW .-10\"N(0/0)' ^E-20\"N(0/0)' 204:EE .-10\"N(0/0)'"], 0, ignore, ignore) +AT_CHECK([$SCITECO -e "@I/TEST/ @EW/юникод.txt/"], 0, ignore, ignore) +AT_CHECK([test -f юникод.txt], 0, ignore, ignore) AT_CLEANUP AT_SETUP([Automatic EOL normalization])