Hi Ludo, Ludovic Courtès writes: >>> https://media.marusich.info/guix-ppc64-bootstrap/bootstrap-tarballs-from-guix-1ced8379c7.tar.xz >>> https://media.marusich.info/guix-ppc64-bootstrap/bootstrap-tarballs-from-guix-1ced8379c7.tar.xz.asc >>> https://media.marusich.info/guix-ppc64-bootstrap/bootstrap-tarballs-from-guix-1ced8379c7.tar.xz.sha512sum > > [...] > > IIUC, the tarballs at the URL above are for PPC64 (system type: > ‘powerpc64-linux’); is this also going to work on PPC64LE hardware? No, we need a separate tarball for LE. I have prepared that here: https://media.marusich.info/guix-ppc64le-bootstrap/powerpc64le-linux-gnu-bootstrap-tarballs-from-guix-662e7e28d576.tar.xz https://media.marusich.info/guix-ppc64le-bootstrap/powerpc64le-linux-gnu-bootstrap-tarballs-from-guix-662e7e28d576.tar.xz.sha512sum https://media.marusich.info/guix-ppc64le-bootstrap/powerpc64le-linux-gnu-bootstrap-tarballs-from-guix-662e7e28d576.tar.xz.asc This tarball, containing the little-endian bootstrap binaries, was generated using the same setup that I used earlier for big-endian. Specifically, to generate the little-endian bootstrap binaries, I took the following steps on two separate VMs: - Use https://ftp.gnu.org/gnu/guix/guix-system-install-1.2.0.x86_64-linux.iso.xz to install Guix System 1.2.0 on an x86_64-linux machine. - Run: guix pull --no-substitutes --commit=1ced8379c7641788fa607b19b7a66d18f045362b - Run: guix pull --no-substitutes --commit=662e7e28d576ada91fc9dec7d27c100666114f03 - Run: guix build --no-substitutes --target=powerpc64le-linux-gnu bootstrap-tarballs - I didn't run "guix system reconfigure" after installing Guix System; theoretically it shouldn't matter, but for the purpose of our experiment, I just left the system in its default configuration in order to ensure that the kernel etc. would be the same on both VMs. Notice that there are two "guix pull" invocations. This is because I first pulled to 1ced8379c7641788fa607b19b7a66d18f045362b in order to build the big-endian bootstrap-tarballs as described earlier. After that, I pulled to 662e7e28d576ada91fc9dec7d27c100666114f03 in order to build the little-endian bootstrap-tarballs on the same machine. In theory it shouldn't matter how you arrive at commit 662e7e28d576ada91fc9dec7d27c100666114f03, but for the sake of completeness and reproducibility I've included both pull steps. By the way, just as with the big endian bootstrap binaries, all the little endian bootstrap binaries I built were identical on both VMs except for gcc-static. The output of gcc-static contained binaries that differed in ways similar to what has been described earlier in this thread. So, the non-reproducibility of gcc-static is not specific to one PPC architecture. I wonder if gcc-static can be cross-built reproducibly for any architecture at all. > (As you know, we use i386 binaries for both i686-linux and x86_64-linux. > Likewise, if we can have a single set of binaries instead of having > PPC32, PPC64, and PPC64LE, that’s better.) This is a fair question. I agree that if it were possible, it would be a great improvement. I didn't know the answer to this question, so I asked in #talos-workstation on Freenode. The users there said that although in theory this should be possible, it isn't currently feasible because the ability to do this is not currently implemented in Linux. For the moment, I think our focus should be on finding out which of these two architectures can be bootstrapped in Guix in the first place. The first step in doing that is to try using these bootstrap binaries. -- Chris