Comrades, Christopher Baines skribis: > (use-modules (guix channels) > (guix inferior)) > > (define channels > (list (channel > (name 'guix) > (url "https://git.savannah.gnu.org/git/guix.git") > (commit > "e02c2f85b36ce1c733bd908a210ce1182bdd2560")))) > > (define inferior > (inferior-for-channels channels)) > > (first (lookup-inferior-packages inferior "linux-libre" "5.2.21")) > > > If you save that as a file then attempt to build it: > > > → guix build -f test.scm > Updating channel 'guix' from Git repository at 'https://git.savannah.gnu.org/git/guix.git'... > Backtrace: > 4 (primitive-load "/gnu/store/8mv5bpjgxg9c369xnbb5rf1kv9r?") > In ice-9/eval.scm: > 619:8 3 (_ #(#(#(#(#(#(#(#(#(#(#(?) ?) ?) ?) ?) ?) ?) ?) ?) ?) ?)) > 182:19 2 (proc #(#(#(#(#(#(#(#(#(#(# ?) ?) ?) ?) ?) ?) ?) ?) ?) ?)) > 142:16 1 (compile-top-call # ?) > In unknown file: > 0 (%resolve-variable (7 . call-with-new-thread) #) > > ERROR: In procedure %resolve-variable: > Unbound variable: call-with-new-thread The attached patches add a mechanism to patch the Guix source tree, and then use that mechanism to add the missing (ice-9 threads) import. With this I can do: ./pre-inst-env guix time-machine \ --commit=e02c2f85b36ce1c733bd908a210ce1182bdd2560 -- build linux-libre … which is a simple way to do what the manifest above was about. If we think a bit long-term, I think the %quirks and %patches mechanisms are a necessary evil. The goal is for ‘build-self.scm’ to use as little of the Guix API, as well as Guile APIs that are presumably here to stay. But as we’re already seeing, there are unavoidably incompatibilities that arise here and there. The good news is that we know today how to modify yesterday’s code to work well, or which Guile version to use to get it to run. Thoughts? Thanks, Ludo’.