Hi Ludo, >> So one issue that happens when cross building is for things that have >> the #:no-substitutes #t enabled. This is mainly found in service >> derivations for generating configuration files. > > I think there’s currently no easy way to cross build a full GuixSD > anyway, like ‘guix system build --target=mips64el-linux-gnu’ (the > --target flag doesn’t exist yet). Or did you experiment in this area? > > I’d be curious. It’s designed to allow this (in particular because > gexps are cross-compilation-aware), but I’ve never tried.
I'm currently not trying to cross-compile everything. The --system=mips64el-linux gets us pretty far already. The missing parts are only the ones where no substitutes are available. What I've done so far is remove grub from the system/vm.scm file which is added as a hard dependency (even when run with --no-grub). That gets guix system build arm-minimal.scm --system=armhf-linux to download all the substitutable dependencies but then fails at the end. The other thing I've tried is guix system vm arm-minimal.scm --system=armhf-linux. This fails when it tries to fetch gstreamer-plugins-bad. This is required to build spice-gtk-viewer which is required to run the tests for spice. This looks like qemu is added as an input somewhere when it should be a native-input. Other than these two issues I don't think that getting guixsd arm running in qemu is too far off. This of course doesn't help bootstrapping a new architecture, but it's nice for developers to be able to test stuff on arm or mips. Thanks, David