Building Dolfin-x on Ubuntu 18.04 LTS fails

Dear Fenics community,

I’m currently trying to build Dolfin-x on Ubuntu 18.04 LTS with gcc 7.5.0 and mpich-3.3.2.

What I did:

installed mpi4py, latest PETsc, latest Eigen3 (form today):

pip3 install mpi4py --no-cache-dir

git clone https://gitlab.com/petsc/petsc.git petsc_dev

./configure --download-fblaslapack --download-blacs --download-metis --download-parmetis --download-parms --download-ptscotch --download-scotch --download-suitesparse --download-scalapack --download-mumps --download-superlu --download-superlu_dist --download-hypre --download-sundials --download-petsc4py
(making PETSc and installing as proposed)

sudo apt install libeigen3-dev

Thereafter, the following commands:

git clone https://bitbucket.org/fenics-project/fiat
git clone https://bitbucket.org/fenics-project/dijitso
git clone https://bitbucket.org/fenics-project/ufl
git clone https://github.com/FEniCS/ffcx
git clone https://github.com/FEniCS/dolfinx
git clone https://bitbucket.org/fenics-project/mshr
cd fiat    && pip3 -v install --no-deps . && cd ..
cd dijitso && pip3 -v install --no-deps . && cd ..
cd ufl     && pip3 -v install --no-deps . && cd ..
cd ffcx     && pip3 -v install --no-deps . && cd ..
mkdir -p dolfinx/cpp/build && cd dolfinx/cpp/build && cmake .. && sudo make -j 6 install && cd ../..
cd python && pip3 install . --no-deps
mkdir -p mshr/build   && cd mshr/build   && cmake .. && sudo make -j 6 install && cd ../..
cd mshr/python   && pip3 -v install --no-deps . && cd ../..

The command for building Dolfin-x (first sudo make -j 6 install) fails:

[ 57%] Building CXX object dolfinx/CMakeFiles/dolfinx.dir/graph/Partitioning.cpp.o
[ 58%] Building CXX object dolfinx/CMakeFiles/dolfinx.dir/graph/SCOTCH.cpp.o
[ 59%] Building CXX object dolfinx/CMakeFiles/dolfinx.dir/io/cells.cpp.o
[ 60%] Building CXX object dolfinx/CMakeFiles/dolfinx.dir/io/HDF5File.cpp.o
[ 61%] Building CXX object dolfinx/CMakeFiles/dolfinx.dir/io/HDF5Interface.cpp.o
[ 63%] Building CXX object dolfinx/CMakeFiles/dolfinx.dir/io/pugixml.cpp.o
[ 64%] Building CXX object dolfinx/CMakeFiles/dolfinx.dir/io/VTKFile.cpp.o
[ 65%] Building CXX object dolfinx/CMakeFiles/dolfinx.dir/io/VTKWriter.cpp.o
[ 66%] Building CXX object dolfinx/CMakeFiles/dolfinx.dir/io/XDMFFile.cpp.o
[ 67%] Building CXX object dolfinx/CMakeFiles/dolfinx.dir/io/xdmf_function.cpp.o
[ 69%] Building CXX object dolfinx/CMakeFiles/dolfinx.dir/io/xdmf_mesh.cpp.o
[ 70%] Building CXX object dolfinx/CMakeFiles/dolfinx.dir/io/xdmf_utils.cpp.o
[ 71%] Building CXX object dolfinx/CMakeFiles/dolfinx.dir/la/PETScKrylovSolver.cpp.o
[ 72%] Building CXX object dolfinx/CMakeFiles/dolfinx.dir/la/PETScMatrix.cpp.o
[ 73%] Building CXX object dolfinx/CMakeFiles/dolfinx.dir/la/PETScOperator.cpp.o
[ 75%] Building CXX object dolfinx/CMakeFiles/dolfinx.dir/la/PETScOptions.cpp.o
[ 76%] Building CXX object dolfinx/CMakeFiles/dolfinx.dir/la/PETScVector.cpp.o
[ 77%] Building CXX object dolfinx/CMakeFiles/dolfinx.dir/la/SLEPcEigenSolver.cpp.o
[ 78%] Building CXX object dolfinx/CMakeFiles/dolfinx.dir/la/SparsityPattern.cpp.o
[ 79%] Building CXX object dolfinx/CMakeFiles/dolfinx.dir/la/utils.cpp.o
[ 80%] Building CXX object dolfinx/CMakeFiles/dolfinx.dir/la/VectorSpaceBasis.cpp.o
[ 82%] Building CXX object dolfinx/CMakeFiles/dolfinx.dir/mesh/DistributedMeshTools.cpp.o
[ 83%] Building CXX object dolfinx/CMakeFiles/dolfinx.dir/mesh/GraphBuilder.cpp.o
[ 84%] Building CXX object dolfinx/CMakeFiles/dolfinx.dir/mesh/Mesh.cpp.o
[ 85%] Building CXX object dolfinx/CMakeFiles/dolfinx.dir/mesh/Geometry.cpp.o
/home/mh/work/fenics/dolfinx/cpp/dolfinx/mesh/GraphBuilder.cpp: In instantiation of ‘std::tuple<std::vector<std::vector<int, std::allocator >, std::allocator<std::vector<int, std::allocator > > >, std::vector<std::pair<std::vector<int, std::allocator >, int>, std::allocator<std::pair<std::vector<int, std::allocator >, int> > >, int> {anonymous}::compute_local_dual_graph_keyed(const Eigen::Array<long int, -1, -1, 1>&, const dolfinx::mesh::CellType&) [with int N = 1]’:
/home/mh/work/fenics/dolfinx/cpp/dolfinx/mesh/GraphBuilder.cpp:339:70: required from here
/home/mh/work/fenics/dolfinx/cpp/dolfinx/mesh/GraphBuilder.cpp:116:17: error: class template argument deduction failed:
{std::vector(facet0.begin(), facet0.end()), cell_index0});
**^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~**
/home/mh/work/fenics/dolfinx/cpp/dolfinx/mesh/GraphBuilder.cpp:116:17: error: no matching function for call to ‘vector(std::array<int, 1>::const_iterator, std::array<int, 1>::const_iterator)’
In file included from /usr/include/c++/7/vector:64:0,

(…) plus a bunch of multiple further errors.

Tried latest Eigen3 release version, too, no success.

Ran through the process multiple times with complete removal and re-installation of all dependent packages, no success.

Does Dolfin-x only build against older, specific PETSc / Eigen3 versions?

Thanks for your help!

Best wishes,
Marc

P.S.: Installing the Fenics development version (so ffc and dolfin instead of the -x variants) works well.

The installation script used for dolfinx can be Found in this Dockerfile. Here versions of most of the dependencies are specified.