[Top][All Lists]

[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: Wed, 31 Aug 2016 23:49:49 +0200
User-agent: KMail/1.13.7 (Linux/3.2.0-4-486; KDE/4.8.4; i686; ; )

On Wednesday 31. August 2016 22.04.35 Ludovic Courtès wrote:
> Paul Boddie <address@hidden> skribis:
> > 
> > OK. I tend to run things in chroots for basic protection against things
> > deciding to install stuff in places I would rather keep "clean", and to
> > use different distro versions and packages.
> Precisely: Guix only ever touches /gnu/store, /var/guix, and optionally
> /etc/guix; nothing else, I swear.  ;-)

Right! Well, I may have another try outside a chroot and take your word for 
it. ;-)


> > I noticed that Arch Linux and its relative Parabola GNU/Linux support the
> > target machine using distcc as a client and having distcc servers cross-
> > compile code for the target architecture. That seems to require the
> > coordinating host to be running Arch/Parabola, which then means that some
> > bootstrapping needs to be done already. Could a similar thing be done
> > with GuixSD?
> Yes, using offloading:
> If your master node is x86_64 and its machines.scm lists a mips64el
> machine as in the example above, then “guix build foo -s mips64el-linux”
> automatically offloads to that mips machine.  (This is the mechanism our
> build farm uses.)

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.


> When bootstrapping a new architecture, we cross-build the relevant
> “bootstrap binaries”, which are statically-linked tools such as GCC,
> Guile, as well as libc, and from there we can start building natively:

Understood, thanks!


reply via email to

[Prev in Thread] Current Thread [Next in Thread]