Skip to content

Commit

Permalink
Auto merge of #2730 - alexcrichton:fix-panic-abort-build-script, r=al…
Browse files Browse the repository at this point in the history
…excrichton

Fix build scripts and panic=abort

Build scripts were apparently always compiled with the "dev" profile rather than
the standard "match whatever the normal build was" profile, which meant that if
dev/release disagreed on panic=abort you'd get compile errors. Seems bad!

This commit fixes this by just having build scripts always compile with the same
profile as libraries (for now), as this was the original intention anyway.

Closes #2726
  • Loading branch information
bors committed May 23, 2016
2 parents 259324c + 183c59c commit ca743f3
Show file tree
Hide file tree
Showing 2 changed files with 45 additions and 3 deletions.
6 changes: 3 additions & 3 deletions src/cargo/ops/cargo_rustc/context.rs
Original file line number Diff line number Diff line change
Expand Up @@ -632,10 +632,10 @@ impl<'a, 'cfg> Context<'a, 'cfg> {
}
}

pub fn build_script_profile(&self, _pkg: &PackageId) -> &'a Profile {
// TODO: should build scripts always be built with a dev
pub fn build_script_profile(&self, pkg: &PackageId) -> &'a Profile {
// TODO: should build scripts always be built with the same library
// profile? How is this controlled at the CLI layer?
&self.profiles.dev
self.lib_profile(pkg)
}

pub fn rustflags_args(&self, unit: &Unit) -> CargoResult<Vec<String>> {
Expand Down
42 changes: 42 additions & 0 deletions tests/test_cargo_compile_custom_build.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1930,3 +1930,45 @@ test!(custom_target_dir {
assert_that(p.cargo_process("build").arg("-v"),
execs().with_status(0));
});

test!(panic_abort_with_build_scripts {
if !::is_nightly() {
return
}
let p = project("foo")
.file("Cargo.toml", r#"
[project]
name = "foo"
version = "0.5.0"
authors = []
[profile.release]
panic = 'abort'
[dependencies]
a = { path = "a" }
"#)
.file("src/lib.rs", "extern crate a;")
.file("a/Cargo.toml", r#"
[project]
name = "a"
version = "0.5.0"
authors = []
build = "build.rs"
[build-dependencies]
b = { path = "../b" }
"#)
.file("a/src/lib.rs", "")
.file("a/build.rs", "extern crate b; fn main() {}")
.file("b/Cargo.toml", r#"
[project]
name = "b"
version = "0.5.0"
authors = []
"#)
.file("b/src/lib.rs", "");

assert_that(p.cargo_process("build").arg("-v").arg("--release"),
execs().with_status(0));
});

0 comments on commit ca743f3

Please sign in to comment.