nautilus icon indicating copy to clipboard operation
nautilus copied to clipboard

cargo build failure for grammartec #![feature] may not be used on the stable release channel

Open zjuchenyuan opened this issue 6 years ago • 2 comments

I'm following your README, in ubuntu16.04

   Compiling grammartec v0.1.0 (/nautilus/grammartec)
error[E0554]: #![feature] may not be used on the stable release channel
 --> grammartec/src/lib.rs:1:1
  |
1 | #![feature(exclusive_range_pattern)]
  | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

error[E0554]: #![feature] may not be used on the stable release channel
 --> grammartec/src/lib.rs:2:1
  |
2 | #![feature(step_trait)]
  | ^^^^^^^^^^^^^^^^^^^^^^^

warning: unused import: `std::collections::HashMap`
  --> grammartec/src/tree.rs:10:5
   |
10 | use std::collections::HashMap;
   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
   |
   = note: #[warn(unused_imports)] on by default

warning: unused imports: `Rng`, `sample`, `thread_rng`
 --> grammartec/src/recursion_info.rs:2:12
  |
2 | use rand::{sample, thread_rng, Rng, StdRng};
  |            ^^^^^^  ^^^^^^^^^^  ^^^

warning: unused import: `rule::NormalOrCustomRule`
 --> grammartec/src/recursion_info.rs:8:5
  |
8 | use rule::NormalOrCustomRule;
  |     ^^^^^^^^^^^^^^^^^^^^^^^^

warning: unnecessary parentheses around `if` condition
  --> grammartec/src/recursion_info.rs:40:19
   |
40 |                 if(ctx.get_nt(rule) == nt){
   |                   ^^^^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses
   |
   = note: #[warn(unused_parens)] on by default

warning: unnecessary parentheses around `for` head expression
  --> grammartec/src/recursion_info.rs:50:26
   |
50 |                 for _ in (0..ctx.get_num_children(rule)){
   |                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses

warning: use of deprecated item 'rand::sample': renamed to seq::sample_iter
 --> grammartec/src/chunkstore.rs:3:12
  |
3 | use rand::{sample, thread_rng};
  |            ^^^^^^
  |
  = note: #[warn(deprecated)] on by default

warning: use of deprecated item 'rand::sample': renamed to seq::sample_iter
  --> grammartec/src/chunkstore.rs:66:49
   |
66 |         let selected = relevant.and_then(|iter| sample(&mut thread_rng(), iter, 1).pop());
   |                                                 ^^^^^^

warning: use of deprecated item 'rand::sample': renamed to seq::sample_iter
 --> grammartec/src/context.rs:8:12
  |
8 | use rand::{sample, thread_rng, Rng, StdRng};
  |            ^^^^^^

warning: use of deprecated item 'rand::sample': renamed to seq::sample_iter
   --> grammartec/src/context.rs:566:15
    |
566 |         match sample(&mut thread_rng(), applicable_rules, 1).pop() {
    |               ^^^^^^

warning: use of deprecated item 'rand::sample': renamed to seq::sample_iter
 --> grammartec/src/recursion_info.rs:2:12
  |
2 | use rand::{sample, thread_rng, Rng, StdRng};
  |            ^^^^^^

warning: unused import: `TreeLike`
 --> grammartec/src/recursion_info.rs:7:17
  |
7 | use tree::{Tree,TreeLike};
  |                 ^^^^^^^^

error: aborting due to 2 previous errors

For more information about this error, try `rustc --explain E0554`.
error: Could not compile `grammartec`.
warning: build failed, waiting for other jobs to finish...
error: build failed

I'm trying to build this using this Dockerfile: (which is based on ubuntu16.04)

FROM zjuchenyuan/base

RUN apt update &&\
    apt install -y g++-multilib clang llvm-3.8-dev ruby bison ruby-dev cargo

RUN git clone https://github.com/RUB-SysSec/nautilus.git &&\
    cd /nautilus/forksrv/instrument/rt &&\
    make &&\
    cd /nautilus/forksrv/instrument/clang_wrapper &&\
    make

RUN git clone https://github.com/mruby/mruby.git /nautilus/forksrv/instrument/mruby &&\
    cd /nautilus/forksrv/instrument/mruby &&\
    CC=/nautilus/forksrv/instrument/clang_wrapper/redqueen-clang \
    LD=/nautilus/forksrv/instrument/clang_wrapper/redqueen-clang \
    make

RUN cd nautilus &&\
    mkdir -p outputs/queue &&\
    sed -i 's#/data/projects/grammar_fuzz/gramophone#/nautilus#g' config.ron

And running cargo run -p gramophone --release --bin fuzzer in the container.

zjuchenyuan avatar Sep 11 '19 12:09 zjuchenyuan

https://stackoverflow.com/questions/53136717/errore0554-feature-may-not-be-used-on-the-stable-release-channel-couldnt

following the instruction given above, we need nightly build for rust to compile.

RUN curl -o rustup-init.sh -sSf https://sh.rustup.rs &&\
    sh rustup-init.sh -y &&\
    rustup install nightly &&\
    cd nautilus &&\
    mkdir -p outputs/queue &&\
    sed -i 's#/data/projects/grammar_fuzz/gramophone#/nautilus#g' config.ron &&\
    sed -i 's#"/nautilus"#"/nautilus/"#' config.ron &&\
    cargo +nightly build

I suggest changing README to add +nightly parameter:

cargo +nightly run -p gramophone --release --bin fuzzer

zjuchenyuan avatar Sep 11 '19 13:09 zjuchenyuan

@zjuchenyuan 朋友你好,nautlius这个项目代码你跑成功了吗?

Hanseltu avatar Oct 09 '19 02:10 Hanseltu