Error when building Basix from source

Hi there,

When I try to build basix from source to install dolfinx from source, I got following error;

When I run the following command in /cpp directory;

$ cmake --build build-dir

Then I get;

[  5%] Building CXX object CMakeFiles/basix.dir/basix/cell.cpp.o
In file included from /home/ee331/anaconda3/envs/dolfinx/include/xtensor/xaccumulator.hpp:18:0,
                 from /home/ee331/anaconda3/envs/dolfinx/include/xtensor/xmath.hpp:26,
                 from /home/ee331/anaconda3/envs/dolfinx/include/xtensor/xcontainer.hpp:25,
                 from /home/ee331/anaconda3/envs/dolfinx/include/xtensor/xtensor.hpp:20,
                 from /home/ee331/anaconda3/envs/dolfinx/basix/cpp/basix/cell.h:8,
                 from /home/ee331/anaconda3/envs/dolfinx/basix/cpp/basix/cell.cpp:5:
/home/ee331/anaconda3/envs/dolfinx/include/xtensor/xexpression.hpp: In instantiation of ‘struct xt::detail::is_crtp_base_of_impl<xt::xexpression, xt::has_simd_interface<xt::xview<xt::xtensor_container<xt::uvector<double, std::allocator<double> >, 2, (xt::layout_type)1, xt::xtensor_expression_tag>&, const long int, xt::xall<long unsigned int> >, double> >’:
/home/ee331/anaconda3/envs/dolfinx/include/xtl/xtype_traits.hpp:323:12:   required from ‘struct xtl::disjunction<xt::detail::is_crtp_base_of_impl<xt::xexpression, xt::has_simd_interface<xt::xview<xt::xtensor_container<xt::uvector<double, std::allocator<double> >, 2, (xt::layout_type)1, xt::xtensor_expression_tag>&, const long int, xt::xall<long unsigned int> >, double> >, xt::detail::is_crtp_base_of_impl<xt::xexpression, xt::has_simd_interface<xt::xtensor_container<xt::uvector<double, std::allocator<double> >, 1, (xt::layout_type)1, xt::xtensor_expression_tag>, double> > >’
/home/ee331/anaconda3/envs/dolfinx/include/xtensor/xoperation.hpp:212:90:   required by substitution of ‘template<class F, class ... E> using xfunction_type_t = typename std::enable_if<xtl::disjunction<xt::is_xexpression<typename std::decay<CT>::type>...>::value, xt::detail::xfunction_type<F, E ...> >::type::type [with F = xt::detail::logical_and; E = {xt::has_simd_interface<xt::xview<xt::xtensor_container<xt::uvector<double, std::allocator<double> >, 2, (xt::layout_type)1, xt::xtensor_expression_tag>&, const long int, xt::xall<long unsigned int> >, double>, xt::has_simd_interface<xt::xtensor_container<xt::uvector<double, std::allocator<double> >, 1, (xt::layout_type)1, xt::xtensor_expression_tag>, double>}]’
/home/ee331/anaconda3/envs/dolfinx/include/xtensor/xoperation.hpp:375:17:   required by substitution of ‘template<class E1, class E2> xt::detail::xfunction_type_t<xt::detail::logical_and, E1, E2> xt::operator&&(E1&&, E2&&) [with E1 = xt::has_simd_interface<xt::xview<xt::xtensor_container<xt::uvector<double, std::allocator<double> >, 2, (xt::layout_type)1, xt::xtensor_expression_tag>&, const long int, xt::xall<long unsigned int> >, double>; E2 = xt::has_simd_interface<xt::xtensor_container<xt::uvector<double, std::allocator<double> >, 1, (xt::layout_type)1, xt::xtensor_expression_tag>, double>]’
/home/ee331/anaconda3/envs/dolfinx/include/xtensor/xassign.hpp:345:104:   required from ‘static constexpr bool xt::xassign_traits<E1, E2>::simd_interface() [with E1 = xt::xview<xt::xtensor_container<xt::uvector<double, std::allocator<double> >, 2, (xt::layout_type)1, xt::xtensor_expression_tag>&, const long int, xt::xall<long unsigned int> >; E2 = xt::xtensor_container<xt::uvector<double, std::allocator<double> >, 1, (xt::layout_type)1, xt::xtensor_expression_tag>]’
/home/ee331/anaconda3/envs/dolfinx/include/xtensor/xassign.hpp:353:106:   [ skipping 2 instantiation contexts, use -ftemplate-backtrace-limit=0 to disable ]
/home/ee331/anaconda3/envs/dolfinx/include/xtensor/xview.hpp:1741:106:   required from ‘void xt::xview<CT, S>::assign_temporary_impl(xt::xview<CT, S>::temporary_type&&) [with CT = xt::xtensor_container<xt::uvector<double, std::allocator<double> >, 2, (xt::layout_type)1, xt::xtensor_expression_tag>&; S = {const long int, xt::xall<long unsigned int>}; xt::xview<CT, S>::temporary_type = xt::xtensor_container<xt::uvector<double, std::allocator<double> >, 1, (xt::layout_type)1, xt::xtensor_expression_tag>]’
/home/ee331/anaconda3/envs/dolfinx/include/xtensor/xsemantic.hpp:662:9:   required from ‘xt::xview_semantic<D>::derived_type& xt::xview_semantic<D>::assign_temporary(xt::xview_semantic<D>::temporary_type&&) [with D = xt::xview<xt::xtensor_container<xt::uvector<double, std::allocator<double> >, 2, (xt::layout_type)1, xt::xtensor_expression_tag>&, const long int, xt::xall<long unsigned int> >; xt::xview_semantic<D>::derived_type = xt::xview<xt::xtensor_container<xt::uvector<double, std::allocator<double> >, 2, (xt::layout_type)1, xt::xtensor_expression_tag>&, const long int, xt::xall<long unsigned int> >; xt::xview_semantic<D>::temporary_type = xt::xtensor_container<xt::uvector<double, std::allocator<double> >, 1, (xt::layout_type)1, xt::xtensor_expression_tag>]’
/home/ee331/anaconda3/envs/dolfinx/include/xtensor/xsemantic.hpp:601:68:   required from ‘xt::xsemantic_base<D>::derived_type& xt::xsemantic_base<D>::operator=(const xt::xexpression<E>&) [with E = xt::xbroadcast<const xt::xview<const xt::xtensor_container<xt::uvector<double, std::allocator<double> >, 2, (xt::layout_type)1, xt::xtensor_expression_tag>&, const long int, xt::xall<long unsigned int> >&, xt::sequence_view<std::array<long unsigned int, 2>, 1, 2> >; D = xt::xview<xt::xtensor_container<xt::uvector<double, std::allocator<double> >, 2, (xt::layout_type)1, xt::xtensor_expression_tag>&, const long int, xt::xall<long unsigned int> >; xt::xsemantic_base<D>::derived_type = xt::xview<xt::xtensor_container<xt::uvector<double, std::allocator<double> >, 2, (xt::layout_type)1, xt::xtensor_expression_tag>&, const long int, xt::xall<long unsigned int> >]’
/home/ee331/anaconda3/envs/dolfinx/include/xtensor/xsemantic.hpp:746:33:   required from ‘xt::xview_semantic<D>::derived_type& xt::xview_semantic<D>::operator=(const xt::xexpression<E>&) [with E = xt::xview<const xt::xtensor_container<xt::uvector<double, std::allocator<double> >, 2, (xt::layout_type)1, xt::xtensor_expression_tag>&, const long int, xt::xall<long unsigned int> >; D = xt::xview<xt::xtensor_container<xt::uvector<double, std::allocator<double> >, 2, (xt::layout_type)1, xt::xtensor_expression_tag>&, const long int, xt::xall<long unsigned int> >; xt::xview_semantic<D>::derived_type = xt::xview<xt::xtensor_container<xt::uvector<double, std::allocator<double> >, 2, (xt::layout_type)1, xt::xtensor_expression_tag>&, const long int, xt::xall<long unsigned int> >]’
/home/ee331/anaconda3/envs/dolfinx/include/xtensor/xview.hpp:931:40:   required from ‘xt::xview<CT, S>::self_type& xt::xview<CT, S>::operator=(const xt::xexpression<E>&) [with E = xt::xview<const xt::xtensor_container<xt::uvector<double, std::allocator<double> >, 2, (xt::layout_type)1, xt::xtensor_expression_tag>&, const long int, xt::xall<long unsigned int> >; CT = xt::xtensor_container<xt::uvector<double, std::allocator<double> >, 2, (xt::layout_type)1, xt::xtensor_expression_tag>&; S = {const long int, xt::xall<long unsigned int>}; xt::xview<CT, S>::self_type = xt::xview<xt::xtensor_container<xt::uvector<double, std::allocator<double> >, 2, (xt::layout_type)1, xt::xtensor_expression_tag>&, const long int, xt::xall<long unsigned int> >]’
/home/ee331/anaconda3/envs/dolfinx/basix/cpp/basix/cell.cpp:331:64:   required from here
/home/ee331/anaconda3/envs/dolfinx/include/xtensor/xexpression.hpp:168:88: internal compiler error: Segmentation fault
 ::disjunction< std::is_base_of<B<E>, F<E>>, std::is_base_of<B<F<E>>, F<E>>> {};
                                                                             ^
