Search code examples
substrate

Unable to compile node-runtime


I am unable to compile node-runtime on the substrate v1.0 branch (as part of running ./scripts/build.sh from the substrate git repo base directory as per the installation instructions). The error I get is:

error: cannot find macro proc_macro_call! in this scope --> /substrate/node/runtime/src/lib.rs:210:1 | 210 | / construct_runtime!( 211 | | pub enum Runtime with Log(InternalLog: DigestItem<Hash, AuthorityId, AuthoritySignature>) where 212 | | Block = Block, 213 | | NodeBlock = node_primitives::Block, ... | 234 | | } 235 | | ); | |__^

This had previously worked fine for me on the same machine but no matter what I try now, I cannot get this to compile anymore. My environment is Ubuntu 18.04 on WSL.

I suspected it could have been related to the latest Rust release 1.37.0 as that was the only change to my environment that I'm aware of since last building. But I have tried building with 1.35.0, 1.36.0, 1.37.0 and the 1.39.0-nightly all with same the issue. I have also tried completely blowing away my .cargo directory and starting from a fresh clone of the substrate v1.0 branch.

Any help would be most appreciated.


Solution

  • Also clashed with this problem yesterday and began to looking for ways of solving. All, that you need to do is, downgrade nightly version. You can use this command:

    $ rustup toolchain install nightly-2019-08-16

    and then

    $ rustup default nightly-2019-08-16

    After this, when you'll begin to launch ./scripts/build.sh, you will clash with a new trouble that is connected with WASM. For the decision of this issue use this command:

    $ rustup target add wasm32-unknown-unknown --toolchain nightly

    As a result, you can use build.sh and also when you will launch cargo build --release, it will work!