- changed title to fails to build: SIGSTKSZ is not an integral constant with libc6 2.34
fails to build: SIGSTKSZ is not an integral constant with libc6 2.34
Ubuntu 21.10 (impish) installed libc6 (glibc) 2.34, which introduced a major ABI change. SIGSTKSZ is now no longer constant, and can’t be used directly to define array sizes. It affects tests using doctest, or in the case of dolfin, catch 1.9.
A failed build log on the FEniCS PPA is at https://launchpadlibrarian.net/579522949/buildlog_ubuntu-impish-amd64.dolfin_2019.2.0~git20210928.3eacdb4-3~fenics1~impish3_BUILDING.txt.gz
The error is
[ 94%] Building CXX object test/unit/cpp/CMakeFiles/unittests.dir/common/SubSystemsManager.cpp.o
[ 94%] Building CXX object test/unit/cpp/CMakeFiles/unittests.dir/geometry/ConvexTriangulation.cpp.o
cd "/<<PKGBUILDDIR>>/obj-x86_64-linux-gnu/test/unit/cpp" && /usr/bin/c++ -DDOLFIN_VERSION=\"2019.2.0.dev0\" -DHAS_CHOLMOD -DHAS_HDF5 -DHAS_MPI -DHAS_PETSC -DHAS_SCOTCH -DHAS_SLEPC -DHAS_UMFPACK -DHAS_ZLIB -DNDEBUG -I"/<<PKGBUILDDIR>>" -I"/<<PKGBUILDDIR>>/dolfin" -I"/<<PKGBUILDDIR>>/obj-x86_64-linux-gnu" -I"/<<PKGBUILDDIR>>/test/unit/cpp/catch" -isystem /usr/lib/python3/dist-packages/ffc/backends/ufc -isystem /usr/include/eigen3 -isystem /usr/include/hdf5/openmpi -isystem /usr/lib/x86_64-linux-gnu/openmpi/include/openmpi -isystem /usr/lib/x86_64-linux-gnu/openmpi/include -isystem /usr/lib/petscdir/petsc3.14/x86_64-linux-gnu-real/include -isystem /usr/lib/slepcdir/slepc3.14/x86_64-linux-gnu-real/include -fpermissive -O2 -g -DNDEBUG -std=c++11 -o CMakeFiles/unittests.dir/main.cpp.o -c "/<<PKGBUILDDIR>>/test/unit/cpp/main.cpp"
cd "/<<PKGBUILDDIR>>/obj-x86_64-linux-gnu/test/unit/cpp" && /usr/bin/c++ -DDOLFIN_VERSION=\"2019.2.0.dev0\" -DHAS_CHOLMOD -DHAS_HDF5 -DHAS_MPI -DHAS_PETSC -DHAS_SCOTCH -DHAS_SLEPC -DHAS_UMFPACK -DHAS_ZLIB -DNDEBUG -I"/<<PKGBUILDDIR>>" -I"/<<PKGBUILDDIR>>/dolfin" -I"/<<PKGBUILDDIR>>/obj-x86_64-linux-gnu" -I"/<<PKGBUILDDIR>>/test/unit/cpp/catch" -isystem /usr/lib/python3/dist-packages/ffc/backends/ufc -isystem /usr/include/eigen3 -isystem /usr/include/hdf5/openmpi -isystem /usr/lib/x86_64-linux-gnu/openmpi/include/openmpi -isystem /usr/lib/x86_64-linux-gnu/openmpi/include -isystem /usr/lib/petscdir/petsc3.14/x86_64-linux-gnu-real/include -isystem /usr/lib/slepcdir/slepc3.14/x86_64-linux-gnu-real/include -fpermissive -O2 -g -DNDEBUG -std=c++11 -o CMakeFiles/unittests.dir/common/SubSystemsManager.cpp.o -c "/<<PKGBUILDDIR>>/test/unit/cpp/common/SubSystemsManager.cpp"
cd "/<<PKGBUILDDIR>>/obj-x86_64-linux-gnu/test/unit/cpp" && /usr/bin/c++ -DDOLFIN_VERSION=\"2019.2.0.dev0\" -DHAS_CHOLMOD -DHAS_HDF5 -DHAS_MPI -DHAS_PETSC -DHAS_SCOTCH -DHAS_SLEPC -DHAS_UMFPACK -DHAS_ZLIB -DNDEBUG -I"/<<PKGBUILDDIR>>" -I"/<<PKGBUILDDIR>>/dolfin" -I"/<<PKGBUILDDIR>>/obj-x86_64-linux-gnu" -I"/<<PKGBUILDDIR>>/test/unit/cpp/catch" -isystem /usr/lib/python3/dist-packages/ffc/backends/ufc -isystem /usr/include/eigen3 -isystem /usr/include/hdf5/openmpi -isystem /usr/lib/x86_64-linux-gnu/openmpi/include/openmpi -isystem /usr/lib/x86_64-linux-gnu/openmpi/include -isystem /usr/lib/petscdir/petsc3.14/x86_64-linux-gnu-real/include -isystem /usr/lib/slepcdir/slepc3.14/x86_64-linux-gnu-real/include -fpermissive -O2 -g -DNDEBUG -std=c++11 -o CMakeFiles/unittests.dir/function/Expression.cpp.o -c "/<<PKGBUILDDIR>>/test/unit/cpp/function/Expression.cpp"
cd "/<<PKGBUILDDIR>>/obj-x86_64-linux-gnu/test/unit/cpp" && /usr/bin/c++ -DDOLFIN_VERSION=\"2019.2.0.dev0\" -DHAS_CHOLMOD -DHAS_HDF5 -DHAS_MPI -DHAS_PETSC -DHAS_SCOTCH -DHAS_SLEPC -DHAS_UMFPACK -DHAS_ZLIB -DNDEBUG -I"/<<PKGBUILDDIR>>" -I"/<<PKGBUILDDIR>>/dolfin" -I"/<<PKGBUILDDIR>>/obj-x86_64-linux-gnu" -I"/<<PKGBUILDDIR>>/test/unit/cpp/catch" -isystem /usr/lib/python3/dist-packages/ffc/backends/ufc -isystem /usr/include/eigen3 -isystem /usr/include/hdf5/openmpi -isystem /usr/lib/x86_64-linux-gnu/openmpi/include/openmpi -isystem /usr/lib/x86_64-linux-gnu/openmpi/include -isystem /usr/lib/petscdir/petsc3.14/x86_64-linux-gnu-real/include -isystem /usr/lib/slepcdir/slepc3.14/x86_64-linux-gnu-real/include -fpermissive -O2 -g -DNDEBUG -std=c++11 -o CMakeFiles/unittests.dir/geometry/ConvexTriangulation.cpp.o -c "/<<PKGBUILDDIR>>/test/unit/cpp/geometry/ConvexTriangulation.cpp"
In file included from /<<PKGBUILDDIR>>/test/unit/cpp/main.cpp:2:
/<<PKGBUILDDIR>>/test/unit/cpp/catch/catch.hpp:6490:33: error: size of array ‘altStackMem’ is not an integral constant-expression
6490 | static char altStackMem[static_cast<size_t>(SIGSTKSZ)];
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/<<PKGBUILDDIR>>/test/unit/cpp/catch/catch.hpp:6541:45: error: size of array ‘altStackMem’ is not an integral constant-expression
6541 | char FatalConditionHandler::altStackMem[static_cast<size_t>(SIGSTKSZ)] = {};
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
make[5]: *** [test/unit/cpp/CMakeFiles/unittests.dir/build.make:85: test/unit/cpp/CMakeFiles/unittests.dir/main.cpp.o] Error 1
There’s related discussion of the issue at https://github.com/catchorg/Catch2/issues/2178
The change in glibc was https://sourceware.org/git/?p=glibc.git;a=commit;h=6c57d320484988e87e446e2e60ce42816bf51d53
It’s been fixed in Catch2. Can dolfin be updated to use catch2 ?
Comments (4)
-
reporter -
reporter Ubuntu has made a small patch hard coding the offending values.
https://patches.ubuntu.com/d/dolfin/dolfin_2019.2.0~git20210928.3eacdb4-2ubuntu1.patch
-
reporter -
reporter - changed status to resolved
- Log in to comment