bug-guix
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

bug#20239: [wishlist] Add build hook to build for other platforms using


From: Ludovic Courtès
Subject: bug#20239: [wishlist] Add build hook to build for other platforms using qemu
Date: Fri, 24 Mar 2017 00:16:54 +0100
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/25.1 (gnu/linux)

Mark H Weaver <address@hidden> skribis:

> It would be great if we had a build hook to enable guix-daemon to
> natively build packages for any system supported by qemu, by running the
> build processes within qemu.

QEMU has a ‘qemu-binfmt-conf.sh’ script that installs binfmt_misc
handlers for all the architecture-specific ELF variants.  Once you’ve
run this script, you can transparently run, say, ARM executables (the
kernel takes care of invoking ‘qemu-arm’ for you).

Without this, ‘qemu-arm’ & co. do not follow ‘execve’ syscalls, so
binfmt_misc is probably the only way to achieve what we want.

It actually works.  For instance, here I’m mimicking on my x86_64
machine what a .drv file for ARM describes:

  env -i TMPDIR=/tmp out=$PWD debug=$PWD 
"/gnu/store/mrq1big4g3icywwg8f6jd2cahq79wc6h-guile-2.0.14/bin/guile" 
--no-auto-compile -L 
"/gnu/store/kk5w5almhpx7g696vb9si8ham2r0z88l-module-import" -C 
"/gnu/store/80cdsxvx97c89slkajrkrdd9hw9p3smb-module-import-compiled" 
"/gnu/store/9667pad1s8ympbr8z0yr65qj061gzr19-coreutils-8.26-guile-builder"

(Here I’m using the ARM Guile, but for a slight speedup I could actually
use the native Guile.)

Then we just need to tell the daemon to not complain (“but I’m an
'x86_64-linux'”).

Ludo’.





reply via email to

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