diff --git a/src/cargo/ops/cargo_rustc/context.rs b/src/cargo/ops/cargo_rustc/context.rs index 0c914b40693..bd5a76ba7a5 100644 --- a/src/cargo/ops/cargo_rustc/context.rs +++ b/src/cargo/ops/cargo_rustc/context.rs @@ -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> { diff --git a/tests/test_cargo_compile_custom_build.rs b/tests/test_cargo_compile_custom_build.rs index 8dcd4874a35..f2434f26bad 100644 --- a/tests/test_cargo_compile_custom_build.rs +++ b/tests/test_cargo_compile_custom_build.rs @@ -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)); +});