Subject: `guix build --fallback` does not work with offloading

From: Marius Bakke <[email-masked]>
Date: Tue, 07 Nov 2017 23:24:01 +0100

Hello!

I've noticed that when offloading, --fallback sometimes fails to
actually fall back.  Here is a shell transcript:

--8<---------------cut here---------------start------------->8---
$ ./pre-inst-env guix build --substitute-urls="https://mirror.hydra.gnu.org" --fallback font-arabic-misc
@ substituter-started /gnu/store/26nk7rgc2rhi7v0d8xhqqxglpg532syh-font-arabic-misc-1.0.3.tar.xz /gnu/store/19wpps1nmlg4j1530knl7kdhvgcmj5fc-guix-0.13.0-8.357ab93/libexec/guix/substitute
Downloading https://mirror.hydra.gnu.org/guix/nar/26nk7rgc2rhi7v0d8xhqqxglpg532syh-font-arabic-misc-1.0.3.tar.xz...
guix substitute: error: download from 'https://mirror.hydra.gnu.org/guix/nar/26nk7rgc2rhi7v0d8xhqqxglpg532syh-font-arabic-misc-1.0.3.tar.xz' failed: 404, "Not Found"
@ substituter-failed /gnu/store/26nk7rgc2rhi7v0d8xhqqxglpg532syh-font-arabic-misc-1.0.3.tar.xz 256 fetching path `/gnu/store/26nk7rgc2rhi7v0d8xhqqxglpg532syh-font-arabic-misc-1.0.3.tar.xz' failed with exit code 1
process 8395 acquired build slot '/var/guix/offload/192.168.2.11/0'
process 8395 acquired build slot '/var/guix/offload/192.168.2.5/0'
load on machine '192.168.2.11' is 0.08 (normalized: 0.02)
@ build-started /gnu/store/rqgfr39aamfzqq93fl87ai2y61b5s992-font-arabic-misc-1.0.3.tar.xz.drv - x86_64-linux /var/log/guix/drvs/rq//gfr39aamfzqq93fl87ai2y61b5s992-font-arabic-misc-1.0.3.tar.xz.drv.bz2
sending 0 store items to '192.168.2.11'...
offloading '/gnu/store/rqgfr39aamfzqq93fl87ai2y61b5s992-font-arabic-misc-1.0.3.tar.xz.drv' to '192.168.2.11'...
@ build-remote /gnu/store/rqgfr39aamfzqq93fl87ai2y61b5s992-font-arabic-misc-1.0.3.tar.xz.drv 192.168.2.11
@ substituter-started /gnu/store/26nk7rgc2rhi7v0d8xhqqxglpg532syh-font-arabic-misc-1.0.3.tar.xz /gnu/store/19wpps1nmlg4j1530knl7kdhvgcmj5fc-guix-0.13.0-8.357ab93/libexec/guix/substitute
Downloading https://mirror.hydra.gnu.org/guix/nar/26nk7rgc2rhi7v0d8xhqqxglpg532syh-font-arabic-misc-1.0.3.tar.xz...
guix substitute: error: download from 'https://mirror.hydra.gnu.org/guix/nar/26nk7rgc2rhi7v0d8xhqqxglpg532syh-font-arabic-misc-1.0.3.tar.xz' failed: 404, "Not Found"
@ substituter-failed /gnu/store/26nk7rgc2rhi7v0d8xhqqxglpg532syh-font-arabic-misc-1.0.3.tar.xz 256 fetching path `/gnu/store/26nk7rgc2rhi7v0d8xhqqxglpg532syh-font-arabic-misc-1.0.3.tar.xz' failed with exit code 1
derivation '/gnu/store/rqgfr39aamfzqq93fl87ai2y61b5s992-font-arabic-misc-1.0.3.tar.xz.drv' offloaded to '192.168.2.11' failed: some substitutes for the outputs of derivation `/gnu/store/rqgfr39aamfzqq93fl87ai2y61b5s992-font-arabic-misc-1.0.3.tar.xz.drv' failed (usually happens due to networking issues); try `--fallback' to build derivation from source 
@ build-failed /gnu/store/rqgfr39aamfzqq93fl87ai2y61b5s992-font-arabic-misc-1.0.3.tar.xz.drv - 1 builder for `/gnu/store/rqgfr39aamfzqq93fl87ai2y61b5s992-font-arabic-misc-1.0.3.tar.xz.drv' failed with exit code 100
cannot build derivation `/gnu/store/gna22xl7ycq4rzaj487axa5ijbyhqq1q-font-arabic-misc-1.0.3.drv': 1 dependencies couldn't be built
guix build: error: build failed: build of `/gnu/store/gna22xl7ycq4rzaj487axa5ijbyhqq1q-font-arabic-misc-1.0.3.drv' failed
--8<---------------cut here---------------end--------------->8---

Passing --no-build-hook makes it succeed:

--8<---------------cut here---------------start------------->8---
$ ./pre-inst-env guix build --substitute-urls="https://mirror.hydra.gnu.org" --fallback --no-build-hook font-arabic-misc
@ substituter-started /gnu/store/26nk7rgc2rhi7v0d8xhqqxglpg532syh-font-arabic-misc-1.0.3.tar.xz /gnu/store/19wpps1nmlg4j1530knl7kdhvgcmj5fc-guix-0.13.0-8.357ab93/libexec/guix/substitute             
Downloading https://mirror.hydra.gnu.org/guix/nar/26nk7rgc2rhi7v0d8xhqqxglpg532syh-font-arabic-misc-1.0.3.tar.xz...                      
guix substitute: error: download from 'https://mirror.hydra.gnu.org/guix/nar/26nk7rgc2rhi7v0d8xhqqxglpg532syh-font-arabic-misc-1.0.3.tar.xz' failed: 404, "Not Found"
@ substituter-failed /gnu/store/26nk7rgc2rhi7v0d8xhqqxglpg532syh-font-arabic-misc-1.0.3.tar.xz 256 fetching path `/gnu/store/26nk7rgc2rhi7v0d8xhqqxglpg532syh-font-arabic-misc-1.0.3.tar.xz' failed with exit code 1
@ build-started /gnu/store/rqgfr39aamfzqq93fl87ai2y61b5s992-font-arabic-misc-1.0.3.tar.xz.drv - x86_64-linux /var/log/guix/drvs/rq//gfr39aamfzqq93fl87ai2y61b5s992-font-arabic-misc-1.0.3.tar.xz.drv.bz2
font-arabic-misc-1.0.3/
font-arabic-misc-1.0.3/arabic24.bdf
font-arabic-misc-1.0.3/aclocal.m4
[...]
--8<---------------cut here---------------end--------------->8---

Interestingly no download was done on the second try, so apparently the
source was already in my store.

It looks like the offload hook starts before the actual download
(possibly because a substitute was advertised), and then fails when the
substitute 404s.