From c02593fddc70402d8a3f50b8ae476e1778d5cd3c Mon Sep 17 00:00:00 2001 From: "Michael Hirsch, Ph.D" Date: Sun, 10 Nov 2019 10:14:01 -0500 Subject: HDF5: make much more robust across platforms This addresses various real-world problems with HDF5 pkg-config, including * hdf*.pc with package versions as part of the filename * malformed hdf*.pc missing the commonly-used HDF5 HL module --- Additionally, this refactors more complicated dependencies such as HDF5 and OpenMPI. This may help us deduplicate internal dependency code in the future. HDF5 selftest: improve platform-agnostic test ci: init demo github action for HDF5 framework ci Actions: hold off on MSYS2 for now [skip ci] hdf5: ensure C libraries always included ci: mac hdf5--use clang+gfortran --- .github/workflows/frameworks.yml | 98 ++++++++++++++++++++++++++++++++++++++++ .github/workflows/lint_mypy.yml | 2 +- 2 files changed, 99 insertions(+), 1 deletion(-) create mode 100644 .github/workflows/frameworks.yml (limited to '.github') diff --git a/.github/workflows/frameworks.yml b/.github/workflows/frameworks.yml new file mode 100644 index 000000000..4d764e217 --- /dev/null +++ b/.github/workflows/frameworks.yml @@ -0,0 +1,98 @@ +# at first, we demo HDF5 framework. More can be added. +name: ci_frameworks + +on: + push: + paths: + - "mesonbuild/dependencies/**" + - ".github/workflows/frameworks.yml" + pull_request: + paths: + - "mesonbuild/dependencies/**" + - ".github/workflows/frameworks.yml" + +jobs: + + linux: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v1 + - uses: actions/setup-python@v1 + with: + python-version: '3.x' + - run: python -m pip install -e . + - run: sudo apt install -yq --no-install-recommends ninja-build g++ gfortran libhdf5-dev + - run: meson setup "test cases/frameworks/25 hdf5" build + env: + FC: gfortran + CXX: g++ + CC: gcc + - run: ninja -C build + - uses: actions/upload-artifact@v1 + if: failure() + with: + name: Linux_Log + path: build/meson-logs/meson-log.txt + - run: meson test -C build -v + - uses: actions/upload-artifact@v1 + if: failure() + with: + name: Linux_Test + path: build/meson-logs/testlog.txt + + mac: + runs-on: macos-latest + steps: + - uses: actions/checkout@v1 + - uses: actions/setup-python@v1 + with: + python-version: '3.x' + - run: python -m pip install -e . + - run: brew install pkg-config ninja gcc hdf5 + - run: meson setup "test cases/frameworks/25 hdf5" build + - run: ninja -C build + - uses: actions/upload-artifact@v1 + if: failure() + with: + name: Mac_Log + path: build/meson-logs/meson-log.txt + - run: meson test -C build -v + - uses: actions/upload-artifact@v1 + if: failure() + with: + name: Mac_Test + path: build/meson-logs/testlog.txt + + windows: + # as usual, start in MSYS to install packages, then switch to MINGW64 to build. + if: false + # MSYS2 GitHub Action is still being developed--appears to have PATH bugs stopping this from working. + runs-on: windows-latest + steps: + - uses: actions/checkout@v1 + - uses: actions/setup-python@v1 + with: + python-version: '3.x' + - uses: numworks/setup-msys2@v1 + with: + msystem: MSYS + - run: msys2do pacman -S mingw64/mingw-w64-x86_64-ninja mingw64/mingw-w64-x86_64-pkg-config mingw64/mingw-w64-x86_64-gcc mingw64/mingw-w64-x86_64-gcc-fortran mingw-w64-x86_64-hdf5 --noprogressbar --noconfirm + - run: set MSYSTEM=MINGW64 + - run: python -m pip install -e . + - run: meson setup "test cases/frameworks/25 hdf5" build + env: + FC: gfortran + CXX: g++ + CC: gcc + - run: ninja -C build + - uses: actions/upload-artifact@v1 + if: failure() + with: + name: MSYS_Log + path: build/meson-logs/meson-log.txt + - run: meson test -C build -v + - uses: actions/upload-artifact@v1 + if: failure() + with: + name: MSYS2_Test + path: build/meson-logs/testlog.txt \ No newline at end of file diff --git a/.github/workflows/lint_mypy.yml b/.github/workflows/lint_mypy.yml index 3ce18596c..d2564e072 100644 --- a/.github/workflows/lint_mypy.yml +++ b/.github/workflows/lint_mypy.yml @@ -30,4 +30,4 @@ jobs: with: python-version: '3.x' - run: python -m pip install mypy - - run: mypy --follow-imports=skip mesonbuild/mtest.py mesonbuild/minit.py mesonbuild/msetup.py mesonbuild/wrap tools/ mesonbuild/modules/fs.py mesonbuild/dependencies/mpi.py + - run: mypy --follow-imports=skip mesonbuild/mtest.py mesonbuild/minit.py mesonbuild/msetup.py mesonbuild/wrap tools/ mesonbuild/modules/fs.py mesonbuild/dependencies/mpi.py mesonbuild/dependencies/hdf5.py -- cgit v1.2.3