Run Cygwin-based tests #115
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@v3 | |
- 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}" | |
name: Cygwin-based CMake tests | |
strategy: | |
matrix: | |
build_dir: [".", "build"] | |
steps: | |
- name: Fix line endings | |
shell: pwsh | |
run: git config --global core.autocrlf input | |
- uses: actions/checkout@v3 | |
- uses: cygwin/cygwin-install-action@v2 | |
with: | |
platform: x86_64 | |
packages: >- | |
git cmake ninja make m4 libhdf5-devel | |
libhdf4-devel zipinfo libxml2-devel perl zlib-devel | |
libzstd-devel libbz2-devel libaec-devel libzip-devel | |
libdeflate-devel gcc-core gcc-g++ libcurl-devel libiconv-devel | |
libssl-devel libcrypt-devel doxygen | |
- uses: egor-tensin/cleanup-path@v4 | |
with: | |
dirs: "C:/cygwin/bin;C:/cygwin/lib/lapack" | |
- name: (CMake) Configure in-tree build | |
run: >- | |
/usr/bin/cmake -B ${{ matrix.build_dir }} -S . -DCMAKE_INSTALL_PREFIX=/usr | |
-DENABLE_NETCDF_4=ON -DENABLE_DAP=ON -DBUILD_UTILITIES=ON | |
-DBUILD_SHARED_LIBS=ON -DENABLE_TESTS=ON -DENABLE_DAP=TRUE | |
-DENABLE_HDF5=TRUE -DENABLE_NCZARR=TRUE -DENABLE_DAP_LONG_TESTS=TRUE | |
-DENABLE_PLUGINS=ON | |
- name: Look at CMakeCache.txt if error | |
if: ${{ failure() }} | |
run: cat ${{ matrix.build_dir }}/CMakeCache.txt | |
- name: Print summary | |
run: cat ${{ matrix.build_dir }}/netcdf.settings | |
- name: (CMake) Build library and utilities | |
run: /usr/bin/cmake --build ${{ matrix.build_dir }} --verbose -j8 | |
- name: (CMake) Test DESTDIR install | |
run: | | |
DESTDIR=/tmp/pretend-root /usr/bin/cmake --build ${{ matrix.build_dir }} --target install | |
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: (CMake) Build and run tests | |
timeout-minutes: 30 | |
run: | | |
ctest -B ${{ matrix.build_dir }} -j8 SHELL=/bin/dash | |
- name: (CMake) Verbose output of CTest failures | |
if: failure() && steps.cmake-tests.conclusion == 'failure' | |
run: >- | |
cd build && /usr/bin/ctest --output-on-failure -j8 --rerun-failed -VV . | |
- uses: actions/upload-artifact@v3 | |
if: failure() && steps.cmake-tests.conclusion == 'failure' | |
with: | |
name: cygwin-cmake-test-logs | |
path: | | |
build/Testing/ |