无法编译节点运行时

Unable to compile node-runtime

我无法在 substrate v1.0 分支上编译节点运行时(作为 运行 ./scripts/build.sh 的一部分,来自 substrate git repo 基目录安装说明)。我得到的错误是:

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 | | ); | |__^

这之前在同一台机器上对我来说运行良好,但无论我现在尝试什么,我都无法再编译它。我的环境是 Ubuntu WSL 上的 18.04。

我怀疑它可能与最新的 Rust 版本 1.37.0 有关,因为这是自上次构建以来我所知道的对我的环境的唯一更改。但是我尝试使用 1.35.0、1.36.0、1.37.0 和 1.39.0-nightly 进行构建,但都遇到了同样的问题。我还尝试完全清除我的 .cargo 目录并从 substrate v1.0 分支的新克隆开始。

如有任何帮助,我们将不胜感激。

昨天也遇到这个问题,开始寻找解决办法。您需要做的就是降级夜间版本。你可以使用这个命令:

$ rustup toolchain install nightly-2019-08-16

然后

$ rustup default nightly-2019-08-16

此后,当您开始启动./scripts/build.sh 时,您会遇到与 WASM 相关的新问题。对于此问题的决定,请使用此命令:

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

因此,您可以使用 build.sh 并且当您启动 cargo build --release 时,它会起作用的!