catala/INSTALL.md
2023-01-19 11:31:45 -05:00

4.0 KiB

Building and installing the Catala language

Requirements

With Docker

The Catala compiler is written using OCaml. The repository provides a Dockerfile to build a Docker image with all the dependencies required to build the Catala compiler.

Start by installing Docker: https://docs.docker.com/get-docker/

Then build the Docker image:

docker build . --target dev-build-context -t catala

Finally, start a shell inside a new container created from the newly built image:

docker run -it --name catala catala

With nix

The repository provides nix files to build or develop the catala compiler.

Once nix is installed, with flakes enabled it is possible to enter a development shell:

nix develop

or to build the Catala compiler, documentation and runtime library:

nix build

Dependencies not yet in nixpkgs (ubase and unionFind at the moment of writing) are hardcoded inside the .nix directory. The .nix/catala.nix should be compatible with nixpkgs, if it finds a maintainer.

To develop catala's compiler using vscode using ocaml's lsp, you can use the ocaml-platform extension with the following settings (inside the file .vscode/settings.json).

{
  "ocaml.sandbox": {
    "kind": "custom",
    "template": "nix develop --command $prog $args"
  },
}

The nix build is updated weekly by an automatic github action.

With opam

The Catala compiler is written using OCaml. First, you have to install opam, OCaml's distribution and package manager. Follow the instructions on the opam website.

Next, you will need to use the correct version of OCaml. Catala has been tested with OCaml compiler versions that are at least 4.13.0. To switch to OCaml 4.13.0., just use:

opam switch 4.13.0

If you get a No switch 4.13.0 is currently installed error message, follow the hint and enter opam switch create 4.13.0.

Dependencies

You can skip this step if you used the Docker option above, it is already taken care of.

Next, install all the packages that Catala depends on with

make dependencies

This should ensure everything is set up for developing on the Catala compiler!

Warning: this command does not include the z3 dependency required to enable the proof platform feature of Catala. If you wish to enable support for the proof platform and the Proof command of the Catala compiler, you should instead execute make dependencies-with-z3 prior to building the compiler.

Other features of the Catala repository also require the following executables to be present. On debian, arch or apline-based distributions, the above command should already take care of them.

groff virtualenv python3 pip rsync colordiff pygmentize nodejs npm

Build

The project is distributed as a Dune artifact. Use standard dune commands to build and install the library. Makefile aliases are here to help you: running

make build

builds the compiler from its OCaml sources.

Install

The installation of the Catala compiler is handled through opam. Since the Catala compiler is not yet published to the opam repository, you can install a local version from this Git repository by using

opam install ./

To uninstall, use

opam unpin catala

Generating website assets

The Catala website features assets generated by the Catala compiler. They are needed to build the website. To produce them, simply run

make website-assets

Then, use a helper script to copy them over to the assets directory of the Catala website.

./generate_website_assets.sh <path-to-catala-website>/assets

You will need the groff executable to generate the HTML versions of the man pages, as well as the rsync executable to transfer files (preferred to cp) because it also works with a remote server.

Syntax highlighting

See the dedicated README.md.