From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paul Boddie Subject: Re: Cross-building GuixSD (and maybe using pre-built toolchains) Date: Wed, 31 Aug 2016 23:49:49 +0200 Message-ID: <201608312349.49957.paul@boddie.org.uk> References: <201608302326.38349.paul@boddie.org.uk> <87inugn1rg.fsf@gnu.org> Mime-Version: 1.0 Content-Type: Text/Plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:33852) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bfDOY-00007t-I1 for help-guix@gnu.org; Wed, 31 Aug 2016 17:50:12 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1bfDOU-00070P-AS for help-guix@gnu.org; Wed, 31 Aug 2016 17:50:05 -0400 In-Reply-To: <87inugn1rg.fsf@gnu.org> List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: help-guix-bounces+gcggh-help-guix=m.gmane.org@gnu.org Sender: "Help-Guix" To: help-guix@gnu.org On Wednesday 31. August 2016 22.04.35 Ludovic Court=C3=A8s wrote: >=20 > Paul Boddie skribis: > >=20 > > 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. >=20 > 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= =20 it. ;-) [...] > > I noticed that Arch Linux and its relative Parabola GNU/Linux support t= he > > 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 so= me > > bootstrapping needs to be done already. Could a similar thing be done > > with GuixSD? >=20 > Yes, using offloading: >=20 > =20 > https://www.gnu.org/software/guix/manual/html_node/Daemon-Offload-Setup.h= tml >=20 > If your master node is x86_64 and its machines.scm lists a mips64el > machine as in the example above, then =E2=80=9Cguix build foo -s mips64el= =2Dlinux=E2=80=9D > automatically offloads to that mips machine. (This is the mechanism our > hydra.gnu.org build farm uses.) But this seems like the opposite of the approach in Arch/Parabola: there, t= he=20 target machine (mips64el) coordinates the build, with the farm machines=20 (x86_64) cross-compiling the sources. The benefit is that architectures wit= h=20 less powerful hardware can have their packages built for them, but this wou= ld=20 presumably be contrary to the principles employed by Guix, where native bui= lds=20 are mandatory for viability and, I guess, reproducibility reasons. [...] > When bootstrapping a new architecture, we cross-build the relevant > =E2=80=9Cbootstrap binaries=E2=80=9D, which are statically-linked tools s= uch as GCC, > Guile, as well as libc, and from there we can start building natively: >=20 > https://www.gnu.org/software/guix/manual/html_node/Porting.html Understood, thanks! Paul