Subject: bug#41669: Cross-compiled powerpc64-linux bootstrap-tarballs not reproducible

From: Ludovic Courtès <[email-masked]>
Date: Wed, 06 Jan 2021 09:59:17 +0100

Hi Chris,

Chris Marusich <[email-masked]> skribis:

> 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

Thanks.  I have uploaded them to
<https://alpha.gnu.org/gnu/guix/bootstrap/powerpc64le-linux/20210106>
(I meant to send them to ftp.gnu.org but typed it wrong; I can upload
them there as well later.)

You can update (gnu packages bootstrap) accordingly.

> 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.

In the commit log that updates (gnu packages bootstrap), please mention
these commands so we later know how those binaries were obtained.  (Only
the second ‘guix pull’ matters.)

> 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.

Yeah, that remains a mystery, perhaps we’ll eventually find out!

>> (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.

Yes, that makes sense to me.

Thank you!

Ludo’.