Build with guix stumbling blocks
I followed the instructions for building using guix. I didn't have guix so I installed it:
$ apt install guix
then back to the instructions:
$ guix shell
# turn off heating while v8 builds
$ ./bootstrap
# [...]
$ ./configure
checking for a BSD-compatible install... /gnu/store/d2dawk0141crxs7nvsx26cvx4g89wsk7-profile/bin/install -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... /gnu/store/d2dawk0141crxs7nvsx26cvx4g89wsk7-profile/bin/mkdir -p
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
checking whether make supports nested variables... yes
checking whether make supports nested variables... (cached) yes
checking for pkg-config... /gnu/store/d2dawk0141crxs7nvsx26cvx4g89wsk7-profile/bin/pkg-config
checking pkg-config is at least version 0.9.0... yes
configure: checking for guile 3.0
configure: found guile 3.0
checking for guile-3.0... /usr/bin/guile-3.0
checking for Guile version >= 3.0... 3.0.7
checking for guild-3.0... no
checking for guile-config-3.0... no
checking for guile-tools-3.0... no
checking for d8... /gnu/store/d2dawk0141crxs7nvsx26cvx4g89wsk7-profile/bin/d8
checking that generated files are newer than configure... done
configure: creating ./config.status
config.status: creating Makefile
config.status: creating module/Makefile
config.status: creating pre-inst-env
config.status: creating js-test
config.status: creating module/hoot/config.scm
and finally
$ make
Making all in module
make[1]: Entering directory '/home/mikeb/work/hoot-build/module'
GEN language/cps/hoot.go
../pre-inst-env: 13: exec: compile: not found
make[1]: *** [Makefile:596: language/cps/hoot.go] Error 127
make[1]: Leaving directory '/home/mikeb/work/hoot-build/module'
make: *** [Makefile:848: all-recursive] Error 1
The error arises because the env entry $GUILE_TOOLS is expected to have a value in module/Makefile, but is empty. In the configure output, I can see checking for guile-tools-3.0... no, which I think explains its lack. GUILE_TOOLS seems to be set from GUILD -- and guild is available, because it's part of the guile package which was required by guix.scm; but guild-3.0 isn't, and that's what autoconf appears to look for.
If I do
GUILD=`which guild` ./configure
then it gets further (though it still reports checking for guile-config-3.0... no), but make fails at
$ make
# [...]
;;; compiling /home/mikeb/work/hoot-build/module/hoot/generate-char-prelude.scm
;;; WARNING: compilation of /home/mikeb/work/hoot-build/module/hoot/generate-char-prelude.scm failed:
;;; Syntax error:
;;; unknown location: definition in expression context, where definitions are not allowed, in form (define (quotient/shift expr shift) (if (zero? shift) expr (quasiq
uote (ash (unquote expr) (unquote shift)))))
ice-9/psyntax.scm:2795:12: In procedure syntax-violation:
Syntax error:
hoot/generate-char-prelude.scm:38:31: definition in expression context, where definitions are not allowed, in form (define (quotient/shift expr shift) (if (zero? shi
ft) expr (quasiquote (ash (unquote expr) (unquote shift)))))
make[1]: *** [Makefile:592: hoot/char-prelude.scm] Error 1
make[1]: Leaving directory '/home/mikeb/work/hoot-build/module'
make: *** [Makefile:848: all-recursive] Error 1
This file looks OK to me, albeit there's a lot of quasiquoting going on. I don't know how to get past this.