[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Cross-building GuixSD (and maybe using pre-built toolchains)
From: |
Paul Boddie |
Subject: |
Re: Cross-building GuixSD (and maybe using pre-built toolchains) |
Date: |
Thu, 1 Sep 2016 17:51:41 +0200 |
User-agent: |
KMail/1.13.7 (Linux/3.2.0-4-486; KDE/4.8.4; i686; ; ) |
On Thursday 1. September 2016 10.10.15 Ludovic Courtès wrote:
> Paul Boddie <address@hidden> skribis:
> >
[Offloading]
> > But this seems like the opposite of the approach in Arch/Parabola: there,
> > the target machine (mips64el) coordinates the build, with the farm
> > machines (x86_64) cross-compiling the sources. The benefit is that
> > architectures with less powerful hardware can have their packages built
> > for them, but this would presumably be contrary to the principles
> > employed by Guix, where native builds are mandatory for viability and, I
> > guess, reproducibility reasons.
>
> I should mention that native builds are also subject to offloading. So
> if your main machine is x86_64 and has a machines.scm file that lists
> other x86_64 machines, then native builds can be offloaded to them.
>
> If you cross-compile from x86_64, it’s a native build that can be
> offloaded to another x86_64 machine.
>
> Hope this clarifies things!
Perhaps. Here come the stupid questions: ;-)
When you write "cross-compile from x86_64" do you mean run a cross-compiler on
an x86_64 host that targets another architecture? (I'm guessing "yes".)
From previous questions, it appears that any compiler must have been built
specifically for Guix to use (and cannot be those those pre-built toolchains
provided by, say, Debian), so would these cross-compilers be the ones normally
used to generate the "bootstrap binaries" (that would normally be used to then
build packages on the target system)?
Or do I first bootstrap Guix on my (x86_64, in this example) "build system",
then generate special cross-compilers for my target architecture (that are
then exposed via offloading)?
And can I provide a foreign architecture build daemon on the same machine as
the one performing the build?
Sorry if this is all obvious or if I'm not assuming that what is possible is
actually possible! I'm used to discovering limitations with build systems. (To
me it is remarkable that given all the portable things like shell scripts that
do a lot of the lifting in build processes, many build systems have an
unreasonable affinity to the build host's architecture.)
Thanks for all the help!
Paul