Idris2/INSTALL.md

171 lines
5.5 KiB
Markdown
Raw Normal View History

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
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.
On a Mac, you can install this with `brew install coreutils`.
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
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
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,
by setting the environment variable `IDRIS2_CG=racket` before running `make`.
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
**NOTE**: On FreeBSD, OpenBSD and NetBSD you need to use `gmake` command instead
of `make` in the following steps.
**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.
### 1: Set installation target directory
2020-06-17 02:36:26 +03:00
- Change the `PREFIX` in `config.mk`. The default is to install in
`$HOME/.idris2`
If you have an existing Idris 2, go to Step 3. Otherwise, read on...
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
`macOS` (so that the system knows where to look for library support code)
2020-06-17 02:36:26 +03:00
### 2: Installing without an existing Idris 2
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-06-17 02:36:26 +03:00
- `make bootstrap SCHEME=chez`
- `make bootstrap-racket`
2020-06-17 02:36:26 +03:00
`chez` is the executable name of the Chez Scheme compiler. You may need to
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.
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
build the current repository). It then rebuilds using the result, and runs
the tests.
2020-05-19 01:31:25 +03:00
If all is well, to install, type:
2020-06-17 02:36:26 +03:00
- `make install`
2020-08-17 10:16:22 +03:00
### 3: Installing with an existing Idris 2
If you have an earlier version of Idris 2 (minimum version 0.2.2) installed:
2020-06-17 02:36:26 +03:00
- `make all`
- `make install`
2020-08-17 10:16:22 +03:00
### 4: (Optional) Self-hosting step
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
`PATH`.
2020-06-17 02:36:26 +03:00
- `make clean` -- to make sure you're building everything with the new version
- `make all && make install` -- OR `make all IDRIS2_BOOT='idris2 --codegen racket' && make install` if using Racket.
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-08-17 10:16:22 +03:00
### 6: (Optional) Installing the Idris 2 API
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`
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
### 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.
### 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
```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:
```sh
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:
```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:
```sh
nix run idris-lang/Idris2#emacs-with-idris idrisCode.idr
```