Skip to content

Building python binding fails on Archlinux (solution known) #302

@danielk333

Description

@danielk333

My OS is: Linux 6.19.13-arch1-1 x86_64 GNU/Linux
OS Version: Well, its arch so rolling
Cmake Version: 4.3.2
Mutation++ origin: fresh git clone

Mutation++ build steps and steps to reproduce

  1. pip install . fails with
`pip install .` output
Processing ./.
  Installing build dependencies ... done
  Getting requirements to build wheel ... done
  Preparing metadata (pyproject.toml) ... done
Collecting numpy (from mutationpp==1.1.3)
  Using cached numpy-2.4.4-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.metadata (6.6 kB)
Using cached numpy-2.4.4-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (16.6 MB)
Building wheels for collected packages: mutationpp
  Building wheel for mutationpp (pyproject.toml) ... error
  error: subprocess-exited-with-error
  
  × Building wheel for mutationpp (pyproject.toml) did not run successfully.
  │ exit code: 1
  ╰─> [296 lines of output]
      *** scikit-build-core 0.12.2 using CMake 4.3.2 (wheel)
      *** Configuring CMake...
      loading initial cache file /home/danielk/tmp/tmpo8hd87fl/build/CMakeInit.txt
      -- The CXX compiler identification is GNU 15.2.1
      -- Detecting CXX compiler ABI info
      -- Detecting CXX compiler ABI info - done
      -- Check for working CXX compiler: /sbin/c++ - skipped
      -- Detecting CXX compile features
      -- Detecting CXX compile features - done
      -- Found Python: /home/danielk/venvs/Mutationpp/bin/python (found version "3.13.11") found components: Interpreter Development.Module
      -- Configuring done (0.3s)
      -- Generating done (0.0s)
      -- Build files have been written to: /home/danielk/tmp/tmpo8hd87fl/build
      *** Building project with Ninja...
      [1/91] Building CXX object interface/python/CMakeFiles/_mutationpp.dir/src/mutationpp_python.cpp.o
      [2/91] Building CXX object interface/python/CMakeFiles/_mutationpp.dir/src/pyGlobalOptions.cpp.o
      In file included from /home/danielk/.local/share/uv/python/cpython-3.13.11-linux-x86_64-gnu/include/python3.13/Python.h:14,
                       from /home/danielk/tmp/pip-build-env-d0tr_1ba/overlay/lib/python3.13/site-packages/nanobind/include/nanobind/nb_python.h:21,
                       from /home/danielk/tmp/pip-build-env-d0tr_1ba/overlay/lib/python3.13/site-packages/nanobind/include/nanobind/nanobind.h:32,
                       from /home/danielk/git/Mutationpp/interface/python/src/pyGlobalOptions.cpp:2:
      /home/danielk/.local/share/uv/python/cpython-3.13.11-linux-x86_64-gnu/include/python3.13/pyconfig.h:1967:9: warning: ‘_POSIX_C_SOURCE’ redefined
       1967 | #define _POSIX_C_SOURCE 200809L
            |         ^~~~~~~~~~~~~~~
      In file included from /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/os_defines.h:39,
                       from /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/c++config.h:727,
                       from /usr/include/c++/15.2.1/cstdlib:46,
                       from /home/danielk/git/Mutationpp/src/general/GlobalOptions.h:25,
                       from /home/danielk/git/Mutationpp/interface/python/src/pyGlobalOptions.cpp:1:
      /usr/include/features.h:319:10: note: this is the location of the previous definition
        319 | # define _POSIX_C_SOURCE        202405L
            |          ^~~~~~~~~~~~~~~
      /home/danielk/.local/share/uv/python/cpython-3.13.11-linux-x86_64-gnu/include/python3.13/pyconfig.h:1988:9: warning: ‘_XOPEN_SOURCE’ redefined
       1988 | #define _XOPEN_SOURCE 700
            |         ^~~~~~~~~~~~~
      /usr/include/features.h:234:10: note: this is the location of the previous definition
        234 | # define _XOPEN_SOURCE  800
            |          ^~~~~~~~~~~~~
      [3/91] Building CXX object interface/python/CMakeFiles/nanobind-static.dir/home/danielk/tmp/pip-build-env-d0tr_1ba/overlay/lib/python3.13/site-packages/nanobind/src/nb_static_property.cpp.o
      [4/91] Building CXX object interface/python/CMakeFiles/nanobind-static.dir/home/danielk/tmp/pip-build-env-d0tr_1ba/overlay/lib/python3.13/site-packages/nanobind/src/implicit.cpp.o
      [5/91] Building CXX object interface/python/CMakeFiles/nanobind-static.dir/home/danielk/tmp/pip-build-env-d0tr_1ba/overlay/lib/python3.13/site-packages/nanobind/src/trampoline.cpp.o
      [6/91] Building CXX object src/CMakeFiles/mutation++.dir/kinetics/ReactionType.cpp.o
      [7/91] Building CXX object interface/python/CMakeFiles/nanobind-static.dir/home/danielk/tmp/pip-build-env-d0tr_1ba/overlay/lib/python3.13/site-packages/nanobind/src/error.cpp.o
      [8/91] Building CXX object interface/python/CMakeFiles/nanobind-static.dir/home/danielk/tmp/pip-build-env-d0tr_1ba/overlay/lib/python3.13/site-packages/nanobind/src/nb_internals.cpp.o
      [9/91] Building CXX object interface/python/CMakeFiles/_mutationpp.dir/src/pyMixtureOptions.cpp.o
      In file included from /home/danielk/.local/share/uv/python/cpython-3.13.11-linux-x86_64-gnu/include/python3.13/Python.h:14,
                       from /home/danielk/tmp/pip-build-env-d0tr_1ba/overlay/lib/python3.13/site-packages/nanobind/include/nanobind/nb_python.h:21,
                       from /home/danielk/tmp/pip-build-env-d0tr_1ba/overlay/lib/python3.13/site-packages/nanobind/include/nanobind/nanobind.h:32,
                       from /home/danielk/git/Mutationpp/interface/python/src/pyMixtureOptions.cpp:3:
      /home/danielk/.local/share/uv/python/cpython-3.13.11-linux-x86_64-gnu/include/python3.13/pyconfig.h:1967:9: warning: ‘_POSIX_C_SOURCE’ redefined
       1967 | #define _POSIX_C_SOURCE 200809L
            |         ^~~~~~~~~~~~~~~
      In file included from /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/os_defines.h:39,
                       from /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/c++config.h:727,
                       from /usr/include/c++/15.2.1/bits/requires_hosted.h:31,
                       from /usr/include/c++/15.2.1/string:40,
                       from /home/danielk/git/Mutationpp/src/general/MixtureOptions.h:32,
                       from /home/danielk/git/Mutationpp/interface/python/src/pyMixtureOptions.cpp:1:
      /usr/include/features.h:319:10: note: this is the location of the previous definition
        319 | # define _POSIX_C_SOURCE        202405L
            |          ^~~~~~~~~~~~~~~
      /home/danielk/.local/share/uv/python/cpython-3.13.11-linux-x86_64-gnu/include/python3.13/pyconfig.h:1988:9: warning: ‘_XOPEN_SOURCE’ redefined
       1988 | #define _XOPEN_SOURCE 700
            |         ^~~~~~~~~~~~~
      /usr/include/features.h:234:10: note: this is the location of the previous definition
        234 | # define _XOPEN_SOURCE  800
            |          ^~~~~~~~~~~~~
      [10/91] Building CXX object interface/python/CMakeFiles/nanobind-static.dir/home/danielk/tmp/pip-build-env-d0tr_1ba/overlay/lib/python3.13/site-packages/nanobind/src/nb_ndarray.cpp.o
      [11/91] Building CXX object interface/python/CMakeFiles/nanobind-static.dir/home/danielk/tmp/pip-build-env-d0tr_1ba/overlay/lib/python3.13/site-packages/nanobind/src/common.cpp.o
      [12/91] Building CXX object src/CMakeFiles/mutation++.dir/kinetics/JacobianManager.cpp.o
      FAILED: [code=1] src/CMakeFiles/mutation++.dir/kinetics/JacobianManager.cpp.o
      /sbin/c++  -pthread  -I/home/danielk/git/Mutationpp/src/general -I/home/danielk/git/Mutationpp/src/kinetics -I/home/danielk/git/Mutationpp/src/numerics -I/home/danielk/git/Mutationpp/src/thermo -I/home/danielk/git/Mutationpp/src/transfer -I/home/danielk/git/Mutationpp/src/transport -I/home/danielk/git/Mutationpp/src/utilities -I/home/danielk/git/Mutationpp/src/gsi -isystem /usr/include/eigen3 -g -O3 -DNDEBUG -std=gnu++14 -fPIC -MD -MT src/CMakeFiles/mutation++.dir/kinetics/JacobianManager.cpp.o -MF src/CMakeFiles/mutation++.dir/kinetics/JacobianManager.cpp.o.d -o src/CMakeFiles/mutation++.dir/kinetics/JacobianManager.cpp.o -c /home/danielk/git/Mutationpp/src/kinetics/JacobianManager.cpp
      In file included from /home/danielk/git/Mutationpp/src/kinetics/JacobianManager.h:32,
                       from /home/danielk/git/Mutationpp/src/kinetics/JacobianManager.cpp:29:
      /home/danielk/git/Mutationpp/src/thermo/Thermodynamics.h: In member function ‘const Mutation::Thermodynamics::Species& Mutation::Thermodynamics::Thermodynamics::species(int) const’:
      /home/danielk/git/Mutationpp/src/thermo/Thermodynamics.h:200:9: error: ‘assert’ was not declared in this scope
        200 |         assert(i >= 0);
            |         ^~~~~~
      /home/danielk/git/Mutationpp/src/thermo/Thermodynamics.h:42:1: note: ‘assert’ is defined in header ‘<cassert>’; this is probably fixable by adding ‘#include <cassert>’
         41 | #include <Eigen/Dense>
        +++ |+#include <cassert>
         42 |
      /home/danielk/git/Mutationpp/src/thermo/Thermodynamics.h: In member function ‘const Mutation::Thermodynamics::Element& Mutation::Thermodynamics::Thermodynamics::element(int) const’:
      /home/danielk/git/Mutationpp/src/thermo/Thermodynamics.h:213:9: error: ‘assert’ was not declared in this scope
        213 |         assert(i >= 0);
            |         ^~~~~~
      /home/danielk/git/Mutationpp/src/thermo/Thermodynamics.h:213:9: note: ‘assert’ is defined in header ‘<cassert>’; this is probably fixable by adding ‘#include <cassert>’
      [13/91] Building CXX object interface/python/CMakeFiles/nanobind-static.dir/home/danielk/tmp/pip-build-env-d0tr_1ba/overlay/lib/python3.13/site-packages/nanobind/src/nb_func.cpp.o
      [14/91] Building CXX object src/CMakeFiles/mutation++.dir/kinetics/Kinetics.cpp.o
      FAILED: [code=1] src/CMakeFiles/mutation++.dir/kinetics/Kinetics.cpp.o
      /sbin/c++  -pthread  -I/home/danielk/git/Mutationpp/src/general -I/home/danielk/git/Mutationpp/src/kinetics -I/home/danielk/git/Mutationpp/src/numerics -I/home/danielk/git/Mutationpp/src/thermo -I/home/danielk/git/Mutationpp/src/transfer -I/home/danielk/git/Mutationpp/src/transport -I/home/danielk/git/Mutationpp/src/utilities -I/home/danielk/git/Mutationpp/src/gsi -isystem /usr/include/eigen3 -g -O3 -DNDEBUG -std=gnu++14 -fPIC -MD -MT src/CMakeFiles/mutation++.dir/kinetics/Kinetics.cpp.o -MF src/CMakeFiles/mutation++.dir/kinetics/Kinetics.cpp.o.d -o src/CMakeFiles/mutation++.dir/kinetics/Kinetics.cpp.o -c /home/danielk/git/Mutationpp/src/kinetics/Kinetics.cpp
      In file included from /home/danielk/git/Mutationpp/src/kinetics/Reaction.h:34,
                       from /home/danielk/git/Mutationpp/src/kinetics/RateLawGroup.h:42,
                       from /home/danielk/git/Mutationpp/src/kinetics/RateManager.h:31,
                       from /home/danielk/git/Mutationpp/src/kinetics/Kinetics.h:33,
                       from /home/danielk/git/Mutationpp/src/kinetics/Kinetics.cpp:28:
      /home/danielk/git/Mutationpp/src/thermo/Thermodynamics.h: In member function ‘const Mutation::Thermodynamics::Species& Mutation::Thermodynamics::Thermodynamics::species(int) const’:
      /home/danielk/git/Mutationpp/src/thermo/Thermodynamics.h:200:9: error: ‘assert’ was not declared in this scope
        200 |         assert(i >= 0);
            |         ^~~~~~
      /home/danielk/git/Mutationpp/src/thermo/Thermodynamics.h:42:1: note: ‘assert’ is defined in header ‘<cassert>’; this is probably fixable by adding ‘#include <cassert>’
         41 | #include <Eigen/Dense>
        +++ |+#include <cassert>
         42 |
      /home/danielk/git/Mutationpp/src/thermo/Thermodynamics.h: In member function ‘const Mutation::Thermodynamics::Element& Mutation::Thermodynamics::Thermodynamics::element(int) const’:
      /home/danielk/git/Mutationpp/src/thermo/Thermodynamics.h:213:9: error: ‘assert’ was not declared in this scope
        213 |         assert(i >= 0);
            |         ^~~~~~
      /home/danielk/git/Mutationpp/src/thermo/Thermodynamics.h:213:9: note: ‘assert’ is defined in header ‘<cassert>’; this is probably fixable by adding ‘#include <cassert>’
      [15/91] Building CXX object src/CMakeFiles/mutation++.dir/kinetics/RateLaws.cpp.o
      [16/91] Building CXX object src/CMakeFiles/mutation++.dir/kinetics/StoichiometryManager.cpp.o
      [17/91] Building CXX object src/CMakeFiles/mutation++.dir/general/Mixture.cpp.o
      FAILED: [code=1] src/CMakeFiles/mutation++.dir/general/Mixture.cpp.o
      /sbin/c++  -pthread  -I/home/danielk/git/Mutationpp/src/general -I/home/danielk/git/Mutationpp/src/kinetics -I/home/danielk/git/Mutationpp/src/numerics -I/home/danielk/git/Mutationpp/src/thermo -I/home/danielk/git/Mutationpp/src/transfer -I/home/danielk/git/Mutationpp/src/transport -I/home/danielk/git/Mutationpp/src/utilities -I/home/danielk/git/Mutationpp/src/gsi -isystem /usr/include/eigen3 -g -O3 -DNDEBUG -std=gnu++14 -fPIC -MD -MT src/CMakeFiles/mutation++.dir/general/Mixture.cpp.o -MF src/CMakeFiles/mutation++.dir/general/Mixture.cpp.o.d -o src/CMakeFiles/mutation++.dir/general/Mixture.cpp.o -c /home/danielk/git/Mutationpp/src/general/Mixture.cpp
      In file included from /home/danielk/git/Mutationpp/src/general/Mixture.h:33,
                       from /home/danielk/git/Mutationpp/src/general/Mixture.cpp:28:
      /home/danielk/git/Mutationpp/src/thermo/Thermodynamics.h: In member function ‘const Mutation::Thermodynamics::Species& Mutation::Thermodynamics::Thermodynamics::species(int) const’:
      /home/danielk/git/Mutationpp/src/thermo/Thermodynamics.h:200:9: error: ‘assert’ was not declared in this scope
        200 |         assert(i >= 0);
            |         ^~~~~~
      /home/danielk/git/Mutationpp/src/thermo/Thermodynamics.h:42:1: note: ‘assert’ is defined in header ‘<cassert>’; this is probably fixable by adding ‘#include <cassert>’
         41 | #include <Eigen/Dense>
        +++ |+#include <cassert>
         42 |
      /home/danielk/git/Mutationpp/src/thermo/Thermodynamics.h: In member function ‘const Mutation::Thermodynamics::Element& Mutation::Thermodynamics::Thermodynamics::element(int) const’:
      /home/danielk/git/Mutationpp/src/thermo/Thermodynamics.h:213:9: error: ‘assert’ was not declared in this scope
        213 |         assert(i >= 0);
            |         ^~~~~~
      /home/danielk/git/Mutationpp/src/thermo/Thermodynamics.h:213:9: note: ‘assert’ is defined in header ‘<cassert>’; this is probably fixable by adding ‘#include <cassert>’
      [18/91] Building CXX object interface/python/CMakeFiles/nanobind-static.dir/home/danielk/tmp/pip-build-env-d0tr_1ba/overlay/lib/python3.13/site-packages/nanobind/src/nb_enum.cpp.o
      [19/91] Building CXX object src/CMakeFiles/mutation++.dir/kinetics/RateManager.cpp.o
      FAILED: [code=1] src/CMakeFiles/mutation++.dir/kinetics/RateManager.cpp.o
      /sbin/c++  -pthread  -I/home/danielk/git/Mutationpp/src/general -I/home/danielk/git/Mutationpp/src/kinetics -I/home/danielk/git/Mutationpp/src/numerics -I/home/danielk/git/Mutationpp/src/thermo -I/home/danielk/git/Mutationpp/src/transfer -I/home/danielk/git/Mutationpp/src/transport -I/home/danielk/git/Mutationpp/src/utilities -I/home/danielk/git/Mutationpp/src/gsi -isystem /usr/include/eigen3 -g -O3 -DNDEBUG -std=gnu++14 -fPIC -MD -MT src/CMakeFiles/mutation++.dir/kinetics/RateManager.cpp.o -MF src/CMakeFiles/mutation++.dir/kinetics/RateManager.cpp.o.d -o src/CMakeFiles/mutation++.dir/kinetics/RateManager.cpp.o -c /home/danielk/git/Mutationpp/src/kinetics/RateManager.cpp
      In file included from /home/danielk/git/Mutationpp/src/kinetics/Reaction.h:34,
                       from /home/danielk/git/Mutationpp/src/kinetics/RateLawGroup.h:42,
                       from /home/danielk/git/Mutationpp/src/kinetics/RateManager.h:31,
                       from /home/danielk/git/Mutationpp/src/kinetics/RateManager.cpp:31:
      /home/danielk/git/Mutationpp/src/thermo/Thermodynamics.h: In member function ‘const Mutation::Thermodynamics::Species& Mutation::Thermodynamics::Thermodynamics::species(int) const’:
      /home/danielk/git/Mutationpp/src/thermo/Thermodynamics.h:200:9: error: ‘assert’ was not declared in this scope
        200 |         assert(i >= 0);
            |         ^~~~~~
      /home/danielk/git/Mutationpp/src/thermo/Thermodynamics.h:42:1: note: ‘assert’ is defined in header ‘<cassert>’; this is probably fixable by adding ‘#include <cassert>’
         41 | #include <Eigen/Dense>
        +++ |+#include <cassert>
         42 |
      /home/danielk/git/Mutationpp/src/thermo/Thermodynamics.h: In member function ‘const Mutation::Thermodynamics::Element& Mutation::Thermodynamics::Thermodynamics::element(int) const’:
      /home/danielk/git/Mutationpp/src/thermo/Thermodynamics.h:213:9: error: ‘assert’ was not declared in this scope
        213 |         assert(i >= 0);
            |         ^~~~~~
      /home/danielk/git/Mutationpp/src/thermo/Thermodynamics.h:213:9: note: ‘assert’ is defined in header ‘<cassert>’; this is probably fixable by adding ‘#include <cassert>’
      In file included from /home/danielk/git/Mutationpp/src/kinetics/RateManager.cpp:33:
      /home/danielk/git/Mutationpp/src/thermo/StateModel.h: In member function ‘void Mutation::Thermodynamics::StateModel::addTransferTerm(int, Mutation::Transfer::TransferModel*)’:
      /home/danielk/git/Mutationpp/src/thermo/StateModel.h:292:9: error: ‘assert’ was not declared in this scope
        292 |         assert(i >= 0);
            |         ^~~~~~
      /home/danielk/git/Mutationpp/src/thermo/StateModel.h:34:1: note: ‘assert’ is defined in header ‘<cassert>’; this is probably fixable by adding ‘#include <cassert>’
         33 | #include "TransferModel.h"
        +++ |+#include <cassert>
         34 |
      [20/91] Building CXX object interface/python/CMakeFiles/nanobind-static.dir/home/danielk/tmp/pip-build-env-d0tr_1ba/overlay/lib/python3.13/site-packages/nanobind/src/nb_type.cpp.o
      [21/91] Building CXX object interface/python/CMakeFiles/_mutationpp.dir/src/pyMixture.cpp.o
      FAILED: [code=1] interface/python/CMakeFiles/_mutationpp.dir/src/pyMixture.cpp.o
      /sbin/c++  -pthread -D_mutationpp_EXPORTS -I/home/danielk/.local/share/uv/python/cpython-3.13.11-linux-x86_64-gnu/include/python3.13 -I/home/danielk/tmp/pip-build-env-d0tr_1ba/overlay/lib/python3.13/site-packages/nanobind/include -I/home/danielk/git/Mutationpp/src/general -I/home/danielk/git/Mutationpp/src/kinetics -I/home/danielk/git/Mutationpp/src/numerics -I/home/danielk/git/Mutationpp/src/thermo -I/home/danielk/git/Mutationpp/src/transfer -I/home/danielk/git/Mutationpp/src/transport -I/home/danielk/git/Mutationpp/src/utilities -I/home/danielk/git/Mutationpp/src/gsi -isystem /usr/include/eigen3 -O3 -DNDEBUG -fPIC -fvisibility=hidden -fno-stack-protector -Os -ffunction-sections -fdata-sections -MD -MT interface/python/CMakeFiles/_mutationpp.dir/src/pyMixture.cpp.o -MF interface/python/CMakeFiles/_mutationpp.dir/src/pyMixture.cpp.o.d -o interface/python/CMakeFiles/_mutationpp.dir/src/pyMixture.cpp.o -c /home/danielk/git/Mutationpp/interface/python/src/pyMixture.cpp
      In file included from /home/danielk/.local/share/uv/python/cpython-3.13.11-linux-x86_64-gnu/include/python3.13/Python.h:14,
                       from /home/danielk/tmp/pip-build-env-d0tr_1ba/overlay/lib/python3.13/site-packages/nanobind/include/nanobind/nb_python.h:21,
                       from /home/danielk/tmp/pip-build-env-d0tr_1ba/overlay/lib/python3.13/site-packages/nanobind/include/nanobind/nanobind.h:32,
                       from /home/danielk/git/Mutationpp/interface/python/src/pyMixture.cpp:4:
      /home/danielk/.local/share/uv/python/cpython-3.13.11-linux-x86_64-gnu/include/python3.13/pyconfig.h:1967:9: warning: ‘_POSIX_C_SOURCE’ redefined
       1967 | #define _POSIX_C_SOURCE 200809L
            |         ^~~~~~~~~~~~~~~
      In file included from /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/os_defines.h:39,
                       from /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/c++config.h:727,
                       from /usr/include/c++/15.2.1/bits/requires_hosted.h:31,
                       from /usr/include/c++/15.2.1/vector:62,
                       from /home/danielk/git/Mutationpp/src/general/Mixture.h:31,
                       from /home/danielk/git/Mutationpp/interface/python/src/pyMixture.cpp:1:
      /usr/include/features.h:319:10: note: this is the location of the previous definition
        319 | # define _POSIX_C_SOURCE        202405L
            |          ^~~~~~~~~~~~~~~
      /home/danielk/.local/share/uv/python/cpython-3.13.11-linux-x86_64-gnu/include/python3.13/pyconfig.h:1988:9: warning: ‘_XOPEN_SOURCE’ redefined
       1988 | #define _XOPEN_SOURCE 700
            |         ^~~~~~~~~~~~~
      /usr/include/features.h:234:10: note: this is the location of the previous definition
        234 | # define _XOPEN_SOURCE  800
            |          ^~~~~~~~~~~~~
      In file included from /home/danielk/git/Mutationpp/src/general/Mixture.h:33:
      /home/danielk/git/Mutationpp/src/thermo/Thermodynamics.h: In member function ‘const Mutation::Thermodynamics::Species& Mutation::Thermodynamics::Thermodynamics::species(int) const’:
      /home/danielk/git/Mutationpp/src/thermo/Thermodynamics.h:200:9: error: ‘assert’ was not declared in this scope
        200 |         assert(i >= 0);
            |         ^~~~~~
      /home/danielk/git/Mutationpp/src/thermo/Thermodynamics.h:42:1: note: ‘assert’ is defined in header ‘<cassert>’; this is probably fixable by adding ‘#include <cassert>’
         41 | #include <Eigen/Dense>
        +++ |+#include <cassert>
         42 |
      /home/danielk/git/Mutationpp/src/thermo/Thermodynamics.h: In member function ‘const Mutation::Thermodynamics::Element& Mutation::Thermodynamics::Thermodynamics::element(int) const’:
      /home/danielk/git/Mutationpp/src/thermo/Thermodynamics.h:213:9: error: ‘assert’ was not declared in this scope
        213 |         assert(i >= 0);
            |         ^~~~~~
      /home/danielk/git/Mutationpp/src/thermo/Thermodynamics.h:213:9: note: ‘assert’ is defined in header ‘<cassert>’; this is probably fixable by adding ‘#include <cassert>’
      [22/91] Building CXX object src/CMakeFiles/mutation++.dir/general/MixtureOptions.cpp.o
      [23/91] Building CXX object src/CMakeFiles/mutation++.dir/thermo/ChemNonEqStateModel.cpp.o
      FAILED: [code=1] src/CMakeFiles/mutation++.dir/thermo/ChemNonEqStateModel.cpp.o
      /sbin/c++  -pthread  -I/home/danielk/git/Mutationpp/src/general -I/home/danielk/git/Mutationpp/src/kinetics -I/home/danielk/git/Mutationpp/src/numerics -I/home/danielk/git/Mutationpp/src/thermo -I/home/danielk/git/Mutationpp/src/transfer -I/home/danielk/git/Mutationpp/src/transport -I/home/danielk/git/Mutationpp/src/utilities -I/home/danielk/git/Mutationpp/src/gsi -isystem /usr/include/eigen3 -g -O3 -DNDEBUG -std=gnu++14 -fPIC -MD -MT src/CMakeFiles/mutation++.dir/thermo/ChemNonEqStateModel.cpp.o -MF src/CMakeFiles/mutation++.dir/thermo/ChemNonEqStateModel.cpp.o.d -o src/CMakeFiles/mutation++.dir/thermo/ChemNonEqStateModel.cpp.o -c /home/danielk/git/Mutationpp/src/thermo/ChemNonEqStateModel.cpp
      In file included from /home/danielk/git/Mutationpp/src/kinetics/Reaction.h:34,
                       from /home/danielk/git/Mutationpp/src/kinetics/RateLawGroup.h:42,
                       from /home/danielk/git/Mutationpp/src/kinetics/RateManager.h:31,
                       from /home/danielk/git/Mutationpp/src/kinetics/Kinetics.h:33,
                       from /home/danielk/git/Mutationpp/src/thermo/StateModel.h:32,
                       from /home/danielk/git/Mutationpp/src/thermo/ChemNonEqStateModel.cpp:28:
      /home/danielk/git/Mutationpp/src/thermo/Thermodynamics.h: In member function ‘const Mutation::Thermodynamics::Species& Mutation::Thermodynamics::Thermodynamics::species(int) const’:
      /home/danielk/git/Mutationpp/src/thermo/Thermodynamics.h:200:9: error: ‘assert’ was not declared in this scope
        200 |         assert(i >= 0);
            |         ^~~~~~
      /home/danielk/git/Mutationpp/src/thermo/Thermodynamics.h:42:1: note: ‘assert’ is defined in header ‘<cassert>’; this is probably fixable by adding ‘#include <cassert>’
         41 | #include <Eigen/Dense>
        +++ |+#include <cassert>
         42 |
      /home/danielk/git/Mutationpp/src/thermo/Thermodynamics.h: In member function ‘const Mutation::Thermodynamics::Element& Mutation::Thermodynamics::Thermodynamics::element(int) const’:
      /home/danielk/git/Mutationpp/src/thermo/Thermodynamics.h:213:9: error: ‘assert’ was not declared in this scope
        213 |         assert(i >= 0);
            |         ^~~~~~
      /home/danielk/git/Mutationpp/src/thermo/Thermodynamics.h:213:9: note: ‘assert’ is defined in header ‘<cassert>’; this is probably fixable by adding ‘#include <cassert>’
      /home/danielk/git/Mutationpp/src/thermo/StateModel.h: In member function ‘void Mutation::Thermodynamics::StateModel::addTransferTerm(int, Mutation::Transfer::TransferModel*)’:
      /home/danielk/git/Mutationpp/src/thermo/StateModel.h:292:9: error: ‘assert’ was not declared in this scope
        292 |         assert(i >= 0);
            |         ^~~~~~
      /home/danielk/git/Mutationpp/src/thermo/StateModel.h:34:1: note: ‘assert’ is defined in header ‘<cassert>’; this is probably fixable by adding ‘#include <cassert>’
         33 | #include "TransferModel.h"
        +++ |+#include <cassert>
         34 |
      [24/91] Building CXX object src/CMakeFiles/mutation++.dir/thermo/Composition.cpp.o
      [25/91] Building CXX object src/CMakeFiles/mutation++.dir/thermo/ChemNonEqTTvStateModel.cpp.o
      FAILED: [code=1] src/CMakeFiles/mutation++.dir/thermo/ChemNonEqTTvStateModel.cpp.o
      /sbin/c++  -pthread  -I/home/danielk/git/Mutationpp/src/general -I/home/danielk/git/Mutationpp/src/kinetics -I/home/danielk/git/Mutationpp/src/numerics -I/home/danielk/git/Mutationpp/src/thermo -I/home/danielk/git/Mutationpp/src/transfer -I/home/danielk/git/Mutationpp/src/transport -I/home/danielk/git/Mutationpp/src/utilities -I/home/danielk/git/Mutationpp/src/gsi -isystem /usr/include/eigen3 -g -O3 -DNDEBUG -std=gnu++14 -fPIC -MD -MT src/CMakeFiles/mutation++.dir/thermo/ChemNonEqTTvStateModel.cpp.o -MF src/CMakeFiles/mutation++.dir/thermo/ChemNonEqTTvStateModel.cpp.o.d -o src/CMakeFiles/mutation++.dir/thermo/ChemNonEqTTvStateModel.cpp.o -c /home/danielk/git/Mutationpp/src/thermo/ChemNonEqTTvStateModel.cpp
      In file included from /home/danielk/git/Mutationpp/src/kinetics/Reaction.h:34,
                       from /home/danielk/git/Mutationpp/src/kinetics/RateLawGroup.h:42,
                       from /home/danielk/git/Mutationpp/src/kinetics/RateManager.h:31,
                       from /home/danielk/git/Mutationpp/src/kinetics/Kinetics.h:33,
                       from /home/danielk/git/Mutationpp/src/thermo/StateModel.h:32,
                       from /home/danielk/git/Mutationpp/src/thermo/ChemNonEqTTvStateModel.cpp:28:
      /home/danielk/git/Mutationpp/src/thermo/Thermodynamics.h: In member function ‘const Mutation::Thermodynamics::Species& Mutation::Thermodynamics::Thermodynamics::species(int) const’:
      /home/danielk/git/Mutationpp/src/thermo/Thermodynamics.h:200:9: error: ‘assert’ was not declared in this scope
        200 |         assert(i >= 0);
            |         ^~~~~~
      /home/danielk/git/Mutationpp/src/thermo/Thermodynamics.h:42:1: note: ‘assert’ is defined in header ‘<cassert>’; this is probably fixable by adding ‘#include <cassert>’
         41 | #include <Eigen/Dense>
        +++ |+#include <cassert>
         42 |
      /home/danielk/git/Mutationpp/src/thermo/Thermodynamics.h: In member function ‘const Mutation::Thermodynamics::Element& Mutation::Thermodynamics::Thermodynamics::element(int) const’:
      /home/danielk/git/Mutationpp/src/thermo/Thermodynamics.h:213:9: error: ‘assert’ was not declared in this scope
        213 |         assert(i >= 0);
            |         ^~~~~~
      /home/danielk/git/Mutationpp/src/thermo/Thermodynamics.h:213:9: note: ‘assert’ is defined in header ‘<cassert>’; this is probably fixable by adding ‘#include <cassert>’
      /home/danielk/git/Mutationpp/src/thermo/StateModel.h: In member function ‘void Mutation::Thermodynamics::StateModel::addTransferTerm(int, Mutation::Transfer::TransferModel*)’:
      /home/danielk/git/Mutationpp/src/thermo/StateModel.h:292:9: error: ‘assert’ was not declared in this scope
        292 |         assert(i >= 0);
            |         ^~~~~~
      /home/danielk/git/Mutationpp/src/thermo/StateModel.h:34:1: note: ‘assert’ is defined in header ‘<cassert>’; this is probably fixable by adding ‘#include <cassert>’
         33 | #include "TransferModel.h"
        +++ |+#include <cassert>
         34 |
      [26/91] Building CXX object src/CMakeFiles/mutation++.dir/thermo/HarmonicOscillator.cpp.o
      [27/91] Building CXX object src/CMakeFiles/mutation++.dir/thermo/EquilStateModel.cpp.o
      FAILED: [code=1] src/CMakeFiles/mutation++.dir/thermo/EquilStateModel.cpp.o
      /sbin/c++  -pthread  -I/home/danielk/git/Mutationpp/src/general -I/home/danielk/git/Mutationpp/src/kinetics -I/home/danielk/git/Mutationpp/src/numerics -I/home/danielk/git/Mutationpp/src/thermo -I/home/danielk/git/Mutationpp/src/transfer -I/home/danielk/git/Mutationpp/src/transport -I/home/danielk/git/Mutationpp/src/utilities -I/home/danielk/git/Mutationpp/src/gsi -isystem /usr/include/eigen3 -g -O3 -DNDEBUG -std=gnu++14 -fPIC -MD -MT src/CMakeFiles/mutation++.dir/thermo/EquilStateModel.cpp.o -MF src/CMakeFiles/mutation++.dir/thermo/EquilStateModel.cpp.o.d -o src/CMakeFiles/mutation++.dir/thermo/EquilStateModel.cpp.o -c /home/danielk/git/Mutationpp/src/thermo/EquilStateModel.cpp
      In file included from /home/danielk/git/Mutationpp/src/kinetics/Reaction.h:34,
                       from /home/danielk/git/Mutationpp/src/kinetics/RateLawGroup.h:42,
                       from /home/danielk/git/Mutationpp/src/kinetics/RateManager.h:31,
                       from /home/danielk/git/Mutationpp/src/kinetics/Kinetics.h:33,
                       from /home/danielk/git/Mutationpp/src/thermo/StateModel.h:32,
                       from /home/danielk/git/Mutationpp/src/thermo/EquilStateModel.cpp:28:
      /home/danielk/git/Mutationpp/src/thermo/Thermodynamics.h: In member function ‘const Mutation::Thermodynamics::Species& Mutation::Thermodynamics::Thermodynamics::species(int) const’:
      /home/danielk/git/Mutationpp/src/thermo/Thermodynamics.h:200:9: error: ‘assert’ was not declared in this scope
        200 |         assert(i >= 0);
            |         ^~~~~~
      /home/danielk/git/Mutationpp/src/thermo/Thermodynamics.h:42:1: note: ‘assert’ is defined in header ‘<cassert>’; this is probably fixable by adding ‘#include <cassert>’
         41 | #include <Eigen/Dense>
        +++ |+#include <cassert>
         42 |
      /home/danielk/git/Mutationpp/src/thermo/Thermodynamics.h: In member function ‘const Mutation::Thermodynamics::Element& Mutation::Thermodynamics::Thermodynamics::element(int) const’:
      /home/danielk/git/Mutationpp/src/thermo/Thermodynamics.h:213:9: error: ‘assert’ was not declared in this scope
        213 |         assert(i >= 0);
            |         ^~~~~~
      /home/danielk/git/Mutationpp/src/thermo/Thermodynamics.h:213:9: note: ‘assert’ is defined in header ‘<cassert>’; this is probably fixable by adding ‘#include <cassert>’
      /home/danielk/git/Mutationpp/src/thermo/StateModel.h: In member function ‘void Mutation::Thermodynamics::StateModel::addTransferTerm(int, Mutation::Transfer::TransferModel*)’:
      /home/danielk/git/Mutationpp/src/thermo/StateModel.h:292:9: error: ‘assert’ was not declared in this scope
        292 |         assert(i >= 0);
            |         ^~~~~~
      /home/danielk/git/Mutationpp/src/thermo/StateModel.h:34:1: note: ‘assert’ is defined in header ‘<cassert>’; this is probably fixable by adding ‘#include <cassert>’
         33 | #include "TransferModel.h"
        +++ |+#include <cassert>
         34 |
      [28/91] Building CXX object src/CMakeFiles/mutation++.dir/kinetics/Reaction.cpp.o
      [29/91] Building CXX object src/CMakeFiles/mutation++.dir/numerics/Interpolators.cpp.o
      ninja: build stopped: subcommand failed.
      
      *** CMake build failed
      [end of output]
  
  note: This error originates from a subprocess, and is likely not a problem with pip.
  ERROR: Failed building wheel for mutationpp
