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.
2021-05-25 13:01:28 +03:00
On a macOS, 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
2021-03-15 17:21:50 +03:00
[MSYS2 ](https://www.msys2.org/ ). On Windows older than Windows 8, you may need to
2020-06-02 05:30:44 +03:00
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.
2021-04-19 13:18:42 +03:00
### 1: Set installation target directory
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
2021-04-19 13:18:42 +03:00
The API will only work if you've completed the self-hosting step, step 4, since
the intermediate code versions need to be consistent throughout. Otherwise, you
will get an `Error in TTC: TTC data is in an older format` error.
2020-06-17 02:36:26 +03:00
2021-05-11 07:09:23 +03:00
### 7: (Optional) Shell Auto-completion
Idris2 supports tab auto-completion for Bash-like shells.
#### For Bash Users
From within bash, run the following command:
```sh
eval "$(idris2 --bash-completion-script idris2)"
```
You can also add it to your `.bashrc` file.
#### For ZSH Users
From within ZSH, run the following commands:
```sh
autoload -U +X compinit & & compinit
autoload -U +X bashcompinit & & bashcompinit
eval "$(idris2 --bash-completion-script idris2)"
```
You can also add them to your `.zshrc` file.
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
2021-05-11 07:09:23 +03:00
```sh
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:
2021-05-11 07:09:23 +03:00
```sh
nix-env -i idris2
```
2021-01-22 16:30:42 +03:00
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:
2021-05-11 07:09:23 +03:00
```sh
nix profile install github:idris-lang/Idris2
```
2021-03-15 17:21:50 +03:00
## Running in text editor
### Run on emacs using nix flakes
If you are a [nix flakes ](https://nixos.wiki/wiki/Flakes ) user you can run Idris 2 in emacs by running the following command:
2021-05-11 07:09:23 +03:00
```sh
nix run idris-lang/Idris2#emacs-with-idris idrisCode.idr
```