Hi there, I set up a full stack build from stage1 to stage3 using Catalyst, with ACCEPT_KEYWORDS="~amd64" and default/linux/amd64/17.0 profile. I ran into an issue caused by the cxx to gold+plugins USE flag transition (see #677888) The USE flag is almost built in /usr/portage/profiles/base/make.defaults, where there are BOOTSTRAP_USE and USE which add cxx flag explicitly. sys-devel/binutils now requires gold and plugins USE flags but these are not set. To prevent this, I have to explicitly override USE flag in catalystrc and package.use, which is not wanted because I think theses stages should be built without any USE flag alteration. I am not sure if this is the right place to fill this issue because it is related to Portage, please let me know. Best regards, Alexis.
bug #663776 change USE=+cxx to USE="+gold +plugins". I think normally none of two should be needed for a default system. Is USE=cxx (or their substitutes) really needed for stages bootstrap?
When commit 39d937a0feb6af576c2c751e44afce92452960d7 [1] is reverted, then this bug should solve itself. So fixing bug #677888 and reverting above commit looks like optimal solution. [1] https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=39d937a0feb6af576c2c751e44afce92452960d7
I am not sure which is the right solution. If there really is a transition to depend on gold+plugins when cxx is activated, the fix must be done be in profiles. Here are the line in the base profile where the cxx use flag is activated: https://gitweb.gentoo.org/repo/gentoo.git/tree/profiles/base/make.defaults#n111 https://gitweb.gentoo.org/repo/gentoo.git/tree/profiles/base/make.defaults#n128 If not, the revert of the commit should be enough.
You can try removing USE="${USE} cxx" line locally and check if can bootstrap a system for you. I think it's not needed nowadays. binutils should have never required it and gcc[cxx] is a forced flag for native builds.
(In reply to Sergei Trofimovich from comment #4) > You can try removing > USE="${USE} cxx" Sorry, I meant removing 'cxx' from: BOOTSTRAP_USE="cxx ...
Removed cxx from both USE and BOOTSTRAP_USE from portage/profiles/base/make.defaults in my local portage snapshot. Stage1 build is now running. No USE flag constraint violation for now. I will tell you if stage2 and stage3 are following nicely. Thanks!
(In reply to Alexis Lahouze from comment #6) > Stage1 build is now running. It seems gcc is now built without cxx use flag.I will see where it is going tomorrow.
For historical context, I'm adding some links here. https://bugs.gentoo.org/390701 - bug about the broken stages after the move from the nocxx to the cxx use flag https://sources.gentoo.org/cgi-bin/viewvc.cgi/gentoo-x86/profiles/base/make.defaults?r1=1.71&r2=1.72 - diff or the original update to the base profile https://390701.bugs.gentoo.org/attachment.cgi?id=292827 - original complete profile patch If @toolchain doesn't see any issue with dropping cxx from BOOTSTRAP_USE, I don't see any reason for RelEng to object.
Stage1 build is done. Stage2 failed, but I don't think it is related to cxx USE flag, this is a Perl error (Can't locate Locale/Messages.pm in @INC). It seems the build in stage2 is done in stable not with ~amd64, so there is some mess with perl library versions. Will try to fix this to build stage2 with ~amd64, I'll let you know.
(In reply to Alexis Lahouze from comment #9) > Will try to fix this to build stage2 with ~amd64, I'll let you know. Nope, was wrong, ~amd64 keyword is accepted in my build, the issue is elsewhere, I will find out to resume build on stage2.
(In reply to Alexis Lahouze from comment #10) > (In reply to Alexis Lahouze from comment #9) > > > Will try to fix this to build stage2 with ~amd64, I'll let you know. > > Nope, was wrong, ~amd64 keyword is accepted in my build, the issue is > elsewhere, I will find out to resume build on stage2. Stage2 build passed after running perl-cleaner --reallyall. I don't know why I had to do this, I thought perl packages were merged in stage1. Continuing to stage3.
(In reply to Alexis Lahouze from comment #11) > (In reply to Alexis Lahouze from comment #10) > > (In reply to Alexis Lahouze from comment #9) > > > > > Will try to fix this to build stage2 with ~amd64, I'll let you know. > > > > Nope, was wrong, ~amd64 keyword is accepted in my build, the issue is > > elsewhere, I will find out to resume build on stage2. > > Stage2 build passed after running perl-cleaner --reallyall. I don't know why > I had to do this, I thought perl packages were merged in stage1. > > Continuing to stage3. I had a dependency cycle not related to cxx use flag, fixed by adding USE="-filecaps" in catalystrc. Build is ongoing.
The bug has been closed via the following commit(s): https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=9f709b636e948552d72c4a94cd632bfa30f97e3a commit 9f709b636e948552d72c4a94cd632bfa30f97e3a Author: Sergei Trofimovich <slyfox@gentoo.org> AuthorDate: 2019-02-28 20:16:58 +0000 Commit: Sergei Trofimovich <slyfox@gentoo.org> CommitDate: 2019-02-28 20:33:57 +0000 profiles/base/make.defaults: drop IUSE=cxx from BOOTSTRAP_USE IUSE=cxx was removed from binutils in bug #663776 in favour of IUSE="gold plugins." USE=cxx is a no-op for non-cross gcc. And binutils's gold and plugin support should not be needed to bootstrap a toolchain. Reported-by: Alexis Lahouze Tested-by: Alexis Lahouze Reviewed-by: Jorge Manuel B. S. Vicetto Bug: https://bugs.gentoo.org/663776 Closes: https://bugs.gentoo.org/678766#c8 Signed-off-by: Sergei Trofimovich <slyfox@gentoo.org> profiles/base/make.defaults | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
(In reply to Sergei Trofimovich from comment #5) > (In reply to Sergei Trofimovich from comment #4) > > You can try removing > > USE="${USE} cxx" > > Sorry, I meant removing 'cxx' from: > BOOTSTRAP_USE="cxx ... Hi Sergei, Is there a reason to leave USE="${USE} cxx" in base profile? I have not tested yet but I think it will cause the same kind of issue as for BOOTSTRAP_USE (I removed both for my test and it seems in good way to finish my whole build).
(In reply to Alexis Lahouze from comment #14) > (In reply to Sergei Trofimovich from comment #5) > > (In reply to Sergei Trofimovich from comment #4) > > > You can try removing > > > USE="${USE} cxx" > > > > Sorry, I meant removing 'cxx' from: > > BOOTSTRAP_USE="cxx ... > > Hi Sergei, > > Is there a reason to leave USE="${USE} cxx" in base profile? I have not > tested yet but I think it will cause the same kind of issue as for > BOOTSTRAP_USE (I removed both for my test and it seems in good way to finish > my whole build). BOOTSTRAP_USE is a bit special as it uses 'USE="-* ${BOOTSTRAP_USE}" ...'. That it the main source of inconsistency. USE=cxx is just a default that is supposed to be consistent with rest of defaults in ::gentoo. If it's not then it's likely a different bug.
(In reply to Sergei Trofimovich from comment #15) > (In reply to Alexis Lahouze from comment #14) > > […] > > BOOTSTRAP_USE is a bit special as it uses 'USE="-* ${BOOTSTRAP_USE}" ...'. > That it the main source of inconsistency. > > USE=cxx is just a default that is supposed to be consistent with rest of > defaults in ::gentoo. If it's not then it's likely a different bug. Ok, THank you for your reply! I will fill a bug for USE="${USE} cxx" if it is needed.
Hello, Last comment to tell you the build passed from stage1 to stage3 with ~amd64 and unmodified last portage snapshot. Thank you!