Package: guix;
Reported by: Laurent Gatto <laurent.gatto <at> gmail.com>
Date: Thu, 21 Nov 2024 07:59:01 UTC
Severity: normal
To reply to this bug, email your comments to 74455 AT debbugs.gnu.org.
Toggle the display of automated, internal messages from the tracker.
View this report as an mbox folder, status mbox, maintainer mbox
bug-guix <at> gnu.org
:bug#74455
; Package guix
.
(Thu, 21 Nov 2024 07:59:01 GMT) Full text and rfc822 format available.Laurent Gatto <laurent.gatto <at> gmail.com>
:bug-guix <at> gnu.org
.
(Thu, 21 Nov 2024 07:59:01 GMT) Full text and rfc822 format available.Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):
From: Laurent Gatto <laurent.gatto <at> gmail.com> To: bug-guix <at> gnu.org Subject: gcc-toolchain and gfortran-toolchain conflict Date: Thu, 21 Nov 2024 08:57:55 +0100
Here's a simple C++ chunk ``` $ cat main.cpp #include <iostream> int main(void) { std::cout << __cplusplus; return 0; } ``` that compiles as expected, with the latest gcc version ``` $ guix shell --container gcc-toolchain The following derivation will be built: /gnu/store/bvgndd1r6171zly7ir7fzlpygb1ka7b3-profile.drv listing Emacs sub-directories... building profile with 1 package... [env]$ g++ main.cpp [env]$ gcc --version gcc (GCC) 14.2.0 Copyright (C) 2024 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. ``` I'm using the following generation ``` $ guix describe Generation 70 Nov 20 2024 00:02:35 (current) [...] guix 1e6d1c3 repository URL: https://git.savannah.gnu.org/git/guix.git branch: master commit: 1e6d1c32117e9f731e50dcd286927a5fa0d17afc ``` This still works if I add gfortran-toolchain *before* gcc-toolchaine ``` $ guix shell --container gfortran-toolchain gcc-toolchain The following derivation will be built: /gnu/store/48ryz9p3sc2qmv9xv2s4s032g1bdkxgr-profile.drv listing Emacs sub-directories... building profile with 2 packages... [env]$ g++ main.cpp ``` But fails I add gfortran-toolchain *after* gcc-toolchaine ``` $ guix shell --container gcc-toolchain gfortran-toolchain The following derivation will be built: /gnu/store/4ff7am6zjplhi1p9lin09nbqzk30rijn-profile.drv listing Emacs sub-directories... building profile with 2 packages... $ $ g++ main.cpp In file included from /gnu/store/hhzpa2yx8cz92cgm7xjpd2pp6pk74g96-profile/include/c++/bits/move.h:57, from /gnu/store/hhzpa2yx8cz92cgm7xjpd2pp6pk74g96-profile/include/c++/bits/exception_ptr.h:43, from /gnu/store/hhzpa2yx8cz92cgm7xjpd2pp6pk74g96-profile/include/c++/exception:153, from /gnu/store/hhzpa2yx8cz92cgm7xjpd2pp6pk74g96-profile/include/c++/ios:39, from /gnu/store/hhzpa2yx8cz92cgm7xjpd2pp6pk74g96-profile/include/c++/ostream:38, from /gnu/store/hhzpa2yx8cz92cgm7xjpd2pp6pk74g96-profile/include/c++/iostream:39, from main.cpp:1: /gnu/store/hhzpa2yx8cz92cgm7xjpd2pp6pk74g96-profile/include/c++/type_traits:732:26: error: expected identifier before '(' token 732 | _GLIBCXX20_DEPRECATED("use is_standard_layout && is_trivial instead") | ^ /gnu/store/hhzpa2yx8cz92cgm7xjpd2pp6pk74g96-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/hhzpa2yx8cz92cgm7xjpd2pp6pk74g96-profile/include/c++/type_traits:732:27: error: expected ')' before string constant 732 | _GLIBCXX20_DEPRECATED("use is_standard_layout && is_trivial instead") | ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ) /gnu/store/hhzpa2yx8cz92cgm7xjpd2pp6pk74g96-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/hhzpa2yx8cz92cgm7xjpd2pp6pk74g96-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 discussion on help-guix that led to this is available here [1]. Don't hesitate to get back to me for more details. Laurent [1] https://lists.gnu.org/archive/html/help-guix/2024-11/msg00066.html
bug-guix <at> gnu.org
:bug#74455
; Package guix
.
(Mon, 06 Jan 2025 19:26:02 GMT) Full text and rfc822 format available.Message #8 received at 74455 <at> debbugs.gnu.org (full text, mbox):
From: Simon Tournier <zimon.toutoune <at> gmail.com> To: Laurent Gatto <laurent.gatto <at> gmail.com>, 74455 <at> debbugs.gnu.org Subject: Re: bug#74455: gcc-toolchain and gfortran-toolchain conflict Date: Mon, 06 Jan 2025 20:11:08 +0100
Hi, On Thu, 21 Nov 2024 at 08:57, Laurent Gatto <laurent.gatto <at> gmail.com> wrote: > But fails I add gfortran-toolchain *after* gcc-toolchain That’s because both are “more or less” some GCC toolchain and provides similar subset of files. Here, the version of the both default toolchains does not match (14 vs 11). Since the profile is built using the command line order, then depending on which one comes first, you have one version or the other for some of these files. And as you can see, the compiler is g++ version 14 but using files from version 11… --8<---------------cut here---------------start------------->8--- $ readlink -f /gnu/store/hhzpa2yx8cz92cgm7xjpd2pp6pk74g96-profile/include/c++/type_traits /gnu/store/piai5ba5fx901hr7pwnz2b9vysrrjmlh-gfortran-11.4.0/include/c++/type_traits --8<---------------cut here---------------end--------------->8--- …and bang! If both are at 11, then it works as expected: --8<---------------cut here---------------start------------->8--- $ cat main.cpp #include <iostream> int main(void) { std::cout << __cplusplus; return 0; } $ guix time-machine -q --commit=1e6d1c3 \ -- shell gcc-toolchain <at> 11 gfortran-toolchain \ -- g++ --version g++ (GCC) 11.4.0 Copyright (C) 2021 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. $ guix time-machine -q --commit=1e6d1c3 \ -- shell gcc-toolchain <at> 11 gfortran-toolchain \ -- g++ main.cpp && ./a.out 201703 --8<---------------cut here---------------end--------------->8--- Well, the naive question: Does it make sense to have in the same profile some C/C++ GCC toolchain at one version and some Fortran GCC toolchain at another version? Depending on the answer, I guess the fix is not the same. :-) Cheers, simon
bug-guix <at> gnu.org
:bug#74455
; Package guix
.
(Tue, 07 Jan 2025 09:23:01 GMT) Full text and rfc822 format available.Message #11 received at 74455 <at> debbugs.gnu.org (full text, mbox):
From: Laurent Gatto <laurent.gatto <at> gmail.com> To: Simon Tournier <zimon.toutoune <at> gmail.com> Cc: 74455 <at> debbugs.gnu.org Subject: Re: bug#74455: gcc-toolchain and gfortran-toolchain conflict Date: Tue, 7 Jan 2025 10:22:17 +0100
Hi Simon, Thank you for looking into this! > Well, the naive question: Does it make sense to have in the same profile > some C/C++ GCC toolchain at one version and some Fortran GCC toolchain > at another version? These are the versions I ended up with when installing the latest toolchains, and thought they would work together. Clearly that's not the case, and hence my bug isn't a bug. I have learnt that I need to make sure the toolchain versions match, that's very useful and addresses the original issue that led to this report. Wil there be a fortran-toolchain 14 at some point, or are there technical reasons that hold it back? Best wishes, Laurent On Mon, 6 Jan 2025 at 20:25, Simon Tournier <zimon.toutoune <at> gmail.com> wrote: > > Hi, > > On Thu, 21 Nov 2024 at 08:57, Laurent Gatto <laurent.gatto <at> gmail.com> wrote: > > > But fails I add gfortran-toolchain *after* gcc-toolchain > > That’s because both are “more or less” some GCC toolchain and provides > similar subset of files. Here, the version of the both default > toolchains does not match (14 vs 11). Since the profile is built using > the command line order, then depending on which one comes first, you > have one version or the other for some of these files. > > And as you can see, the compiler is g++ version 14 but using files from > version 11… > > --8<---------------cut here---------------start------------->8--- > $ readlink -f /gnu/store/hhzpa2yx8cz92cgm7xjpd2pp6pk74g96-profile/include/c++/type_traits > /gnu/store/piai5ba5fx901hr7pwnz2b9vysrrjmlh-gfortran-11.4.0/include/c++/type_traits > --8<---------------cut here---------------end--------------->8--- > > …and bang! > > If both are at 11, then it works as expected: > > --8<---------------cut here---------------start------------->8--- > $ cat main.cpp > #include <iostream> > > int main(void) { > std::cout << __cplusplus; > > return 0; > } > > $ guix time-machine -q --commit=1e6d1c3 \ > -- shell gcc-toolchain <at> 11 gfortran-toolchain \ > -- g++ --version > g++ (GCC) 11.4.0 > Copyright (C) 2021 Free Software Foundation, Inc. > This is free software; see the source for copying conditions. There is NO > warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. > > $ guix time-machine -q --commit=1e6d1c3 \ > -- shell gcc-toolchain <at> 11 gfortran-toolchain \ > -- g++ main.cpp && ./a.out > 201703 > --8<---------------cut here---------------end--------------->8--- > > > Well, the naive question: Does it make sense to have in the same profile > some C/C++ GCC toolchain at one version and some Fortran GCC toolchain > at another version? > > Depending on the answer, I guess the fix is not the same. :-) > > Cheers, > simon
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.