Please submit a full bug report,
with preprocessed source if appropriate.
See <file:///usr/share/doc/gcc-7/README.Bugs> for instructions.
CMakeFiles/basix.dir/build.make:81: recipe for target 'CMakeFiles/basix.dir/basix/cell.cpp.o' failed
make[2]: *** [CMakeFiles/basix.dir/basix/cell.cpp.o] Error 1
CMakeFiles/Makefile2:94: recipe for target 'CMakeFiles/basix.dir/all' failed
make[1]: *** [CMakeFiles/basix.dir/all] Error 2
Makefile:148: recipe for target 'all' failed
make: *** [all] Error 2


How can I resolve this problem? I am trying to install dolfinx to our cluster which has Ubuntu 18.04 OS.

Thanks for your responses in advance.

internal compiler error is unpleasant. Possibly means a mismatch in the required xtensor version.

If you’re installing on Ubuntu, then why use anaconda? dolfinx is already available for Ubuntu, Download – FEniCS Project

(sudo apt-get install fenicsx)

Because I don’t use sudo commands since I don’t have root access.

The command sudo apt-get install fenicsx gives an error;

Reading package lists... Done
Building dependency tree       
Reading state information... Done
E: Unable to locate package fenicsx

That makes sense, I didn’t think of that scenario.

I apologise, I got the Ubuntu versions mixed up. fenicsx is available from Ubuntu 20.04 (focal), it’s not available on 18.04 (bionic). FEniCS-X needs versions of libraries like PETSc that are more recent than the ones available on 18.04. Possibly this is related to the build problem you’re seeing, the available libraries might not be recent enough.

1 Like

Alright, thanks for your responses anyway.