Compile failures with 1.15.0-nightly (2016-11-14)


#1

Hello all.

My mockers project just failed to compile on Travis CI with latest nighly:

   Compiling mockers_codegen v0.5.3
     Running `rustc /home/travis/.cargo/registry/src/github.com-1ecc6299db9ec823/itertools-0.4.19/src/lib.rs --crate-name itertools --crate-type lib -g -C metadata=42383a1bef75ce72 -C extra-filename=-42383a1bef75ce72 --out-dir /home/travis/build/kriomant/mockers/target/debug/deps --emit=dep-info,link -L dependency=/home/travis/build/kriomant/mockers/target/debug/deps --cap-lints allow`
     Running `rustc /home/travis/.cargo/registry/src/github.com-1ecc6299db9ec823/mockers_codegen-0.5.3/build.rs --crate-name build_script_build --crate-type bin -g --cfg feature=\"default\" -C metadata=2729a6539536accb --out-dir /home/travis/build/kriomant/mockers/target/debug/build/mockers_codegen-2729a6539536accb --emit=dep-info,link -L dependency=/home/travis/build/kriomant/mockers/target/debug/deps --cap-lints allow`
error: linking with `cc` failed: exit code: 1
  |
  = note: "cc" "-Wl,--as-needed" "-Wl,-z,noexecstack" "-m64" "-L" "/home/travis/rust/lib/rustlib/x86_64-unknown-linux-gnu/lib" "/home/travis/build/kriomant/mockers/target/debug/build/mockers_codegen-2729a6539536accb/build_script_build.0.o" "-o" "/home/travis/build/kriomant/mockers/target/debug/build/mockers_codegen-2729a6539536accb/build_script_build" "-Wl,--gc-sections" "-pie" "-nodefaultlibs" "-L" "/home/travis/build/kriomant/mockers/target/debug/deps" "-L" "/home/travis/rust/lib/rustlib/x86_64-unknown-linux-gnu/lib" "-Wl,-Bstatic" "-Wl,-Bdynamic" "/home/travis/rust/lib/rustlib/x86_64-unknown-linux-gnu/lib/libstd-1357b93f.rlib" "/home/travis/rust/lib/rustlib/x86_64-unknown-linux-gnu/lib/librand-1357b93f.rlib" "/home/travis/rust/lib/rustlib/x86_64-unknown-linux-gnu/lib/libcollections-1357b93f.rlib" "/home/travis/rust/lib/rustlib/x86_64-unknown-linux-gnu/lib/librustc_unicode-1357b93f.rlib" "/home/travis/rust/lib/rustlib/x86_64-unknown-linux-gnu/lib/libpanic_unwind-1357b93f.rlib" "/home/travis/rust/lib/rustlib/x86_64-unknown-linux-gnu/lib/libunwind-1357b93f.rlib" "/home/travis/rust/lib/rustlib/x86_64-unknown-linux-gnu/lib/liballoc-1357b93f.rlib" "/home/travis/rust/lib/rustlib/x86_64-unknown-linux-gnu/lib/liballoc_jemalloc-1357b93f.rlib" "/home/travis/rust/lib/rustlib/x86_64-unknown-linux-gnu/lib/liblibc-1357b93f.rlib" "/home/travis/rust/lib/rustlib/x86_64-unknown-linux-gnu/lib/libcore-1357b93f.rlib" "/home/travis/rust/lib/rustlib/x86_64-unknown-linux-gnu/lib/libcompiler_builtins-1357b93f.rlib" "-l" "dl" "-l" "pthread" "-l" "gcc_s" "-l" "pthread" "-l" "c" "-l" "m" "-l" "rt" "-l" "util"
  = note: /usr/bin/ld: /home/travis/rust/lib/rustlib/x86_64-unknown-linux-gnu/lib/libstd-1357b93f.rlib(fileline.o)(.debug_frame+0x6c): reloc against `.debug_frame': error 2
/usr/bin/ld: final link failed: Nonrepresentable section on output
collect2: ld returned 1 exit status

and I don’t understand why.

Additionally, when I try to compile mockers_codegen locally, cargo says:

error: Package `mockers_codegen v0.5.3` does not have these features:  debug`

while it is here:

❯❯ grep -B19 debug Cargo.toml
[features]

# In default configuration codegen uses nightly Rust compiler internals.
# This configuration is used by `mockers_macro` compiler plugin and it
# works with nightly Rust only.
default = []

# Aternatively library may be configured to use `syntex` library for
# code parsing and generation.
# It is used for code generation approach, which is the only possible way
# on stable Rust.
# Additionally, this configuration is used by `mockers_derive` library,
# which uses unfinished "macros 1.1" Rust feature
# (https://github.com/rust-lang/rust/issues/35900). This feature isn't yet
# ready, but it will allow to use macros on stable Rust, so it's better to
# be ready for it.
with-syntex = ["syntex", "syntex_syntax", "quasi", "quasi_codegen"]

# Show generated code.
debug = []

#2

The first issue is rust-lang/rust#37786 and will be fixed in the next nightly.


#3

I usually put something like the following in my .travis.yml:

language: rust

rust:
  - stable
  - beta
  - nightly

matrix:
  allow_failures:
    - rust: nightly

Then TravisCI won’t consider nightly failures as a build failure, but you’ll still have a record.


#4

Oh, ok, thank you.


#5

Thanks. But nightly is in fact primary platform for my project :slight_smile:


#6

Now the only problem left is one with unknown feature.