PCMSolver / pcmsolver

An API for the Polarizable Continuum Model
http://pcmsolver.readthedocs.io/
GNU Lesser General Public License v3.0
32 stars 21 forks source link

Compile failure with glibc >= 2.34 due to SIGSTKSZ in Catch #197

Open sheepforce opened 2 years ago

sheepforce commented 2 years ago

PCMsolver cannot build with recent glibc version. The issue seems to be, that in glibc >= 2.34 SIGSTKSZ is not constant anymore. This leads to type errors in the Catch code:

In file included from /build/source/tests/unit_tests.cpp:25:
/build/source/external/Catch/catch.hpp:6470:41: error: array bound is not an integer constant before ']' token
 6470 |         static char altStackMem[SIGSTKSZ];
      |                                         ^
/build/source/external/Catch/catch.hpp: In constructor 'Catch::FatalConditionHandler::FatalConditionHandler()':
/build/source/external/Catch/catch.hpp:6489:30: error: 'altStackMem' was not declared in this scope
 6489 |             sigStack.ss_sp = altStackMem;
      |                              ^~~~~~~~~~~
/build/source/external/Catch/catch.hpp: At global scope:
/build/source/external/Catch/catch.hpp:6521:53: error: array bound is not an integer constant before ']' token
 6521 |     char FatalConditionHandler::altStackMem[SIGSTKSZ] = {};
      |                                                     ^

Expected Behavior

PCMSolver should compile with recent Glibc versions.

Current Behavior

Glibc >= 2.34 breaks PCMSolver

Possible Solution

Update the catch code to be compatible with recent Glibc? (I am no C++ dev myself)

Steps to Reproduce (for bugs)

nix build nixpkgs/f35d4e3c73eaecfa5d1eabdcfd14d8047b440a15#pcmsolver --print-build-logs or build on probably any other linux with glibc >= 2.34

Context

I am maintaining pcmsolver in NixOS and nixpkgs. The glibc incompatibility of PCMSolver unfortunately also breaks Psi4 and Dalton in Nixpkgs/NixOS.

The glibc change apparently also bit other people, e.g.:

Your Environment

robertodr commented 2 years ago

Thanks for reporting. This is indeed an annoyance. As you suggest, upgrading the bundled version of Catch would solve the issue. I'll try to patch it up during the week. I'm rewriting this library from scratch, so it's not exactly high priority, but since it broke a lot of packages, it must be fixed.

sheepforce commented 2 years ago

A quick workaround I've just used to repair the broken nixpkgs branches is to replace SIGSTKSZ by _SC_SIGSTKSZ