jwilm / racerd

Rust semantic analysis server powered by Racer
http://jwilm.github.io/racerd/libracerd/
Apache License 2.0
134 stars 24 forks source link

Build fails on latest unstable Rust in Darwin (macOS) #83

Open siriobalmelli opened 4 years ago

siriobalmelli commented 4 years ago

Trying to build the racerd package in nix-pkgs, which depends on the latest unstable rust:

   Compiling iron v0.6.1
error[E0061]: this function takes 1 argument but 0 arguments were supplied
  --> /private/var/folders/kj/tzv099zx2yzgnkjtdhqbxbjh0000gn/T/nix-build-racerd-unstable-2019-09-02.drv-0/racerd-unstable-2019-09-02-vendor.tar.gz/rustc-ap-rustc_data_structures/box_region.rs:36:58
   |
36 |         let init = match Pin::new(&mut result.generator).resume() {
   |                                                          ^^^^^^- supplied 0 arguments
   |
help: expected the unit value `()`; create it with empty parentheses
   |
36 |         let init = match Pin::new(&mut result.generator).resume(()) {
   |                                                                 ^^

error[E0061]: this function takes 1 argument but 0 arguments were supplied
  --> /private/var/folders/kj/tzv099zx2yzgnkjtdhqbxbjh0000gn/T/nix-build-racerd-unstable-2019-09-02.drv-0/racerd-unstable-2019-09-02-vendor.tar.gz/rustc-ap-rustc_data_structures/box_region.rs:52:76
   |
52 |         if let GeneratorState::Complete(_) = Pin::new(&mut self.generator).resume() {
   |                                                                            ^^^^^^- supplied 0 arguments
   |
help: expected the unit value `()`; create it with empty parentheses
   |
52 |         if let GeneratorState::Complete(_) = Pin::new(&mut self.generator).resume(()) {
   |                                                                                   ^^

error[E0061]: this function takes 1 argument but 0 arguments were supplied
  --> /private/var/folders/kj/tzv099zx2yzgnkjtdhqbxbjh0000gn/T/nix-build-racerd-unstable-2019-09-02.drv-0/racerd-unstable-2019-09-02-vendor.tar.gz/rustc-ap-rustc_data_structures/box_region.rs:63:52
   |
63 |         let result = Pin::new(&mut self.generator).resume();
   |                                                    ^^^^^^- supplied 0 arguments
   |
help: expected the unit value `()`; create it with empty parentheses
   |
63 |         let result = Pin::new(&mut self.generator).resume(());
   |                                                           ^^

Unfortunately, this repo depends on features not in stable, attempts to build with stable fail.

Any help would be greatly appreciated.

siriobalmelli commented 4 years ago

I narrowed it down to a rust version change v1.42 -> v1.43 ... this reversion fixed my build: https://github.com/siriobalmelli-foss/nixpkgs/commit/e6fe392f503ae0b9e0239d6c8fd6c82e8c53ea8d

siriobalmelli commented 4 years ago

This is unfortunately still failing. It seems to me (no knowledge of Rust unfortunately) this project depends on some unstable features in Rust which have now changed.

So:

I tried to build again with the latest version and am getting:

error[E0061]: this function takes 1 argument but 0 arguments were supplied
  --> /private/var/folders/kj/tzv099zx2yzgnkjtdhqbxbjh0000gn/T/nix-build-racerd-unstable-2019-09-02.drv-0/racerd-unstable-2019-09-02-vendor.tar.gz/rustc-ap-rustc_data_structures/box_region.rs:36:58
   |
36 |         let init = match Pin::new(&mut result.generator).resume() {
   |                                                          ^^^^^^- supplied 0 arguments
   |
help: expected the unit value `()`; create it with empty parentheses
   |
36 |         let init = match Pin::new(&mut result.generator).resume(()) {
   |                                                                 ^^

error[E0061]: this function takes 1 argument but 0 arguments were supplied
  --> /private/var/folders/kj/tzv099zx2yzgnkjtdhqbxbjh0000gn/T/nix-build-racerd-unstable-2019-09-02.drv-0/racerd-unstable-2019-09-02-vendor.tar.gz/rustc-ap-rustc_data_structures/box_region.rs:52:76
   |
52 |         if let GeneratorState::Complete(_) = Pin::new(&mut self.generator).resume() {
   |                                                                            ^^^^^^- supplied 0 arguments
   |
help: expected the unit value `()`; create it with empty parentheses
   |
52 |         if let GeneratorState::Complete(_) = Pin::new(&mut self.generator).resume(()) {
   |                                                                                   ^^

error[E0061]: this function takes 1 argument but 0 arguments were supplied
  --> /private/var/folders/kj/tzv099zx2yzgnkjtdhqbxbjh0000gn/T/nix-build-racerd-unstable-2019-09-02.drv-0/racerd-unstable-2019-09-02-vendor.tar.gz/rustc-ap-rustc_data_structures/box_region.rs:63:52
   |
63 |         let result = Pin::new(&mut self.generator).resume();
   |                                                    ^^^^^^- supplied 0 arguments
   |
help: expected the unit value `()`; create it with empty parentheses
   |
63 |         let result = Pin::new(&mut self.generator).resume(());
   |                                                           ^^

error: aborting due to 3 previous errors

For more information about this error, try `rustc --explain E0061`.
error: could not compile `rustc-ap-rustc_data_structures`.

To learn more, run the command again with --verbose.
warning: build failed, waiting for other jobs to finish...
error: build failed

This seems to be a legitimate bug in the code, @jwilm please help if at all possible.

I can continue patching my Nixpkgs to stay with 1.42 Rust ... but the means that any rebuilds will now take an hour longer because I am recompiling from source (Nix cache has moved on to 1.43).

It goes without saying that I will take care to get any fixes pushed here merged into upstream Nixpkgs :)

siriobalmelli commented 4 years ago

Upstream Rust seems to have moved to 1.44 now, but build still fails with:

building '/nix/store/0lj5fblpx4kqydz8ni3ly6akba9r9h70-racerd-unstable-2019-09-02.drv'...
unpacking sources
unpacking source archive /nix/store/gj24xablwgh4apwghs78r6x4nm7hxllk-source
source root is source
unpacking source archive /nix/store/ysbgia3j4al5z08gzzpydyrzi8frfs3i-racerd-unstable-2019-09-02-vendor.tar.gz
patching sources
applying patch /nix/store/b59h0c49jspd4acnwrlnd4bjn7lsh7m4-856f3656e160cd2909c5166e962f422c901720ee.patch
patching file Cargo.lock
patching file Cargo.toml
Validating consistency between /private/var/folders/kj/tzv099zx2yzgnkjtdhqbxbjh0000gn/T/nix-build-racerd-unstable-2019-09-02.drv-0/source/Cargo.lock and /private/var/folders/kj/tzv099zx2yzgnkjtdhqbxbjh0000gn/T/nix-build-racerd-unstable-2019-09-02.drv-0/racerd-unstable-2019-09-02-vendor.tar.gz/Cargo.lock
configuring
building
++ env CC_x86_64-apple-darwin=/nix/store/zbdbaflg163wvk8cjn69r4668zgq1yb7-clang-wrapper-7.1.0/bin/cc CXX_x86_64-apple-darwin=/nix/store/zbdbaflg163wvk8cjn69r4668zgq1yb7-clang-wrapper-7.1.0/bin/c++ CC_x86_64-apple-darwin=/nix/store/zbdbaflg163wvk8cjn69r4668zgq1yb7-clang-wrapper-7.1.0/bin/cc CXX_x86_64-apple-darwin=/nix/store/zbdbaflg163wvk8cjn69r4668zgq1yb7-clang-wrapper-7.1.0/bin/c++ cargo build --release --target x86_64-apple-darwin --frozen
   Compiling libc v0.2.62
   Compiling autocfg v0.1.7
   Compiling cfg-if v0.1.9
   Compiling log v0.4.8
   Compiling semver-parser v0.7.0
   Compiling smallvec v0.6.10
   Compiling proc-macro2 v1.0.1
   Compiling rand_core v0.4.2
   Compiling version_check v0.1.5
   Compiling unicode-xid v0.2.0
   Compiling lazy_static v1.3.0
   Compiling syn v1.0.3
   Compiling byteorder v1.3.2
   Compiling scopeguard v1.0.0
   Compiling siphasher v0.2.3
   Compiling traitobject v0.1.0
   Compiling rustc-rayon-core v0.3.0
   Compiling matches v0.1.8
   Compiling serde v1.0.99
   Compiling httparse v1.3.4
   Compiling indexmap v1.0.2
   Compiling safemem v0.3.2
   Compiling either v1.5.2
   Compiling percent-encoding v1.0.1
   Compiling memchr v2.2.1
   Compiling stable_deref_trait v1.1.1
   Compiling ryu v1.0.0
   Compiling rustc-ap-graphviz v610.0.0
   Compiling unicode-width v0.1.5
   Compiling typeable v0.1.2
   Compiling language-tags v0.2.2
   Compiling modifier v0.1.0
   Compiling bitflags v1.1.0
   Compiling proc-macro2 v0.4.30
   Compiling regex-syntax v0.6.11
   Compiling scoped-tls v1.0.0
   Compiling termcolor v1.0.5
   Compiling unicode-xid v0.1.0
   Compiling itoa v0.4.4
   Compiling syn v0.15.44
   Compiling gcc v0.3.55
   Compiling rustc-ap-rustc_target v610.0.0
   Compiling quick-error v1.2.2
   Compiling annotate-snippets v0.6.1
   Compiling rustc-ap-syntax v610.0.0
   Compiling strsim v0.8.0
   Compiling vec_map v0.8.1
   Compiling ansi_term v0.11.0
   Compiling rustc-serialize v0.3.24
   Compiling lazycell v1.2.1
   Compiling strsim v0.9.2
   Compiling constant_time_eq v0.1.3
   Compiling route-recognizer v0.1.13
   Compiling semver v0.9.0
   Compiling rand_core v0.3.1
   Compiling unicode-normalization v0.1.8
   Compiling crossbeam-utils v0.6.6
   Compiling thread_local v0.3.6
   Compiling lock_api v0.3.2
   Compiling unsafe-any v0.4.2
   Compiling unicode-bidi v0.3.4
   Compiling rustc-ap-serialize v610.0.0
   Compiling rand_chacha v0.1.1
   Compiling rand_pcg v0.1.2
   Compiling crossbeam-utils v0.7.0
   Compiling rand v0.6.5
   Compiling crossbeam-epoch v0.8.0
   Compiling unicase v1.4.2
   Compiling itertools v0.8.0
   Compiling textwrap v0.11.0
   Compiling humantime v1.2.0
   Compiling rustc-ap-rustc_lexer v610.0.0
   Compiling rustc_version v0.2.3
   Compiling rand_isaac v0.1.1
   Compiling rand_xorshift v0.1.1
   Compiling rand_hc v0.1.0
   Compiling crossbeam-queue v0.1.2
   Compiling typemap v0.3.3
   Compiling idna v0.1.5
   Compiling rust-crypto v0.2.36
   Compiling rustc-ap-rustc_index v610.0.0
   Compiling log v0.3.9
   Compiling ena v0.13.1
   Compiling memoffset v0.5.3
   Compiling parking_lot_core v0.6.2
   Compiling parking_lot v0.9.0
   Compiling plugin v0.2.6
   Compiling num_cpus v1.10.1
   Compiling time v0.1.42
   Compiling jobserver v0.1.16
   Compiling atty v0.2.13
   Compiling rand v0.4.6
   Compiling term_size v0.3.1
   Compiling rand v0.5.6
   Compiling rand_os v0.1.3
   Compiling rand_jitter v0.1.4
   Compiling base64 v0.9.3
   Compiling rustc-hash v1.0.1
   Compiling quote v1.0.2
   Compiling aho-corasick v0.7.6
   Compiling url v1.7.2
   Compiling quote v0.6.13
   Compiling mime v0.2.6
   Compiling clap v2.33.0
   Compiling rand v0.3.23
   Compiling phf_shared v0.7.24
   Compiling hyper v0.10.16
   Compiling regex v1.2.1
   Compiling phf v0.7.24
   Compiling phf_generator v0.7.24
   Compiling phf_codegen v0.7.24
   Compiling crossbeam-deque v0.7.2
   Compiling env_logger v0.6.2
   Compiling env_logger v0.5.13
   Compiling mime_guess v1.8.7
   Compiling synstructure v0.12.3
   Compiling rustc-rayon v0.3.0
   Compiling rustc-ap-rustc_data_structures v610.0.0
error[E0061]: this function takes 1 argument but 0 arguments were supplied
  --> /private/var/folders/kj/tzv099zx2yzgnkjtdhqbxbjh0000gn/T/nix-build-racerd-unstable-2019-09-02.drv-0/racerd-unstable-2019-09-02-vendor.tar.gz/rustc-ap-rustc_data_structures/box_region.rs:36:58
   |
36 |         let init = match Pin::new(&mut result.generator).resume() {
   |                                                          ^^^^^^- supplied 0 arguments
   |
help: expected the unit value `()`; create it with empty parentheses
   |
36 |         let init = match Pin::new(&mut result.generator).resume(()) {
   |                                                                 ^^

error[E0061]: this function takes 1 argument but 0 arguments were supplied
  --> /private/var/folders/kj/tzv099zx2yzgnkjtdhqbxbjh0000gn/T/nix-build-racerd-unstable-2019-09-02.drv-0/racerd-unstable-2019-09-02-vendor.tar.gz/rustc-ap-rustc_data_structures/box_region.rs:52:76
   |
52 |         if let GeneratorState::Complete(_) = Pin::new(&mut self.generator).resume() {
   |                                                                            ^^^^^^- supplied 0 arguments
   |
help: expected the unit value `()`; create it with empty parentheses
   |
52 |         if let GeneratorState::Complete(_) = Pin::new(&mut self.generator).resume(()) {
   |                                                                                   ^^

error[E0061]: this function takes 1 argument but 0 arguments were supplied
  --> /private/var/folders/kj/tzv099zx2yzgnkjtdhqbxbjh0000gn/T/nix-build-racerd-unstable-2019-09-02.drv-0/racerd-unstable-2019-09-02-vendor.tar.gz/rustc-ap-rustc_data_structures/box_region.rs:63:52
   |
63 |         let result = Pin::new(&mut self.generator).resume();
   |                                                    ^^^^^^- supplied 0 arguments
   |
help: expected the unit value `()`; create it with empty parentheses
   |
63 |         let result = Pin::new(&mut self.generator).resume(());
   |                                                           ^^

error: aborting due to 3 previous errors

For more information about this error, try `rustc --explain E0061`.
error: could not compile `rustc-ap-rustc_data_structures`.

To learn more, run the command again with --verbose.
warning: build failed, waiting for other jobs to finish...
error: build failed
siriobalmelli commented 4 years ago

Rust 1.45 has dropped, and introduced new build errors:

error: the legacy LLVM-style asm! syntax is no longer supported
  --> /private/var/folders/kj/tzv099zx2yzgnkjtdhqbxbjh0000gn/T/nix-build-racerd-unstable-2019-09-02.drv-0/racerd-unstable-2019-09-02-vendor.tar.gz/parking_lot/src/elision.rs:70:13
   |
70 |               asm!("xacquire; lock; cmpxchgq $2, $1"
   |               ^---
   |               |
   |  _____________help: replace with: `llvm_asm!`
   | |
71 | |                  : "={rax}" (prev), "+*m" (self)
72 | |                  : "r" (new), "{rax}" (current)
73 | |                  : "memory"
74 | |                  : "volatile");
   | |_______________________________^
   |
   = note: consider migrating to the new asm! syntax specified in RFC 2873
   = note: alternatively, switch to llvm_asm! to keep your code working as it is

error: the legacy LLVM-style asm! syntax is no longer supported
   --> /private/var/folders/kj/tzv099zx2yzgnkjtdhqbxbjh0000gn/T/nix-build-racerd-unstable-2019-09-02.drv-0/racerd-unstable-2019-09-02-vendor.tar.gz/parking_lot/src/elision.rs:97:13
    |
97  |               asm!("xrelease; lock; xaddq $2, $1"
    |               ^---
    |               |
    |  _____________help: replace with: `llvm_asm!`
    | |
98  | |                  : "=r" (prev), "+*m" (self)
99  | |                  : "0" (val.wrapping_neg())
100 | |                  : "memory"
101 | |                  : "volatile");
    | |_______________________________^
    |
    = note: consider migrating to the new asm! syntax specified in RFC 2873
    = note: alternatively, switch to llvm_asm! to keep your code working as it is

error: aborting due to 2 previous errors

error: could not compile `parking_lot`.

To learn more, run the command again with --verbose.
warning: build failed, waiting for other jobs to finish...
error: build failed
builder for '/nix/store/i378v6lj42637gic9rwld1skd4n640aa-racerd-unstable-2019-09-02.drv' failed with exit code 101