diff options
| author | Mike Taves <mwtoews@gmail.com> | 2021-04-07 11:25:30 +1200 |
|---|---|---|
| committer | Mike Taves <mwtoews@gmail.com> | 2021-04-07 13:08:22 +1200 |
| commit | 0abacbc927c37c93a90a25770d1e9b059c440bc3 (patch) | |
| tree | ede3ef262a488364eb2237c961e57802730ef0a7 | |
| parent | ec25bdc7b5ad3155d0078379bbca5ac9efd8280d (diff) | |
| download | PROJ-0abacbc927c37c93a90a25770d1e9b059c440bc3.tar.gz PROJ-0abacbc927c37c93a90a25770d1e9b059c440bc3.zip | |
CI: build and test on MSYS2 with Windows
| -rw-r--r-- | .github/workflows/windows.yml | 51 | ||||
| -rwxr-xr-x | test/postinstall/test_pkg-config.sh | 27 | ||||
| -rw-r--r-- | test/postinstall/testappprojinfo/CMakeLists.txt | 7 |
3 files changed, 75 insertions, 10 deletions
diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml index 13179c18..a4668341 100644 --- a/.github/workflows/windows.yml +++ b/.github/workflows/windows.yml @@ -60,3 +60,54 @@ jobs: set PATH=%PROJ_DIR%\bin;%PATH% call %GITHUB_WORKSPACE%\test\postinstall\test_cmake.bat %PROJ_DIR% proj + + MSYS2: + runs-on: windows-latest + if: "!contains(github.event.head_commit.message, '[ci skip]') && !contains(github.event.head_commit.message, '[skip ci]')" + + defaults: + run: + shell: msys2 {0} + + env: + CMAKE_GENERATOR: "MSYS Makefiles" + + steps: + + - uses: actions/checkout@v2 + + - uses: msys2/setup-msys2@v2 + with: + msystem: MINGW64 + update: true + install: >- + git + make + mingw-w64-x86_64-cmake + mingw-w64-x86_64-curl + mingw-w64-x86_64-gcc + mingw-w64-x86_64-libtiff + mingw-w64-x86_64-sqlite3 + + - name: Build + run: | + PROJ_BUILD=${GITHUB_WORKSPACE}/build + PROJ_DIR=${GITHUB_WORKSPACE}/proj_dir + mkdir ${PROJ_BUILD} + cd ${PROJ_BUILD} + cmake -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=ON -DCMAKE_INSTALL_PREFIX="${PROJ_DIR}" .. + make -j 2 + make install + ls ${PROJ_DIR}/bin + + - name: Run tests + run: | + PROJ_BUILD=${GITHUB_WORKSPACE}/build + PROJ_DIR=${GITHUB_WORKSPACE}/proj_dir + export PROJ_LIB=${PROJ_DIR}/share/proj + cd ${PROJ_BUILD} + ctest --output-on-failure + export PATH=${PROJ_DIR}/bin:${PATH} + ../test/postinstall/test_cmake.sh ${PROJ_DIR} + ../test/postinstall/test_pkg-config.sh ${PROJ_DIR} + proj diff --git a/test/postinstall/test_pkg-config.sh b/test/postinstall/test_pkg-config.sh index f9ae36c2..1c3866ec 100755 --- a/test/postinstall/test_pkg-config.sh +++ b/test/postinstall/test_pkg-config.sh @@ -15,27 +15,30 @@ if [ -z "$prefix" ]; then exit 1 fi -export PKG_CONFIG_PATH=$prefix/lib/pkgconfig export LD_LIBRARY_PATH=$prefix/lib -echo "PKG_CONFIG_PATH=$PKG_CONFIG_PATH" - -PKG_CONFIG_MODVERSION=$(pkg-config proj --modversion) -echo "pkg-config proj --modversion: $PKG_CONFIG_MODVERSION" -PKG_CONFIG_DATADIR=$(pkg-config proj --variable=datadir) -echo "pkg-config proj --variable=datadir: $PKG_CONFIG_DATADIR" - UNAME=$(uname) case $UNAME in Darwin*) alias ldd="otool -L" ;; Linux*) ;; + MINGW* | MSYS*) + prefix=$(cygpath -u ${prefix}) + export LD_LIBRARY_PATH=$prefix/bin ;; *) echo "no ldd equivalent found for UNAME=$UNAME" exit 1 ;; esac +export PKG_CONFIG_PATH=$prefix/lib/pkgconfig +echo "PKG_CONFIG_PATH=$PKG_CONFIG_PATH" + +PKG_CONFIG_MODVERSION=$(pkg-config proj --modversion) +echo "pkg-config proj --modversion: $PKG_CONFIG_MODVERSION" +PKG_CONFIG_DATADIR=$(pkg-config proj --variable=datadir) +echo "pkg-config proj --variable=datadir: $PKG_CONFIG_DATADIR" + cd $(dirname $0) PROGRAM=testappprojinfo @@ -46,8 +49,8 @@ make ERRORS=0 LDD_OUTPUT=$(ldd ./$PROGRAM | grep proj) -LDD_SUBSTR=$LD_LIBRARY_PATH/libproj. -LDD_RPATH_SUBSTR=@rpath/libproj. +LDD_SUBSTR=$LD_LIBRARY_PATH/libproj +LDD_RPATH_SUBSTR=@rpath/libproj printf "Testing expected ldd output ... " case "$LDD_OUTPUT" in *$LDD_SUBSTR*) @@ -60,6 +63,10 @@ case "$LDD_OUTPUT" in esac SEARCHPATH_OUTPUT=$(./$PROGRAM -s) +case $UNAME in + MINGW* | MSYS*) + SEARCHPATH_OUTPUT=$(echo "$SEARCHPATH_OUTPUT" | tr '\\' '/') +esac printf "Testing expected searchpath/datadir ... " case "$SEARCHPATH_OUTPUT" in *$PKG_CONFIG_DATADIR*) diff --git a/test/postinstall/testappprojinfo/CMakeLists.txt b/test/postinstall/testappprojinfo/CMakeLists.txt index beac54ff..2b3cf70e 100644 --- a/test/postinstall/testappprojinfo/CMakeLists.txt +++ b/test/postinstall/testappprojinfo/CMakeLists.txt @@ -27,6 +27,13 @@ if(APPLE) elseif(UNIX) set(LDD_CL "ldd") set(EXPECTED_LDD_CL_OUT "${CMAKE_PREFIX_PATH}/lib/libproj") +elseif(CMAKE_GENERATOR STREQUAL "MSYS Makefiles") + set(LDD_CL "ldd") + # Convert to Unix-style path + execute_process( + COMMAND cygpath -u ${CMAKE_PREFIX_PATH}/bin/libproj + OUTPUT_VARIABLE EXPECTED_LDD_CL_OUT + OUTPUT_STRIP_TRAILING_WHITESPACE) endif() if(LDD_CL) |
