nix-1.32 now requires boost-unordered in order to build. AFAICT it is a boost module: https://github.com/boostorg/unordered Is that something that could be enabled or added to the fedora boost package? Reproducible: Always
I don't know what "a boost module" means. Boost is developed using Git submodules, but you can't just mix and match them individually. It's released as a single tarball with a cohesive set of snapshots of those submodules, which are known to work correctly together. The Boost.Unordered headers are already present in Fedora, and have been for many years: $ ls /usr/include/boost/unordered concurrent_flat_map.hpp detail unordered_flat_map.hpp unordered_flat_set.hpp unordered_map.hpp unordered_node_map.hpp unordered_node_set.hpp unordered_set.hpp concurrent_flat_map_fwd.hpp hash_traits.hpp unordered_flat_map_fwd.hpp unordered_flat_set_fwd.hpp unordered_map_fwd.hpp unordered_node_map_fwd.hpp unordered_node_set_fwd.hpp unordered_set_fwd.hpp
Maybe you mean that nix requires some feature from Boost.Unordered that was only added in a recent Boost release, and the one in Fedora is too old?
Thank you very for the quick response. Let me retry building to dig a bit more then.
Okay this is the error I am getting locally on rawhide: g++ -Isrc/libexpr/libnixexpr.so.2.32.0.p -Isrc/libexpr -I../src/libexpr -Isrc/libexpr/include -I../src/libexpr/include -Isrc/libutil/include -I../src/libutil/include -I../src/libutil/widecharwidth -Isrc/libutil/linux/include -I../src/libutil/linux/include -Isrc/libutil/unix -I../src/libutil/unix -Isrc/libutil/unix/include -I../src/libutil/unix/include -Isrc/libstore/include -I../src/libstore/include -Isrc/libstore/linux/include -I../src/libstore/linux/include -Isrc/libstore/unix/include -I../src/libstore/unix/include -Isrc/libfetchers/include -I../src/libfetchers/include -fdiagnostics-color=always -D_GLIBCXX_ASSERTIONS=1 -D_FILE_OFFSET_BITS=64 -Wall -Winvalid-pch -std=c++23 -Wdeprecated-copy -Werror=suggest-override -Werror=switch -Werror=switch-enum -Werror=undef -Werror=unused-result -Werror=sign-compare -Wignored-qualifiers -Wimplicit-fallthrough -Wno-deprecated-declarations -O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -march=x86-64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -mtls-dialect=gnu2 -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -fPIC -DBOOST_CONTAINER_DYN_LINK=1 -DBOOST_CONTEXT_DYN_LINK=1 -DBOOST_ALL_NO_LIB -std=c++23 -std=c++23 -std=c++23 -pthread -MD -MQ src/libexpr/libnixexpr.so.2.32.0.p/eval.cc.o -MF src/libexpr/libnixexpr.so.2.32.0.p/eval.cc.o.d -o src/libexpr/libnixexpr.so.2.32.0.p/eval.cc.o -c ../src/libexpr/eval.cc ../src/libexpr/eval.cc: In member function ‘void nix::EvalState::evalFile(const nix::SourcePath&, nix::Value&, bool)’: ../src/libexpr/eval.cc:1096:20: error: ‘class boost::unordered::concurrent_flat_map<nix::SourcePath, nix::Value*, std::hash<nix::SourcePath>, std::equal_to<nix::SourcePath>, traceable_allocator<std::pair<const nix::SourcePath, nix::Value*> > >’ has no member named ‘try_emplace_and_cvisit’; did you mean ‘try_emplace_or_cvisit’? 1096 | fileEvalCache->try_emplace_and_cvisit( | ^~~~~~~~~~~~~~~~~~~~~~ | try_emplace_or_cvisit Yea, looks you were right that a newer version is probably needed: https://github.com/boostorg/unordered/commit/834580b53948eec553c232dda40beefc68b3e8f9 from last year So I guess it needs 1.87 or later? Do you have plans to update boost?
(I opened https://github.com/NixOS/nix/pull/14340)
(In reply to Jens Petersen from comment #4) > Do you have plans to update boost? I guess we do now :-) It's overdue anyway.
Thanks, I guess this is basically a duplicate of bug 2178871 then
*** This bug has been marked as a duplicate of bug 2178871 ***