Hello all! Some time before I started using guix I worked through Python examples within this book[1] for school. There were some differences in the packages I installed and the listed requirements for the book (pseudo manifest at [2]) which made things difficult for me as a (then) new programmer.
Believing guix could more faithfully/cleanly reproduce the environment from the book than my former approach using pip, I: + imported/wrote definitions for packages not in guix + wrote inferiors for older versions of packages that were in guix. I'm not sure what the rhyme or reason is, but most of my inferior attempts failed with this backtrace[3]. A couple were successful, as you can see in this table[4]. Usually I've had good luck consulting the manual, mailing lists, and IRC logs, but I'm at a bit of a loss this time since the nature of others' inferior issues seems different from mine (and were probably fixed). I've tried with the following (non-inferior) commits on a foreign distro: + 71507435225f10d8d944ba183cbcc77ef953e0e5 + f816deb9055669deaca59ac7652943adf7f11bb1 + 0d7c95445c (and some commits shortly after this one) Since the results consistently match[4], I supposed the issue might be with the commits I've selected for the inferiors. But at this point I thought I should ask for help in case I'm too far off. >From what I can gather, inferiors are the recommended way to declare packages defined in older revisions of guix. But how would I know what a "good" guix inferior commit is for all of these packages? Would using the definitions instead of asking guix to reproduce five different worlds for one package each be an anti-pattern? Is my issue related to being on a foreign distro, thus Guix System users wouldn't know much about this problem? Even though I'm mentioning this specific frustration, I enjoyed the learning process getting to this point and want to express my appreciation. Despite interacting with clojure and emacs lisp for at least a year, guix/guile finally got me to use quoting, let, and lambda in a non-trivial way. Thus the otherwise tedious work of generating five different channel/inferior definitions as per the example in the manual was actually a breeze! Thanks for your help and hard work, --Brandon [1] Complex Network Analysis Using Python, by Dmitry Zinoviev [2] For some of the versioned packages, I commented the newest commit prior to guix bumping that package, which I would use for an inferior. #+BEGIN_SRC scheme (specifications->manifest ;inferior commit notes '("python" ; not trying to build this from scratch. "python-matplotlib@2.0.2" ;7e06086522 "python-nltk" ;need 3.2.5 "python-pandas@0.22.0" ;ce2cfcabfc ;"python-wikipedia@1.4.0" need to guix import ;"python-toposort@1.5" need to guix import "python-networkx@2.1" ;269f100330 ;"python-community@0.10" need to guix import "python-numpy@1.13.3" ;4d6ed794dd "python-pygraphviz" ;want 1.3 but only 1.5 available ;;may need graphviz-dev as well "python-scipy@1.0.1" ;02ddafef55 ;"python-louvain@0.14" need to guix import ;need to install the author's custom modules)) #+END_SRC I used the above as a guide while doing the actual imports/inferior work. [3] #+begin_example scheme In current input: 12:3 12 (_) In guix/store.scm: 623:10 11 (call-with-store _) 1803:24 10 (run-with-store #<store-connection 256.99 129ec60> _ # _ …) In guix/inferior.scm: 681:12 9 (_ _) In guix/channels.scm: 527:2 8 (_ _) 485:2 7 (_ _) In ./guix/monads.scm: 482:9 6 (_ _) In guix/store.scm: 1673:13 5 (_ _) In ice-9/eval.scm: 619:8 4 (_ #(#(#(#<directory (build-self) 1842aa0>) "/gnu…" …) …)) 626:19 3 (_ #(#(#(#<directory (build-self) 1842aa0>) "/gnu…" …) …)) 155:9 2 (_ #(#(#(#<directory (build-self) 1842aa0>) "/gnu…" …) …)) 223:20 1 (proc #(#(#(#<directory (build-self) 1842aa0>) "/…" …) …)) In unknown file: 0 (%resolve-variable (7 . %guix-register-program) #<direc…>) #+end_example [4] | package of interest | guix commit | status | |---------------------+--------------+--------| | python-matplotlib | "7e06086522" | bad | | python-pandas | ce2cfcabfc | bad | | python-networkx | 269f100330 | good | | python-numpy | 4d6ed794dd | bad | | python-scipy | 02ddafef55 | good |