Running Goblins on Hoot

I’ve been trying to get Goblins running on Hoot today and running into some issues. Been trying to get acclimated to the way Hoot handles module discovery, and so far I’ve gotten somewhere by adding the guile-goblins repo as a submodule within my repo/adding it to the load path with guild compile-wasm -L.

But a dependency of guile-goblins, (ice-9 vlist), seems to be unavailable:

jfred@reform ~/src/wasm-test [env]$ guild compile-wasm -L modules/goblins test.scm 
Backtrace:
In ice-9/boot-9.scm:
  1762:12 16 (with-exception-handler _ _ #:unwind? _ # _)
In unknown file:
          15 (apply-smob/0 #<thunk ffffadb14320>)
In ice-9/boot-9.scm:
    731:2 14 (call-with-prompt _ _ #<procedure default-prompt-handle…>)
In ice-9/eval.scm:
    619:8 13 (_ #(#(#<directory (guile-user) ffffadb17c80>)))
In /gnu/store/l5938a09bfj9xnyj87x9bfjsqn7ixkn7-profile/bin/guild:
    72:17 12 (main _)
In scripts/compile-wasm.scm:
   373:22 11 (compile-wasm . _)
In ice-9/ports.scm:
   451:17 10 (call-with-input-file _ _ #:binary _ #:encoding _ # _)
In hoot/compile.scm:
   344:18  9 (_ _)
    245:4  8 (compile _ #:imports _ #:import-abi? _ #:export-abi? _ # …)
    214:5  7 (scheme->sealed-tree-il _ #:imports _ #:import-abi? _ # …)
In hoot/library-group.scm:
   701:19  6 (link-library-group _ #:load-library _ #:features _ # _)
In ice-9/boot-9.scm:
   267:13  5 (for-each #<procedure link-import! (iset)> _)
In hoot/library-group.scm:
    683:6  4 (link-library! #<<library> src: #("hoot/library-group.s…>)
In ice-9/boot-9.scm:
   267:13  3 (for-each #<procedure link-import! (iset)> _)
In hoot/library-group.scm:
    683:6  2 (link-library! #<<library> src: #("goblins/core.scm" 17…>)
In ice-9/boot-9.scm:
   267:13  1 (for-each #<procedure link-import! (iset)> _)
In hoot/library-group.scm:
   696:16  0 (link-import! _)

hoot/library-group.scm:696:16: In procedure link-import!:
module not found (ice-9 vlist)

I found one reference to this in an old Hoot issue: Stub/shim enough stuff to get (ice-9 format) kinda working (!248) · Merge requests · spritely / Guile Hoot · GitLab

…but I’m on Hoot 0.6.0 so I should have these changes I’d imagine. And (ice-9 vlist) should be part of Guile’s standard library, right?

(As an aside: is it expected that I’d need to add Goblins to my load path manually vs. having Guile discover it in my load path? Because I do have guile-goblins installed in the same manifest.)

Channels:

(list (channel
        (name 'guix)
        (url "https://git.savannah.gnu.org/git/guix.git")
        (branch "master")
        (commit
          "f4679a5860c8666088d3a0fc1033d701a7a83464")
        (introduction
          (make-channel-introduction
            "9edb3f66fd807b096b48283debdcddccfea34bad"
            (openpgp-fingerprint
              "BBB0 2DDF 2CEA F6A8 0D1D  E643 A2A0 6DF2 A33A 54FA"))))
      (channel
        (name 'nonguix)
        (url "https://gitlab.com/nonguix/nonguix")
        (branch "master")
        (commit
          "d0b6099324cd47961064bd96ae830c4ca6d1bada")
        (introduction
          (make-channel-introduction
            "897c1a470da759236cc11798f4e0a5f7d4d59fbc"
            (openpgp-fingerprint
              "2A39 3FFF 68F4 EF7A 3D29  12AF 6F51 20A0 22FB B2D5")))))

Manifest:

(use-modules
 (gnu packages guile-xyz)
 (guix packages)
 (guix profiles))

(packages->manifest
 (map (compose list specification->package+output)
      '("guile-next"
        "guile-goblins"
        "guile-hoot")))

(ice-9 vlist) is part of Guile’s standard library but not Hoot’s. Add whatever directory holds Guile’s module sources to HOOT_LOAD_PATH or add an additional -L flag.

1 Like