evaleev / libint

Libint: high-performance library for computing Gaussian integrals in quantum mechanics
Other
218 stars 96 forks source link

Update catch.hpp #328

Closed hrnagel closed 4 months ago

hrnagel commented 4 months ago

Hi,

The file tests/unit/catch.hpp is outdated. With glibc 2.34, released in August 2021, a constant was changed into a function: link. This means that Libint does not work anymore on any OS released after August 2021. The solution is simple: update catch.hpp to this version.

Best regards,

Henrik

boegel commented 2 months ago

Just so this is easier to find: without the update in #334, there will be errors in Libint tests (make check) like:

7: In file included from /usr/include/signal.h:328,
7:                  from /tmp/easybuild/Libint/2.7.2/GCC-12.3.0-lmax-6-cp2k/libint-2.7.2/libint-2.7.2/tests/unit/catch.hpp:8034,
7:                  from /tmp/easybuild/Libint/2.7.2/GCC-12.3.0-lmax-6-cp2k/libint-2.7.2/libint-2.7.2/tests/unit/test.cc:23:
7: /tmp/easybuild/Libint/2.7.2/GCC-12.3.0-lmax-6-cp2k/libint-2.7.2/libint-2.7.2/tests/unit/catch.hpp:10822:58: error: call to non-constexpr function long int sysconf(int)
7: 10822 |     static constexpr std::size_t sigStackSize = 32768 >= MINSIGSTKSZ ? 32768 : MINSIGSTKSZ;
7:       |                                                          ^~~~~~~~~~~
7: In file included from /usr/include/bits/sigstksz.h:24:
7: /usr/include/unistd.h:640:17: note: long int sysconf(int) declared here
7:   640 | extern long int sysconf (int __name) __THROW;
7:       |                 ^~~~~~~
7: /tmp/easybuild/Libint/2.7.2/GCC-12.3.0-lmax-6-cp2k/libint-2.7.2/libint-2.7.2/tests/unit/catch.hpp:10881:45: error: size of array altStackMem is not an integral constant-expression
7: 10881 |     char FatalConditionHandler::altStackMem[sigStackSize] = {};
7:       |                                             ^~~~~~~~~~~~