2020-06-17 02:36:26 +03:00
# Installing
- [Installing from source ](#installing-from-source )
2020-07-08 22:39:41 +03:00
- [Installing from a package manager ](#installing-from-a-package-manager )
2020-06-17 02:36:26 +03:00
## Installing from source
2020-05-18 16:45:12 +03:00
2020-05-28 22:06:35 +03:00
The easiest way to install is via the existing generated Scheme code.
The requirements are:
2020-05-20 00:56:27 +03:00
2020-06-17 02:36:26 +03:00
- A Scheme compiler; either Chez Scheme (default), or Racket.
- `bash` , with `realpath` . On Linux, you probably already have this.
2020-05-28 22:06:35 +03:00
On a Mac, you can install this with `brew install coreutils` .
2020-06-17 12:14:54 +03:00
On FreeBSD, OpenBSD and NetBSD, you can install `realpath` and `GNU make`
using a package manager. For instance, on OpenBSD you can install all of them
2020-07-01 20:15:49 +03:00
with `pkg_add coreutils gmake` command.
2020-05-20 00:56:27 +03:00
On Windows, it has been reported that installing via `MSYS2` works
2020-06-02 05:30:44 +03:00
(https://www.msys2.org/). On Windows older than Windows 8, you may need to
set an environment variable `OLD_WIN=1` or modify it in `config.mk` .
On Raspberry Pi, you can bootstrap via Racket.
2020-05-20 00:56:27 +03:00
By default, code generation is via Chez Scheme. You can use Racket instead,
2020-05-23 20:40:57 +03:00
by setting the environment variable `IDRIS2_CG=racket` before running `make` .
2020-05-28 22:06:35 +03:00
If you install Chez Scheme from source files, building it locally,
make sure you run `./configure --threads` to build multithreading support in.
2020-05-20 00:56:27 +03:00
2020-06-17 12:14:54 +03:00
**NOTE**: On FreeBSD, OpenBSD and NetBSD you need to use `gmake` command instead
of `make` in the following steps.
2020-12-12 21:35:16 +03:00
**NOTE**: If you're running macOS on Apple Silicon (arm64) you may need to run
"`arch -x86_64 make ...`" instead of `make` in the following steps.
2020-06-17 02:36:26 +03:00
### 1: Set the PREFIX
2020-05-18 16:43:12 +03:00
2020-06-17 02:36:26 +03:00
- Change the `PREFIX` in `config.mk` . The default is to install in
2020-05-20 16:17:06 +03:00
`$HOME/.idris2`
2020-05-18 16:43:12 +03:00
2020-12-29 19:36:12 +03:00
If you have an existing Idris 2, go to Step 3. Otherwise, read on...
2020-05-18 16:43:12 +03:00
2020-05-19 18:24:23 +03:00
Make sure that:
2020-06-17 02:36:26 +03:00
- `$PREFIX/bin` is in your `PATH`
- `$PREFIX/lib` is in your `LD_LIBRARY_PATH` or `DYLD_LIBRARY_PATH` if on
2020-05-20 12:31:30 +03:00
`macOS` (so that the system knows where to look for library support code)
2020-05-19 18:24:23 +03:00
2020-06-17 02:36:26 +03:00
### 2: Installing without an existing Idris 2
2020-05-18 16:43:12 +03:00
2020-08-17 10:16:22 +03:00
You can build from pre-built Chez Scheme source, as long as you have Chez Scheme
installed (or, alternatively, Racket). To do this, enter one of the following:
2020-05-18 18:02:30 +03:00
2020-06-17 02:36:26 +03:00
- `make bootstrap SCHEME=chez`
- `make bootstrap-racket`
2020-05-18 16:43:12 +03:00
2020-06-17 02:36:26 +03:00
`chez` is the executable name of the Chez Scheme compiler. You may need to
2020-05-18 16:43:12 +03:00
replace this with the executable for Chez Scheme on your system. This could be
2020-05-19 23:05:52 +03:00
`scheme` , `chezscheme` or `chezscheme9.5` or something else, depending on your
system and the Chez Scheme version.
2020-05-18 16:43:12 +03:00
This builds an Idris 2 compiler from scheme code output from a working Idris 2
compiler (which isn't necessarily up to date, but is up to date enough to
2020-05-20 12:38:56 +03:00
build the current repository). It then rebuilds using the result, and runs
the tests.
2020-05-19 01:31:25 +03:00
2020-05-20 12:38:56 +03:00
If all is well, to install, type:
2020-05-18 20:02:56 +03:00
2020-06-17 02:36:26 +03:00
- `make install`
2020-05-18 20:02:56 +03:00
2020-08-17 10:16:22 +03:00
### 3: Installing with an existing Idris 2
2020-05-18 16:43:12 +03:00
2021-01-13 15:46:06 +03:00
If you have an earlier version of Idris 2 (minimum version 0.2.2) installed:
2020-05-20 15:31:04 +03:00
2020-06-17 02:36:26 +03:00
- `make all`
- `make install`
2020-05-18 16:43:12 +03:00
2020-08-17 10:16:22 +03:00
### 4: (Optional) Self-hosting step
2020-05-18 16:43:12 +03:00
2020-05-20 13:40:01 +03:00
As a final step, you can rebuild from the newly installed Idris 2 to verify
2020-06-17 02:36:26 +03:00
that everything has worked correctly. Assuming that `idris2` is in your
2020-05-20 13:40:01 +03:00
`PATH` .
2020-05-18 16:43:12 +03:00
2020-06-17 02:36:26 +03:00
- `make clean` -- to make sure you're building everything with the new version
2021-01-21 03:07:03 +03:00
- `make all && make install` -- OR `make all IDRIS2_BOOT='idris2 --codegen racket' && make install` if using Racket.
2020-05-18 16:43:12 +03:00
2020-08-17 10:16:22 +03:00
### 5: Running tests
2020-05-19 21:52:31 +03:00
After `make all` , type `make test` to check everything works. This uses the
executable in `./build/exec` .
2020-05-20 18:38:46 +03:00
2020-08-17 10:16:22 +03:00
### 6: (Optional) Installing the Idris 2 API
2020-05-20 18:38:46 +03:00
You'll only need this if you're developing support tools, such as an external
code generator. To do so, once everything is successfully installed, type:
2020-06-17 02:36:26 +03:00
- `make install-api`
2020-05-20 18:38:46 +03:00
The API will only work if you've completed the self-hosting step, step 3, since
the intermediate code versions need to be consistent throughout.
2020-06-17 02:36:26 +03:00
2020-08-19 04:01:14 +03:00
### Troubleshooting
If you get the message `variable make-thread-parameter is not bound` while
bootstrapping via Chez Scheme, or while running the tests when bootstrapping via
Racket, then your copy of Chez Scheme was built without thread support. Pass
`--threads` to `./configure` while building Chez Scheme to correct the issue.
2020-06-17 02:36:26 +03:00
## Installing from a package manager
### Installing using Homebrew
If you are Homebrew user you can install Idris 2 together with all the requirements
2020-07-31 03:00:12 +03:00
by running the following command:
2020-06-17 02:36:26 +03:00
brew install idris2
2020-07-31 03:00:12 +03:00
### Installing from nix
If you are a [nix ](https://nixos.org/features.html ) user you can install Idris 2 together with all the requirements
by running the following command:
nix-env -i idris2
2021-01-15 20:20:52 +03:00
### Install from nix flakes
If you are a [nix flakes ](https://nixos.wiki/wiki/Flakes ) user you can install Idris 2 together with all the requirements by running the following command:
nix profile install github:idris-lang/Idris2