Hi, Laurent Gatto <laurent.ga...@gmail.com> writes:
> On Sat, 16 Nov 2024 at 11:56, Laurent Gatto <laurent.ga...@gmail.com> wrote: >> >> Hi Fredrik, >> >> Excellent advice, and I was able to identify the culprit. Awesome! >> Here's a simple reproducible example >> >> $ guix shell --container gcc-toolchain >> [env]$ g++ main.cpp >> [env]$ exit >> >> $ guix shell --container gcc-toolchain gfortran-toolchain >> [env]$ g++ main.cpp >> In file included from >> /gnu/store/68l504nyvms77jzfg9yf4njiyfbi8gm2-profile/include/c++/bits/move.h:57, >> from >> /gnu/store/68l504nyvms77jzfg9yf4njiyfbi8gm2-profile/include/c++/bits/exception_ptr.h:43, >> from >> /gnu/store/68l504nyvms77jzfg9yf4njiyfbi8gm2-profile/include/c++/exception:153, >> from >> /gnu/store/68l504nyvms77jzfg9yf4njiyfbi8gm2-profile/include/c++/ios:39, >> from >> /gnu/store/68l504nyvms77jzfg9yf4njiyfbi8gm2-profile/include/c++/ostream:38, >> from >> /gnu/store/68l504nyvms77jzfg9yf4njiyfbi8gm2-profile/include/c++/iostream:39, >> from main.cpp:1: >> /gnu/store/68l504nyvms77jzfg9yf4njiyfbi8gm2-profile/include/c++/type_traits:732:26: >> error: expected identifier before '(' token >> 732 | _GLIBCXX20_DEPRECATED("use is_standard_layout && >> is_trivial instead") >> | ^ >> /gnu/store/68l504nyvms77jzfg9yf4njiyfbi8gm2-profile/include/c++/type_traits:732:27: >> error: expected unqualified-id before string constant >> 732 | _GLIBCXX20_DEPRECATED("use is_standard_layout && >> is_trivial instead") >> | >> ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ >> /gnu/store/68l504nyvms77jzfg9yf4njiyfbi8gm2-profile/include/c++/type_traits:732:27: >> error: expected ')' before string constant >> 732 | _GLIBCXX20_DEPRECATED("use is_standard_layout && >> is_trivial instead") >> | >> ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ >> | ) >> /gnu/store/68l504nyvms77jzfg9yf4njiyfbi8gm2-profile/include/c++/type_traits:3154:25: >> error: expected unqualified-id before string constant >> 3154 | _GLIBCXX20_DEPRECATED("use is_standard_layout_v && >> is_trivial_v instead") >> | >> ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ >> /gnu/store/68l504nyvms77jzfg9yf4njiyfbi8gm2-profile/include/c++/type_traits:3154:25: >> error: expected ')' before string constant >> 3154 | _GLIBCXX20_DEPRECATED("use is_standard_layout_v && >> is_trivial_v instead") >> | >> ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ >> | ) > > The order of the packages does matter. The above fails, but if I pass > gfortran-toolchain before gcc-toolchain, it works: > > $ guix shell --container gfortran-toolchain gcc-toolchain > [env]$ g++ main.cpp > [env]$ ./a.out > 201703 > > Is this really expected? This sounds like a bug. Especially if it is order dependent if it works or not. And I can confirm that I can reproduce it on my end as well. >> I also confirmed that I was able to compile that source code by simply >> commenting gfortran-toolchain in my system manifest. >> >> Isn't this weird though? What if I need both? It should work to have both in the same context. Probably some issue with how they are package up — I haven't checked the packaging for them. But I have built gcc from source with both g++ and gfortran without any issues. That was gcc-9 and gcc-11 so maybe something broke in upstream with gcc-14? Although I find that unlikely. Anyway, best is to send in a bug report to guix now that you have a small reproducible test that show case the issue. -- s/Fred[re]+i[ck]+/Fredrik/g