Hi Ekaitz!
Very interesting work. I'll read it with more detail tomorrow but at the moment it feels very similar to what we did for RISC-V Is there any obvious difference in the beginning of the chain that I'm missing?
I use tcc-boot0 only to build the latest TCC with the latest musl, with much less handcrafting (using make and normal installation). There are less packages involved (no need for muls 1.1.24, patch, gzip, xz, flex, bison). An important difference from my point of view is that I avoid (package (inherit …) …). I believe that the bootstrap packages need to be the independent base. For example in commencement.scm gcc-core-mesboot0 (version 2.95.3) inherits from gcc (version 11). So changes to a newer gcc will change the way how to build an older version. This is fragile. This tears in stuff, which is useless or even problematic for the bootstrap. Well, finally my actual goal is to build GCC differently: There is no need to patch in CROSS_C_INCLUDE_PATH etc. The include paths to standard header files must not be provided through environment variables at all. This is the cause of all the troubles people have with GCC in Guix for both native and cross building. In the end only the one gcc-12-strmov-store-file-names.patch is necessary, and this not even for static builds during bootstrapping. Keeping (package (inherit …) …) will tear in all the mistakes, which I try hard to avoid. Bye Stefan