Failed to build mutationpp
error: failed-wheel-build-for-install

× Failed to build installable wheels for some pyproject.toml based projects
╰─> mutationpp

however, reading the build errors and the cmake files a bit, it seemed to be an issue with asserts being used without proper header inclusion so i kinda hacked in a cmake command in the pyproject.toml like so

diff --git a/pyproject.toml b/pyproject.toml
index 4fa3725..ce45a0a 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -41,6 +41,9 @@ test = ["pytest"]
 experimental = true
 sdist.cmake = false
 sdist.exclude = [".*"]
+cmake.args = [
+    "-DCMAKE_CXX_FLAGS_RELEASE='-O3 -DNDEBUG -include cassert'",
+]
 [tool.scikit-build.metadata.version]
 provider = "scikit_build_core.metadata.regex"
 regex = '^project\(mutation\+\+\s*\n^\s*VERSION\s*(?P<value>\d+\.\d+\.\d+)\s*$'

and that seems to have fixed the issue - tests run fine:

 pytest
==================== test session starts =====================
platform linux -- Python 3.13.11, pytest-9.0.3, pluggy-1.6.0
rootdir: /home/danielk/git/Mutationpp
configfile: pyproject.toml
testpaths: tests/python
collected 68 items                                                                                                                                                                                                                             

tests/python/test_mutation.py ...............................................................                                                                                                                                            [ 92%]
tests/python/test_options.py .....                                                                                                                                                                                                       [100%]
===================== 68 passed in 0.16s =====================

Just wanted to let you know in case there is some quick fix that is possible to avoid this patch because i guess it would not be desirable to have these extra flags on every system if it runs without them :) im not familiar enough with your setup to try to suggest the proper way of doing it I'm afraid

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions