summaryrefslogtreecommitdiff
path: root/posts/install-rust-analyzer-on-openbsd-current.md
blob: a97f71189abcd95ea1993e49ef6afdc30111ab8e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
---
title: "Install rust-analyzer on OpenBSD -current"
description: "How to install the language server for Rust from source without rustup."
published: 2022-01-04
---

The Rust Programming Language is anything but small.
One thing that helped me find my way through the language and its libraries is the language server [rust-analyzer](https://rust-analyzer.github.io/).
The [manual](https://rust-analyzer.github.io/manual.html) lists numerous compatible editor integrations.
For example, I'm happy with using Vim with [vim-lsp](https://github.com/prabirshrestha/vim-lsp) and [asyncomplete.vim](https://github.com/prabirshrestha/asyncomplete.vim).

The project provides [pre-compiled binaries](https://github.com/rust-analyzer/rust-analyzer/releases) for Linux, macOS, and Windows.
However, installation from source was slightly trickier than expected.
So here's how I installed rust-analyzer from source on OpenBSD -current.
The process should work on other platforms alike, especially without `rustup`.

First, install `rustc` and `cargo` from the `lang/rust` port.
You might also want to install `rust-clippy` and `rust-rustfmt` while you're at it.

    $ doas pkg_add rust rust-clippy rust-rustfmt

Second, compile and install the rust-analyzer binary from source.

    $ cargo install \
        --git https://github.com/rust-analyzer/rust-analyzer.git \
        --branch release \
        --force \
        --bin rust-analyzer \
        --target-dir "$HOME/.cache/rust-analyzer" \
        --locked \
        rust-analyzer

This will install the latest release of rust-analyzer to `~/.cargo/bin/`.
Remember to add this location to your `PATH`.

    $ export PATH="$HOME/.cargo/bin:$PATH"

Finally, rust-analyzer needs a local copy of Rust's source code.
The following commands fetch the source code matching the version of the currently installed Rust compiler.

    $ [ -d "$HOME/.cache/rust-src" ] ||
        git clone https://github.com/rust-lang/rust.git "$HOME/.cache/rust-src"
    $ cd "$HOME/.cache/rust-src" &&
        git fetch --tags &&
        git checkout "$( rustc --version | sed 's/^rustc[[:space:]]*//' )"

Lastly, tell rust-analyzer where to find the source code.

    $ export RUST_SRC_PATH="$HOME/.cache/rust-src/library"

With this, your favorite editor should be able to talk to rust-analyzer and help you find your way.
Of course, you better add the above exports to your `~/.profile`.
I've also added the above commands to my local update script to keep rustc, rust-analyzer, and the sources in sync.
Generated by cgit. See skreutz.com for my tech blog and contact information.