I’m building dolfinx-0.6.0 from source on a Mac running Ventura 13.2 using clang 14.0.0. My HDF5 version is 1.14.0 with MPICH enabled; there are no other versions of HDF5 on my system. When compiling the dolfinx c++ core, I get the following error:
/Users/katharine/Code/FEniCS/dolfinx-0.6.0/cpp/dolfinx/io/HDF5Interface.cpp:40:16: error: no matching function for call to ‘H5Oget_info_by_name3’
herr_t err = H5Oget_info_by_name3(handle, group_name.c_str(), &object_info,
^~~~~~~~~~~~~~~~~~~~
/opt/local/include/H5Opublic.h:544:15: note: candidate function not viable: no known conversion from ‘H5O_info1_t *’ to ‘H5O_info2_t *’ for 3rd argument
H5_DLL herr_t H5Oget_info_by_name3(hid_t loc_id, const char *name, H5O_info2_t *oinfo, unsigned fields,
^
1 error generated.
Given the note about “no known conversion”, it seems there’s a mismatch somewhere between H5O_info1_t and H5O_info2_t.
Any suggestions? Please let me know if there’s any further information I can provide.
I was not able to reproduce this with the following docker file (linux):
FROM ubuntu:22.04
ARG HDF5_SERIES=1.14
ARG HDF5_PATCH=0
ARG NUMPY_VERSION=1.23.3
ARG PYBIND11_VERSION=2.10.3
ARG PETSC_VERSION=3.18.5
ARG MPICH_VERSION=4.1.1
ARG PYTHON_VERSION=3.10
ARG HDF5_SERIES
ARG HDF5_PATCH
ARG PYBIND11_VERSION
ARG PETSC_VERSION
ARG NUMPY_VERSION
ARG MPICH_VERSION
# The following ARGS are used in the dev-env layer.
# They are safe defaults. They can be overridden by the user.
# Compiler optimisation flags for SLEPc and PETSc, all languages.
ARG PETSC_SLEPC_OPTFLAGS="-O2"
# Turn on PETSc and SLEPc debugging. "yes" or "no".
ARG PETSC_SLEPC_DEBUGGING="no"
# See https://github.com/pmodels/mpich/issues/5811
ARG MPICH_CONFIGURE_OPTIONS="FCFLAGS=-fallow-argument-mismatch FFLAGS=-fallow-argument-mismatch --with-device=ch4:ofi"
# Number of build threads to use with make
ARG BUILD_NP=3
WORKDIR /tmp
# Environment variables
ENV OPENBLAS_NUM_THREADS=1 \
OPENBLAS_VERBOSE=0
# Install dependencies available via apt-get.
# - First set of packages are required to build and run FEniCS.
# - Second set of packages are recommended and/or required to build
# documentation or tests.
# - Third set of packages are optional, but required to run gmsh
# pre-built binaries.
RUN export DEBIAN_FRONTEND=noninteractive && \
apt-get -qq update && \
apt-get -yq --with-new-pkgs -o Dpkg::Options::="--force-confold" upgrade && \
apt-get -y install \
cmake \
g++ \
gfortran \
libboost-dev \
libboost-filesystem-dev \
libboost-timer-dev \
liblapack-dev \
libopenblas-dev \
libpugixml-dev \
ninja-build \
pkg-config \
python3-dev \
python3-pip \
python3-setuptools && \
#
apt-get -y install \
catch2 \
git \
graphviz \
libeigen3-dev \
valgrind \
wget && \
#
apt-get -y install \
libglu1 \
libxcursor-dev \
libxft2 \
libxinerama1 \
libfltk1.3-dev \
libfreetype6-dev \
libgl1-mesa-dev \
libocct-foundation-dev \
libocct-data-exchange-dev \
clang \
libomp-dev && \
apt-get clean && \
rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
ENV CC="clang"
ENV CXX="clang++"
# Install MPI
RUN wget http://www.mpich.org/static/downloads/${MPICH_VERSION}/mpich-${MPICH_VERSION}.tar.gz && \
tar xfz mpich-${MPICH_VERSION}.tar.gz && \
cd mpich-${MPICH_VERSION} && \
./configure ${MPICH_CONFIGURE_OPTIONS} && \
make -j${BUILD_NP} install && \
ldconfig && \
rm -rf /tmp/*
# Install Python packages (via pip)
# Install numpy via pip. Exclude binaries to avoid conflicts with libblas
# (See issue #126 and #1305)
# - make sure pip/setuptoools are up-to-date before using them
# - First set of packages are required to build and run DOLFINx Python.
# - Second set of packages are recommended and/or required to build
# documentation or run tests.
RUN pip3 install --no-cache-dir --upgrade setuptools pip && \
pip3 install --no-binary="numpy" --no-cache-dir cffi mpi4py numba numpy==${NUMPY_VERSION} scipy && \
pip3 install --no-cache-dir clang-format cppimport cmakelang flake8 isort jupytext matplotlib mypy myst-parser pybind11==${PYBIND11_VERSION} pytest pytest-xdist sphinx sphinx_rtd_theme
# Install HDF5
# Note: HDF5 CMake install has numerous bugs and inconsistencies. Test carefully.
# HDF5 overrides CMAKE_INSTALL_PREFIX by default, hence it is set
# below to ensure that HDF5 is installed into a path where it can be
# found.
RUN wget -nc --quiet https://support.hdfgroup.org/ftp/HDF5/releases/hdf5-${HDF5_SERIES}/hdf5-${HDF5_SERIES}.${HDF5_PATCH}/src/hdf5-${HDF5_SERIES}.${HDF5_PATCH}.tar.gz && \
tar xfz hdf5-${HDF5_SERIES}.${HDF5_PATCH}.tar.gz && \
cmake -G Ninja -DCMAKE_INSTALL_PREFIX=/usr/local -DCMAKE_BUILD_TYPE=Release -DHDF5_ENABLE_PARALLEL=on -DHDF5_ENABLE_Z_LIB_SUPPORT=on -B build-dir -S hdf5-${HDF5_SERIES}.${HDF5_PATCH} && \
cmake --build build-dir && \
cmake --install build-dir && \
rm -rf /tmp/*
# Install PETSc and petsc4py with real and complex types
ENV PETSC_DIR=/usr/local/petsc
RUN apt-get -qq update && \
apt-get -y install bison flex && \
wget -nc --quiet http://ftp.mcs.anl.gov/pub/petsc/release-snapshots/petsc-lite-${PETSC_VERSION}.tar.gz -O petsc-${PETSC_VERSION}.tar.gz && \
mkdir -p ${PETSC_DIR} && tar -xf petsc-${PETSC_VERSION}.tar.gz -C ${PETSC_DIR} --strip-components 1 && \
cd ${PETSC_DIR} && \
# Real, 32-bit int
python3 ./configure \
PETSC_ARCH=linux-gnu-real-32 \
--COPTFLAGS="${PETSC_SLEPC_OPTFLAGS}" \
--CXXOPTFLAGS="${PETSC_SLEPC_OPTFLAGS}" \
--FOPTFLAGS="${PETSC_SLEPC_OPTFLAGS}" \
--with-64-bit-indices=no \
--with-debugging=${PETSC_SLEPC_DEBUGGING} \
--with-fortran-bindings=no \
--with-shared-libraries \
--download-hypre \
--download-metis \
--download-mumps \
--download-ptscotch \
--download-scalapack \
--download-spai \
--download-suitesparse \
--download-superlu \
--download-superlu_dist \
--with-scalar-type=real && \
make PETSC_DIR=/usr/local/petsc PETSC_ARCH=linux-gnu-real-32 ${MAKEFLAGS} all && \
# Install petsc4py
cd src/binding/petsc4py && \
PETSC_ARCH=linux-gnu-real-32 pip3 install --no-cache-dir . && \
# Cleanup
apt-get -y purge bison flex && \
apt-get -y autoremove && \
apt-get clean && \
rm -rf \
${PETSC_DIR}/**/tests/ \
${PETSC_DIR}/**/obj/ \
${PETSC_DIR}/**/externalpackages/ \
${PETSC_DIR}/CTAGS \
${PETSC_DIR}/RDict.log \
${PETSC_DIR}/TAGS \
${PETSC_DIR}/docs/ \
${PETSC_DIR}/share/ \
${PETSC_DIR}/src/ \
${PETSC_DIR}/systems/ \
rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
WORKDIR /src
RUN git clone --single-branch --branch=v0.6.0 --depth=1 https://github.com/FEniCS/basix.git && \
git clone --single-branch --branch=v0.6.0 --depth=1 https://github.com/FEniCS/ffcx.git && \
git clone --single-branch --branch=v0.6.0 --depth=1 https://github.com/FEniCS/dolfinx.git && \
git clone --single-branch --branch=2023.1.1.post0 --depth=1 https://github.com/FEniCS/ufl.git
# The dolfinx-onbuild container expects to have folders basix/ ufl/
# ffcx/ and dolfinx/ mounted/shared at /src.
RUN cd basix && cmake -G Ninja -DCMAKE_BUILD_TYPE=${DOLFINX_CMAKE_BUILD_TYPE} -DCMAKE_CXX_FLAGS=${DOLFINX_CMAKE_CXX_FLAGS} -B build-dir -S ./cpp && \
cmake --build build-dir && \
cmake --install build-dir && \
python3 -m pip install ./python && \
cd ../ufl && pip3 install --no-cache-dir . && \
cd ../ffcx && pip3 install --no-cache-dir . && \
cd ../ && pip3 install --no-cache-dir ipython
RUN cd dolfinx && \
mkdir -p build-real && \
cd build-real && \
PETSC_ARCH=linux-gnu-real-32 cmake -G Ninja -DCMAKE_INSTALL_PREFIX=/usr/local/dolfinx-real -DCMAKE_BUILD_TYPE=${DOLFINX_CMAKE_BUILD_TYPE} -DCMAKE_CXX_FLAGS=${DOLFINX_CMAKE_CXX_FLAGS} ../cpp && \
ninja install && \
cd ../python && \
CXXFLAGS=${DOLFINX_CMAKE_CXX_FLAGS} PETSC_ARCH=linux-gnu-real-32 pip3 install -v --target /usr/local/dolfinx-real/lib/python${PYTHON_VERSION}/dist-packages --no-dependencies --no-cache-dir . && \
git clean -fdx
The build uses clang 14.0.0 and hdf5 1.14.10 and MPICH, so in theory there should be no issue with the combination you mention above. Maybe someone with a Mac could try to reproduce your setup.