Hi! Timothy Sample skribis: > And broke “guix pull”!! (I somehow fooled myself into thinking that I > had already tested with “guix pull --url=...” locally.) I reverted the > offending commit. You can test with ‘guix pull’ (you need to make sure to specify the right file:// URL *and* branch), or you can run “make as-derivation”. > It turns out that adding a reference from “(guix build download)” to > “(guix swh)” breaks “compute-guix-derivation” in > “build-aux/build-self.scm”. This is because “(guix swh)” references > “(json)”, which is not available in the “compute-guix-derivation” > environment. I tried mimicking the “fake-git” trick, but it didn’t work > (I guess it needs the “define-json-mapping” macro at compile time). > > Everything works if I remove the #:autoload for “(guix swh)” and put > > ;; If we import (guix swh) directly, we introduce a compile-time > ;; dependency on Guile-JSON. This breaks the "build-self" code, which > ;; needs to build this module without Guile-JSON. Hence, we track > ;; down the following procedure at runtime. > (define swh-download-directory > (module-ref (resolve-module '(guix swh)) 'swh-download-directory)) > > inside of “disarchive-fetch/any” (just before it’s needed). Does this > approach look okay? That’s one possibility. The patch below takes another approach. I think it aesthetically slightly more pleasant because we don’t have to play ‘resolve-module’ tricks for obscure reasons. WDYT? (It also fixes a format string argument mismatch.) Thanks! Ludo’.