Previous: , Up: Installation   [Contents][Index]


1.3.2 Building from source

The easiest way to get everything necessary to build Hoot is by using the GNU Guix package manager for which we provide a guix.scm file ready for use with guix shell:

cd guile-hoot/
guix shell

guix shell will download/compile all required dependencies and start an interactive shell that is ready to use for building Hoot.

To use Hoot without Guix requires obtaining the following dependencies:

If the optional dependencies are present then Hoot will build its (hoot web-server) module that provides a development web server. It is recommended to install all optional dependencies for the best developer experience.

With a sufficiently fresh Guile, via Guix or otherwise, the build can begin. If you are building from a Git checkout rather than an official release tarball, the first step is to bootstrap the build system:

./bootstrap.sh

Release tarballs have a pre-bootstrapped build system and do not require the above step.

Now, build Hoot:

./configure
make

If you’d like to install Hoot onto your system, run:

sudo make install

The GNU build system defaults to /usr/local as the installation prefix. This can be changed by re-running the configure script:

./configure --prefix=/some/where/else
sudo make install

Make sure that the Hoot libraries are on Guile’s load path by inspecting both GUILE_LOAD_PATH and GUILE_LOAD_COMPILED_PATH to see if the proper directories within the chosen installation prefix appear. If the directories are missing then they can be added with the following shell commands:

export GUILE_LOAD_PATH="/some/where/else/share/guile/site/3.0:$GUILE_LOAD_PATH"
export GUILE_LOAD_COMPILED_PATH="/some/where/else/lib/guile/3.0/site-ccache:$GUILE_LOAD_COMPILED_PATH"

To try out Hoot without installing it, use the pre-inst-env wrapper to run hoot in the context of the build directory. The following will open a Hoot interpreter prompt:

./pre-inst-env hoot repl

Likewise, a Guile process with access to Hoot’s libraries can be started with pre-inst-env:

./pre-inst-env guile

If everything went well, you will be greeted with a Guile REPL prompt. Regardless of installation status, to verify that Guile can find the Hoot modules, run:

scheme@(guile-user)> ,use (hoot compile)

If there is no error then congratulations! Your setup is correct. Proceed to the tutorial for a crash course in how to use Hoot, or see later chapters for an API reference.

1.3.2.1 Running the test suite

This is entirely optional, but if you’d like further verification that your build is good (or perhaps you’re packaging Hoot for distribution), the test suite can be run via make check. By default, the tests are run against two Wasm runtimes: Hoot’s own Wasm interpreter and either NodeJS (version 22+) or V8 via the d8 tool.

Getting V8 can be tricky, and will most likely require you to compile it from source. It’s a pain! To skip all of that trouble and just run the tests against the built-in interpreter, run:

make check WASM_HOST=hoot

Previous: Binary installation, Up: Installation   [Contents][Index]