CI: Add Cygwin CMake run #125
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Run Cygwin-based tests | |
on: [pull_request,workflow_dispatch] | |
concurrency: | |
group: ${{ github.workflow}}-${{ github.head_ref }} | |
cancel-in-progress: true | |
env: | |
SHELLOPTS: igncr | |
CHERE_INVOKING: 1 | |
CYGWIN_NOWINPATH: 1 | |
jobs: | |
build-and-test-autotools: | |
runs-on: windows-latest | |
defaults: | |
run: | |
shell: bash -eo pipefail -o igncr "{0}" | |
name: Cygwin-based Autotools tests | |
strategy: | |
matrix: | |
plugin_dir_option: ["", "--without-plugin-dir"] | |
steps: | |
- name: Fix line endings | |
run: git config --global core.autocrlf input | |
- uses: actions/checkout@v4 | |
- uses: cygwin/cygwin-install-action@v2 | |
with: | |
platform: x86_64 | |
packages: >- | |
git automake libtool autoconf2.5 make libhdf5-devel | |
libhdf4-devel zipinfo libxml2-devel perl zlib-devel | |
libzstd-devel libbz2-devel libaec-devel libzip-devel | |
libdeflate-devel gcc-core libcurl-devel libiconv-devel | |
libssl-devel libcrypt-devel | |
- name: (Autotools) Run autoconf and friends | |
run: | | |
cp -f /bin/dash /bin/sh | |
mkdir m4 | |
/bin/dash /usr/bin/libtoolize --force --copy --verbose | |
/usr/bin/autoreconf-2.69 --force --install --verbose --debug | |
- name: (Autotools) Configure in-tree build | |
run: >- | |
/bin/dash ./configure --enable-hdf5 --enable-shared | |
--disable-static --enable-dap --disable-dap-remote-tests | |
--enable-plugins ${{ matrix.plugin_dir_option }} | |
--disable-nczarr --disable-nczarr-filters | |
--disable-s3 --with-s3-testing=no | |
- name: Look at config.log if error | |
if: ${{ failure() }} | |
run: cat config.log | |
- name: Print summary | |
run: cat libnetcdf.settings | |
- name: (Autotools) Build library and utilities | |
run: make -j8 SHELL=/bin/dash | |
- name: (Autotools) Test DESTDIR install | |
run: | | |
make install DESTDIR=/tmp/pretend-root SHELL=/bin/dash | |
if [ -d "/tmp/pretend-root/$(pwd)" ]; | |
then | |
find /tmp/pretend-root/$(pwd) | |
if [ $(find /tmp/pretend-root/$(pwd) -type f | wc -l) -gt 0 ]; then exit 1; fi | |
fi | |
- name: (Autotools) Build and run tests | |
timeout-minutes: 30 | |
run: | | |
make check -j8 SHELL=/bin/dash | |
build-and-test-cmake: | |
runs-on: windows-latest | |
defaults: | |
run: | |
shell: C:/cygwin/bin/bash.exe -eo pipefail -o igncr "{0}" | |
steps: | |
- run: git config --global core.autocrlf input | |
- uses: actions/checkout@v4 | |
- uses: cygwin/cygwin-install-action@v2 | |
with: | |
platform: x86_64 | |
install-dir: 'C:\cygwin' | |
packages: >- | |
git automake libtool autoconf2.5 make libhdf5-devel | |
libhdf4-devel zipinfo libxml2-devel perl zlib-devel | |
libzstd-devel libbz2-devel libaec-devel libzip-devel | |
libdeflate-devel gcc-core libcurl-devel libiconv-devel | |
libssl-devel libcrypt-devel cmake ninja make m4 diffutils unzip | |
### | |
# Configure and build | |
### | |
- name: (CMake) Configure Build | |
run: | | |
LDFLAGS="-Wl,--export-all-symbols" \ | |
cmake \ | |
-G"UNIX Makefiles" \ | |
-B build \ | |
-S . \ | |
-DCMAKE_INSTALL_PREFIX=${MINGW_PREFIX} \ | |
-DBUILD_SHARED_LIBS=ON \ | |
-DNETCDF_ENABLE_NETCDF_4=ON \ | |
-DNETCDF_ENABLE_DAP=ON \ | |
-DNETCDF_BUILD_UTILITIES=ON \ | |
-DNETCDF_ENABLE_TESTS=ON \ | |
-DNETCDF_ENABLE_HDF5=ON \ | |
-DNETCDF_ENABLE_DAP=TRUE \ | |
-DNETCDF_ENABLE_NCZARR=TRUE \ | |
-DNETCDF_ENABLE_DAP_LONG_TESTS=TRUE \ | |
-DNETCDF_ENABLE_PLUGINS=ON | |
if: ${{ success() }} | |
- name: (CMake) Look at CMakeCache.txt if error | |
run: cat build/CMakeCache.txt | |
if: ${{ failure() }} | |
- name: (CMake) Print Summary | |
run: cat build/libnetcdf.settings | |
- name: (CMake) Build All | |
run: cmake --build build -j$(nproc) | |
if: ${{ success() }} | |
- name: (CMake) Run Tests | |
run: PATH=$PWD/build:$PATH ctest --test-dir build | |
if: ${{ success() }} | |
- name: (CMake) Verbose output of CTest failures | |
run: >- | |
PATH=$PWD/build:$PATH ctest --test-dir build --output-on-failure -j$(nproc) --rerun-failed -VV | |
if: ${{ failure() }} |