Bug 2406036
| Summary: | nix-2.32 needs boost >= 1.87 | ||
|---|---|---|---|
| Product: | [Fedora] Fedora | Reporter: | Jens Petersen <petersen> |
| Component: | boost | Assignee: | Jonathan Wakely <jwakely> |
| Status: | CLOSED DUPLICATE | QA Contact: | Fedora Extras Quality Assurance <extras-qa> |
| Severity: | medium | Docs Contact: | |
| Priority: | unspecified | ||
| Version: | rawhide | CC: | codonell, denis.arnaud_fedora, jwakely, laurent.rineau__fedora, mcermak, ppalka, ralvaro, zbyszek |
| Target Milestone: | --- | Keywords: | Tracking |
| Target Release: | --- | Flags: | codonell:
mirror+
|
| Hardware: | Unspecified | ||
| OS: | Linux | ||
| Whiteboard: | |||
| Fixed In Version: | Doc Type: | --- | |
| Doc Text: | Story Points: | --- | |
| Clone Of: | Environment: | ||
| Last Closed: | 2025-10-26 09:08:36 UTC | Type: | --- |
| Regression: | --- | Mount Type: | --- |
| Documentation: | --- | CRM: | |
| Verified Versions: | Category: | --- | |
| oVirt Team: | --- | RHEL 7.3 requirements from Atomic Host: | |
| Cloudforms Team: | --- | Target Upstream Version: | |
| Embargoed: | |||
|
Description
Jens Petersen
2025-10-23 14:38:07 UTC
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 *** |