From 2becb087142f9ef4bdbaa5d5750256c44434bb86 Mon Sep 17 00:00:00 2001 From: Evan Miller Date: Wed, 23 Dec 2020 09:34:21 -0500 Subject: [PATCH] Windows GitHub Action (#231) * Migrate the Windows Msys2 build from Appveyor to GitHub Actions * Fix build with newer versions of Msys2 (fix `vasprintf` conflict) * Enable SQL tests on the Cygwin build on Appveyor * Fix an error message about Bison not being available when in fact Flex was not available * Don't fail fast with Mac and Linux GitHub Actions --- .github/workflows/build.yml | 20 ++++++++++++++++++++ appveyor.yml | 36 +++++++----------------------------- configure.ac | 7 +++---- src/libmdb/fakeglib.c | 4 ++-- 4 files changed, 32 insertions(+), 35 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 0624ce2..40f5e9c 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -4,6 +4,7 @@ jobs: linux: runs-on: ubuntu-latest strategy: + fail-fast: false matrix: compiler: [ clang, gcc, gcc-8, gcc-9, gcc-10 ] glib: [ enable-glib, disable-glib ] @@ -34,6 +35,7 @@ jobs: macos: runs-on: macos-latest strategy: + fail-fast: false matrix: compiler: [ clang, gcc ] glib: [ enable-glib, disable-glib ] @@ -87,3 +89,21 @@ jobs: run: make - name: ODBC tests run: env MDBPATH=test/data ./src/odbc/unittest + windows: + runs-on: windows-latest + env: + MSYSTEM: MINGW64 + steps: + - uses: actions/checkout@v2 + - name: Check out test data + run: git clone https://github.com/mdbtools/mdbtestdata.git test + - name: Autoconf + run: C:\msys64\usr\bin\bash -c -l 'cd "$GITHUB_WORKSPACE" && autoreconf -i -f' + - name: Configure + run: C:\msys64\usr\bin\bash -c -l 'cd "$GITHUB_WORKSPACE" && ./configure' + - name: Make + run: C:\msys64\usr\bin\bash -c -l 'cd "$GITHUB_WORKSPACE" && make' + - name: Test + run: C:\msys64\usr\bin\bash -c -l 'cd "$GITHUB_WORKSPACE" && ./test_script.sh' + - name: SQL Test + run: C:\msys64\usr\bin\bash -c -l 'cd "$GITHUB_WORKSPACE" && ./test_sql.sh' diff --git a/appveyor.yml b/appveyor.yml index 6a93ac3..0ce80f3 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -6,7 +6,6 @@ platform: x64 environment: matrix: - - TOOLCHAIN: "msys2" - TOOLCHAIN: "cygwin" branches: @@ -19,33 +18,12 @@ clone_folder: c:\projects\mdbtools skip_tags: true build_script: - - ps: | - if ($env:TOOLCHAIN -eq "msys2") - { - $env:MSYSTEM="MINGW64" - C:\msys64\usr\bin\bash -l -c "cd /c/projects/mdbtools && git clone https://github.com/mdbtools/mdbtestdata.git test" - C:\msys64\usr\bin\bash -l -c "cd /c/projects/mdbtools && autoreconf -i -f" - C:\msys64\usr\bin\bash -l -c "cd /c/projects/mdbtools && ./configure --disable-man --disable-silent-rules" - C:\msys64\usr\bin\bash -l -c "cd /c/projects/mdbtools && make" - } - else - { - C:\cygwin64\setup-x86_64.exe -qP bison flex libiodbc-devel - C:\cygwin64\bin\sh -lc "cd /cygdrive/c/projects/mdbtools && git clone https://github.com/mdbtools/mdbtestdata.git test" - C:\cygwin64\bin\sh -lc "cd /cygdrive/c/projects/mdbtools && autoreconf -i -f" - C:\cygwin64\bin\sh -lc "cd /cygdrive/c/projects/mdbtools && ./configure --disable-man --disable-silent-rules" - C:\cygwin64\bin\sh -lc "cd /cygdrive/c/projects/mdbtools && make" - } + - C:\cygwin64\setup-x86_64.exe -q -P bison -P flex -P libiconv-devel + - C:\cygwin64\bin\sh -lc "cd /cygdrive/c/projects/mdbtools && git clone https://github.com/mdbtools/mdbtestdata.git test" + - C:\cygwin64\bin\sh -lc "cd /cygdrive/c/projects/mdbtools && autoreconf -i -f" + - C:\cygwin64\bin\sh -lc "cd /cygdrive/c/projects/mdbtools && ./configure --disable-man --disable-silent-rules" + - C:\cygwin64\bin\sh -lc "cd /cygdrive/c/projects/mdbtools && make" test_script: - - ps: | - if ($env:TOOLCHAIN -eq "msys2") - { - $env:MSYSTEM="MINGW64" - C:\msys64\usr\bin\bash -l -c "cd /c/projects/mdbtools && ./test_script.sh" - C:\msys64\usr\bin\bash -l -c "cd /c/projects/mdbtools && ./test_sql.sh" - } - else - { - C:\cygwin64\bin\sh -lc "cd /cygdrive/c/projects/mdbtools && ./test_script.sh" - } + - C:\cygwin64\bin\sh -lc "cd /cygdrive/c/projects/mdbtools && ./test_script.sh" + - C:\cygwin64\bin\sh -lc "cd /cygdrive/c/projects/mdbtools && ./test_sql.sh" diff --git a/configure.ac b/configure.ac index 6fa6e36..56539a8 100644 --- a/configure.ac +++ b/configure.ac @@ -36,7 +36,7 @@ AC_CHECK_DECLS([program_invocation_short_name], [], [], [[ dnl Checks for library functions. VL_LIB_READLINE -AC_CHECK_FUNCS(strptime fmemopen gmtime_r wcstombs_l) +AC_CHECK_FUNCS(strptime fmemopen gmtime_r wcstombs_l vasprintf vasnprintf) dnl Checks for typedefs, structures, and compiler characteristics. AC_C_CONST @@ -73,14 +73,13 @@ if $YACC -V | grep "bison.* 3[.]" >/dev/null 2>&1; then YFLAGS="$YFLAGS -Wno-yacc" fi else -sql=false + AC_MSG_WARN([Bison 3.0+ is not available: SQL disabled.]) + sql=false fi if test "x$sql" = "xtrue"; then CFLAGS="$CFLAGS -DSQL" OPTDIRS="$OPTDIRS sql" -else - AC_MSG_WARN([Bison 3.0+ is not available: SQL disabled.]) fi AM_CONDITIONAL(SQL, test x$sql = xtrue) diff --git a/src/libmdb/fakeglib.c b/src/libmdb/fakeglib.c index b46e746..ffb50d2 100644 --- a/src/libmdb/fakeglib.c +++ b/src/libmdb/fakeglib.c @@ -106,7 +106,7 @@ char *g_strconcat(const char *first, ...) { return ret; } -#if defined _WIN32 +#if defined _WIN32 && !defined(HAVE_VASPRINTF) && !defined(HAVE_VASNPRINTF) int vasprintf(char **ret, const char *format, va_list ap) { int len; int retval; @@ -134,7 +134,7 @@ char *g_strdup_printf(const char *format, ...) { va_list argp; va_start(argp, format); -#ifdef __CYGWIN__ +#ifdef HAVE_VASNPRINTF size_t len = 0; ret = vasnprintf(ret, &len, format, argp); #else