Skip to content

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

@sheepforce

Description

@sheepforce

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions