Bug 2406036 - nix-2.32 needs boost >= 1.87
Summary: nix-2.32 needs boost >= 1.87
Keywords:
Status: CLOSED DUPLICATE of bug 2178871
Alias: None
Product: Fedora
Classification: Fedora
Component: boost
Version: rawhide
Hardware: Unspecified
OS: Linux
unspecified
medium
Target Milestone: ---
Assignee: Jonathan Wakely
QA Contact: Fedora Extras Quality Assurance
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2025-10-23 14:38 UTC by Jens Petersen
Modified: 2025-10-26 18:43 UTC (History)
8 users (show)

Fixed In Version:
Clone Of:
Environment:
Last Closed: 2025-10-26 09:08:36 UTC
Type: ---
Embargoed:
codonell: mirror+


Attachments (Terms of Use)


Links
System ID Private Priority Status Summary Last Updated
Red Hat Issue Tracker FC-2585 0 None None None 2025-10-26 18:43:18 UTC

Description Jens Petersen 2025-10-23 14:38:07 UTC
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

Comment 1 Jonathan Wakely 2025-10-23 14:46:20 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

Comment 2 Jonathan Wakely 2025-10-23 14:53:23 UTC
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?

Comment 3 Jens Petersen 2025-10-23 16:30:35 UTC
Thank you very for the quick response.

Let me retry building to dig a bit more then.

Comment 4 Jens Petersen 2025-10-23 16:46:21 UTC
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?

Comment 5 Jens Petersen 2025-10-23 17:12:05 UTC
(I opened https://github.com/NixOS/nix/pull/14340)

Comment 6 Jonathan Wakely 2025-10-23 17:44:48 UTC
(In reply to Jens Petersen from comment #4)
> Do you have plans to update boost?

I guess we do now :-)

It's overdue anyway.

Comment 7 Jens Petersen 2025-10-25 05:26:59 UTC
Thanks, I guess this is basically a duplicate of bug 2178871 then

Comment 8 Zbigniew Jędrzejewski-Szmek 2025-10-26 09:08:36 UTC

*** This bug has been marked as a duplicate of bug 2178871 ***


Note You need to log in before you can comment on or make changes to this bug.