racer-rust/racer

`cargo +nightly install racer` won't build (v 2.2 +), could not find `rust_ast` (and others) in registry `crates-io` with version `*`

stradicat opened this issue · 2 comments

Hello!

New rustacean here.

I tried building racer on a newly deployed dev machine yesterday, but the process couldn't be completed.
I followed the same procedure as in other dev machines, but in this particular case, I get the following error message:

   Compiling racer v2.2.1
error[E0463]: can't find crate for `rustc_ast`
  --> /home/adminifis/.cargo/registry/src/github.com-1ecc6299db9ec823/racer-2.2.1/src/racer/lib.rs:16:1
   |
16 | extern crate rustc_ast;
   | ^^^^^^^^^^^^^^^^^^^^^^^ can't find crate
   |
   = help: maybe you need to install the missing components with: `rustup component add rust-src rustc-dev llvm-tools-preview`

error[E0463]: can't find crate for `rustc_ast_pretty`
  --> /home/adminifis/.cargo/registry/src/github.com-1ecc6299db9ec823/racer-2.2.1/src/racer/lib.rs:17:1
   |
17 | extern crate rustc_ast_pretty;
   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ can't find crate
   |
   = help: maybe you need to install the missing components with: `rustup component add rust-src rustc-dev llvm-tools-preview`

error[E0463]: can't find crate for `rustc_data_structures`
  --> /home/adminifis/.cargo/registry/src/github.com-1ecc6299db9ec823/racer-2.2.1/src/racer/lib.rs:18:1
   |
18 | extern crate rustc_data_structures;
   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ can't find crate
   |
   = help: maybe you need to install the missing components with: `rustup component add rust-src rustc-dev llvm-tools-preview`

error[E0463]: can't find crate for `rustc_errors`
  --> /home/adminifis/.cargo/registry/src/github.com-1ecc6299db9ec823/racer-2.2.1/src/racer/lib.rs:19:1
   |
19 | extern crate rustc_errors;
   | ^^^^^^^^^^^^^^^^^^^^^^^^^^ can't find crate
   |
   = help: maybe you need to install the missing components with: `rustup component add rust-src rustc-dev llvm-tools-preview`

error[E0463]: can't find crate for `rustc_parse`
  --> /home/adminifis/.cargo/registry/src/github.com-1ecc6299db9ec823/racer-2.2.1/src/racer/lib.rs:20:1
   |
20 | extern crate rustc_parse;
   | ^^^^^^^^^^^^^^^^^^^^^^^^^ can't find crate
   |
   = help: maybe you need to install the missing components with: `rustup component add rust-src rustc-dev llvm-tools-preview`

[...]

error[E0412]: cannot find type `PatKind` in this scope
   --> /home/adminifis/.cargo/registry/src/github.com-1ecc6299db9ec823/racer-2.2.1/src/racer/ast_types.rs:306:34
    |
306 |     pub(crate) fn from_ast(pat: &PatKind, scope: &Scope) -> Self {
    |                                  ^^^^^^^ not found in this scope

error[E0412]: cannot find type `GenericBounds` in this scope
   --> /home/adminifis/.cargo/registry/src/github.com-1ecc6299db9ec823/racer-2.2.1/src/racer/ast_types.rs:736:18
    |
736 |         bounds: &GenericBounds,
    |                  ^^^^^^^^^^^^^ not found in this scope

error[E0412]: cannot find type `TraitRef` in this scope
   --> /home/adminifis/.cargo/registry/src/github.com-1ecc6299db9ec823/racer-2.2.1/src/racer/ast_types.rs:993:25
    |
989 | impl ImplHeader {
    |     - help: you might be missing a type parameter: `<TraitRef>`
...
993 |         otrait: &Option<TraitRef>,
    |                         ^^^^^^^^ not found in this scope

error[E0412]: cannot find type `TyKind` in this scope
    --> /home/adminifis/.cargo/registry/src/github.com-1ecc6299db9ec823/racer-2.2.1/src/racer/ast_types.rs:1060:34
     |
1060 | pub(crate) fn get_self_path(ty: &TyKind, scope: &Scope) -> Option<Path> {
     |                                  ^^^^^^ not found in this scope

error[E0412]: cannot find type `BinOpKind` in this scope
    --> /home/adminifis/.cargo/registry/src/github.com-1ecc6299db9ec823/racer-2.2.1/src/racer/nameres.rs:2721:11
     |
2721 |     node: BinOpKind,
     |           ^^^^^^^^^ not found in this scope

error[E0412]: cannot find type `LitIntType` in this scope
  --> /home/adminifis/.cargo/registry/src/github.com-1ecc6299db9ec823/racer-2.2.1/src/racer/primitive.rs:61:36
   |
61 |     pub(crate) fn from_litint(lit: LitIntType) -> Self {
   |                                    ^^^^^^^^^^ not found in this scope

error[E0412]: cannot find type `BinOpKind` in this scope
  --> /home/adminifis/.cargo/registry/src/github.com-1ecc6299db9ec823/racer-2.2.1/src/racer/typeinf.rs:25:38
   |
25 | pub(crate) fn get_operator_trait(op: BinOpKind) -> &'static str {
   |                                      ^^^^^^^^^ not found in this scope

Some errors have detailed explanations: E0405, E0412, E0425, E0433, E0463.
For more information about an error, try `rustc --explain E0405`.
error: could not compile `racer` due to 275 previous errors
warning: build failed, waiting for other jobs to finish...
error: failed to compile `racer v2.2.1`, intermediate artifacts can be found at `/tmp/cargo-installYTQMSq`

My standard rust installation follows this procedure:

curl --compressed --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh; rustup toolchain install nightly; rustup +stable component add clippy rls rust-analysis rustfmt rust-src rustc-dev llvm-tools-preview; rustup +nightly component add clippy rls rust-analysis rustfmt rust-src rustc-dev llvm-tools-preview; cargo +nightly install racer; cargo install cargo-edit cargo-audit mdbook cargo-update cargo-outdated

The supposedly missing components, according to the error message, are already installed.
I completely removed rust and reinstalled from scratch, the error persists.

What would you suggest I do to debug?

Hello!

New rustacean here.

Welcome 👋

First want to note that racer is essentially no longer maintained nor supported, and users should look at using Rust Analyzer instead.

If you do still want/need to build racer from source, be sure to follow the installation instructions in https://github.com/racer-rust/racer#current-nightly-rust and that you specify the correct toolchain when issuing build commands. The error is indicative of trying to compile racer with a toolchain that doesn't have the required components installed.

Racer, as well as many of the official tools/components like clippy and friends, make use of the compiler internals in a way that makes them comparatively difficult to compile from source as compared to a crate from crates.io. This unusual set of circumstances not only requires building on nightly, but typically a specific version can only be compiled with a specific set of nightly toolchains.

If you're still hitting issues with a recent nightly that has the requisite components, then your best bet would be to go back to a known-good nightly, as specified in the toolchain file in the repo root

Thanks for the heads-up, @calebcartwright!

I'm going with rust-analyzer instead then.