David Craven <da...@craven.ch> skribis: >> The “build hook” is the mechanism by which the daemon asks an external >> program whether it can build a derivation for some system. > >> Our (guix scripts offload) is such a program; it replies positively if >> there’s a machine that matches the target system. > >> What I was suggesting is to have another build hook that would reply >> positively as long as the target system can be emulated by QEMU. > > So I thought about this some more. guix offload uses guix build to > build a derivation which again uses a different nix-daemon to build > it. I'm not sure that guix offload can help us here.
Above, I was not suggesting to use ‘guix offload’. Instead, I was suggesting to write a new “build hook” that would run qemu-arm, mentioning (guix scripts offload) as an example of a build hook. > If it is possible to build a derivation using only qemu-arm instead of > qemu-system-arm - which I'm still not convinced - I think it's the > nix-daemon that would have to support this. In build.cc it sets up a > chroot and then executes the builder. I think it's that builder that > needs to be run with qemu-arm. But I don't think it's going to be as > easy as that =) guix-daemon can be extended via this “build hook” mechanism. What I’m proposing is to extend guix-daemon via an external build hook, which means that guix-daemon itself can remain unchanged. A derivation is essentially the file name of a “builder” along with its argv and the needed dependencies. For a given derivation, the hook would roughly run: qemu-arm /gnu/store/…-builder arg1 arg2 … Hope this clarifies things! Ludo’.