Without the change `nlohmann_json` build on `gcc-13 `fails as:
In file included from <<NIX>>-gcc-13.0.0/include/c++/13.0.0/ext/alloc_traits.h:34,
from <<NIX>>-gcc-13.0.0/include/c++/13.0.0/bits/basic_string.h:39,
from <<NIX>>-gcc-13.0.0/include/c++/13.0.0/string:54,
from <<NIX>>-gcc-13.0.0/include/c++/13.0.0/bits/locale_classes.h:40,
from <<NIX>>-gcc-13.0.0/include/c++/13.0.0/locale:41,
from tests/src/unit-regression2.cpp:19:
<<NIX>>-gcc-13.0.0/include/c++/13.0.0/bits/alloc_traits.h: In instantiation of 'struct std::__allocator_traits_base::__rebind<my_allocator<unsigned char>, unsigned char, void>':
<<NIX>>-gcc-13.0.0/include/c++/13.0.0/bits/alloc_traits.h:94:11: required by substitution of 'template<class _Alloc, class _Up> using std::__alloc_rebind = typename std::__allocator_traits_base::__rebind<_Alloc, _Up>::type [with _Alloc = my_allocator<unsigned char>; _Up = unsigned char]'
<<NIX>>-gcc-13.0.0/include/c++/13.0.0/bits/alloc_traits.h:228:8: required by substitution of 'template<class _Alloc> template<class _Tp> using std::allocator_traits< <template-parameter-1-1> >::rebind_alloc = std::__alloc_rebind<_Alloc, _Tp> [with _Tp = unsigned char; _Alloc = my_allocator<unsigned char>]'
<<NIX>>-gcc-13.0.0/include/c++/13.0.0/ext/alloc_traits.h:126:65: required from 'struct __gnu_cxx::__alloc_traits<my_allocator<unsigned char>, unsigned char>::rebind<unsigned char>'
<<NIX>>-gcc-13.0.0/include/c++/13.0.0/bits/stl_vector.h:88:21: required from 'struct std::_Vector_base<unsigned char, my_allocator<unsigned char> >'
<<NIX>>-gcc-13.0.0/include/c++/13.0.0/bits/stl_vector.h:423:11: required from 'class std::vector<unsigned char, my_allocator<unsigned char> >'
tests/src/unit-regression2.cpp:807:63: required from here
<<NIX>>-gcc-13.0.0/include/c++/13.0.0/bits/alloc_traits.h:70:31: error: static assertion failed: allocator_traits<A>::rebind_alloc<A::value_type> must be A
70 | _Tp>::value,
| ^~~~~
The existing nlohmann_json expression prevents users from overriding
fields (like `doCheck`) because it uses `rec` in the argument to
`mkDerivation`. Let's use the shiny new
pass-a-function-to-`mkDerivation` feature to do the same thing without
blocking overrides.
Semi-automatic update generated by https://github.com/ryantm/nix-update tools. These checks were done:
- built on NixOS
- Warning: no binary found that responded to help or version flags. (This warning appears even if the package isn't expected to have binaries.)
- found 3.1.2 with grep in /nix/store/ak7p93w4pkmjvx5fi82fg40rra5z6g44-nlohmann_json-3.1.2
- directory tree listing: https://gist.github.com/cebf8a5968a9c2ae65ec58227044fcad
Semi-automatic update. These checks were performed:
- built on NixOS
- found 3.1.1 with grep in /nix/store/4pydihqzddnsfmlc2zcn6qlwi7m2p1k1-nlohmann_json-3.1.1
- found 3.1.1 in filename of file in /nix/store/4pydihqzddnsfmlc2zcn6qlwi7m2p1k1-nlohmann_json-3.1.1
`cmake` should be in `nativeBuildInputs` as it is only required at build time. For obvious reasons we can't have the tests running during a cross-compile. I figured I'd update the package version while I was at it, though these changes have also been tested independently of the version update.