Subject: bug#71921: Bootstrapping path discovered for RISC-V 64bit

From: Efraim Flashner <[email-masked]>
Date: Wed, 3 Jul 2024 18:59:46 +0300

On Wed, Jul 03, 2024 at 05:16:55PM +0200, Ekaitz Zarraga wrote:
> Hi,
> 
> Thanks to NlNet we have found a bootstrapping path for RISC-V 64 and we
> created an alternative `commencement.scm` draft that builds from source up
> to a GCC-9.
> 
> At the moment, that GCC-9 does not provide C++ support in my Guix packages.
> I tried to add it but I had issues. We made it work for live-bootstrap
> (Andrius did), and now it's time to move that to Guix but it's getting a
> little bit difficult with GCC's build-system.
> 
> I'm opening this issue to make the handover to Guix. I have already worked
> with Efraim and he agreed to continue with this work until it's upstreamed.
> Also Janneke is working on a version of this commencement module that adds
> support for x86, so we could use that for everything instead of relying in
> two different bootstrapping paths.

It may be possible that we end up diverging slightly in parts of the
bootstrap; glibc didn't get support for riscv64 until relatively
recently, although we will have to see about combining your work on
backporting (successfully!) riscv64 support to gcc-4.6.4 with the
existing version of 4.6.4 in commencement.scm. In reality I foresee it
with more comments in commencement.scm and some conditionals to try to
keep the different architectures working within the same packages.

> This will take some time to integrate. There are a couple of packages that I
> didn't bootstrap yet (but it's possible to bootstrap them): `flex` and
> `bison`. Mostly because we wanted to fix
> <https://issues.guix.gnu.org/52311>, too.

Piece by piece, we'll get there :) Plus we have live-bootstrap to look
at for inspiration.

> The Gash package is replaced with a non-bootstrapped Bash because there's an
> issue in Gash that hangs the bootstrapping process. We have reported it
> upstream. We should use Gash once the issue is fixed.
> 
> Also, we only made the path until a modern GCC, not all the rest of it, that
> we should be able to reuse from the current `commencement.scm` module.
> 
> This is the link to the repo:
> 
> https://github.com/ekaitz-zarraga/commencement.scm
> 
> I'm more than open to help Guix include the RISC-V bootstrapping process
> upstream, so if you have any question, suggestion or anything else, feel
> free to directly contact me.
> 
> As a note, in this series of blogposts I shared the 2 year process until
> today, and almost everything is documented:
> 
> https://ekaitz.elenq.tech/tag/bootstrapping-gcc-in-risc-v.html
> 
> Also, I'd like to publicly thank everyone who took part in this process.
> Especially Andrius, for all those sleepless nights we spent fixing weird
> compiler errors.
> 
> Let's make this finally happen!
> 
> Ekaitz

So close!

I have a couple of changes I've worked on at
https://github.com/Millak/commencement.scm but I'm also still working on
getting that modern GCC to build.

-- 
Efraim Flashner   <[email-masked]>   רנשלפ םירפא
GPG key = A28B F40C 3E55 1372 662D  14F7 41AA E7DC CA3D 8351
Confidentiality cannot be guaranteed on emails sent or received unencrypted