Skip to content

Commit edfe9cb

Browse files
committed
Auto merge of rust-lang#140994 - onur-ozkan:cc2ar-removal, r=albertlarsan68
replace `cc_detect::cc2ar` with `cc::try_get_archiver` ~~Awaiting new release of [cc](https://crates.io/crates/cc) version with rust-lang/cc-rs#1456 to bump the version.~~ ~~Blocked by rust-lang/cc-rs#1456 Kind a self-explanatory. try-job: arm-android
2 parents 60dabef + 3d50f0e commit edfe9cb

File tree

5 files changed

+6
-148
lines changed

5 files changed

+6
-148
lines changed

src/bootstrap/Cargo.lock

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -89,9 +89,9 @@ dependencies = [
8989

9090
[[package]]
9191
name = "cc"
92-
version = "1.2.17"
92+
version = "1.2.23"
9393
source = "registry+https://github.com/rust-lang/crates.io-index"
94-
checksum = "1fcb57c740ae1daf453ae85f16e37396f672b039e00d9d866e07ddb24e328e3a"
94+
checksum = "5f4ac86a9e5bc1e2b3449ab9d7d3a6a405e3d1bb28d7b9be8614f55846ae3766"
9595
dependencies = [
9696
"shlex",
9797
]

src/bootstrap/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ test = false
3232
# Most of the time updating these dependencies requires modifications to the
3333
# bootstrap codebase(e.g., https://github.com/rust-lang/rust/issues/124565);
3434
# otherwise, some targets will fail. That's why these dependencies are explicitly pinned.
35-
cc = "=1.2.17"
35+
cc = "=1.2.23"
3636
cmake = "=0.1.54"
3737

3838
build_helper = { path = "../build_helper" }

src/bootstrap/src/utils/cc_detect.rs

Lines changed: 2 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -22,43 +22,13 @@
2222
//! everything.
2323
2424
use std::collections::HashSet;
25+
use std::iter;
2526
use std::path::{Path, PathBuf};
26-
use std::{env, iter};
2727

2828
use crate::core::config::TargetSelection;
2929
use crate::utils::exec::{BootstrapCommand, command};
3030
use crate::{Build, CLang, GitRepo};
3131

32-
/// Finds archiver tool for the given target if possible.
33-
/// FIXME(onur-ozkan): This logic should be replaced by calling into the `cc` crate.
34-
fn cc2ar(cc: &Path, target: TargetSelection, default_ar: PathBuf) -> Option<PathBuf> {
35-
if let Some(ar) = env::var_os(format!("AR_{}", target.triple.replace('-', "_"))) {
36-
Some(PathBuf::from(ar))
37-
} else if let Some(ar) = env::var_os("AR") {
38-
Some(PathBuf::from(ar))
39-
} else if target.is_msvc() {
40-
None
41-
} else if target.contains("musl") || target.contains("openbsd") {
42-
Some(PathBuf::from("ar"))
43-
} else if target.contains("vxworks") {
44-
Some(PathBuf::from("wr-ar"))
45-
} else if target.contains("-nto-") {
46-
if target.starts_with("i586") {
47-
Some(PathBuf::from("ntox86-ar"))
48-
} else if target.starts_with("aarch64") {
49-
Some(PathBuf::from("ntoaarch64-ar"))
50-
} else if target.starts_with("x86_64") {
51-
Some(PathBuf::from("ntox86_64-ar"))
52-
} else {
53-
panic!("Unknown architecture, cannot determine archiver for Neutrino QNX");
54-
}
55-
} else if target.contains("android") || target.contains("-wasi") {
56-
Some(cc.parent().unwrap().join(PathBuf::from("llvm-ar")))
57-
} else {
58-
Some(default_ar)
59-
}
60-
}
61-
6232
/// Creates and configures a new [`cc::Build`] instance for the given target.
6333
fn new_cc_build(build: &Build, target: TargetSelection) -> cc::Build {
6434
let mut cfg = cc::Build::new();
@@ -140,7 +110,7 @@ pub fn find_target(build: &Build, target: TargetSelection) {
140110
let ar = if let ar @ Some(..) = config.and_then(|c| c.ar.clone()) {
141111
ar
142112
} else {
143-
cc2ar(compiler.path(), target, PathBuf::from(cfg.get_archiver().get_program()))
113+
cfg.try_get_archiver().map(|c| PathBuf::from(c.get_program())).ok()
144114
};
145115

146116
build.cc.borrow_mut().insert(target, compiler.clone());

src/bootstrap/src/utils/cc_detect/tests.rs

Lines changed: 0 additions & 113 deletions
Original file line numberDiff line numberDiff line change
@@ -5,119 +5,6 @@ use super::*;
55
use crate::core::config::{Target, TargetSelection};
66
use crate::{Build, Config, Flags};
77

8-
#[test]
9-
fn test_cc2ar_env_specific() {
10-
let triple = "x86_64-unknown-linux-gnu";
11-
let key = "AR_x86_64_unknown_linux_gnu";
12-
// SAFETY: bootstrap tests run on a single thread
13-
unsafe { env::set_var(key, "custom-ar") };
14-
let target = TargetSelection::from_user(triple);
15-
let cc = Path::new("/usr/bin/clang");
16-
let default_ar = PathBuf::from("default-ar");
17-
let result = cc2ar(cc, target, default_ar);
18-
// SAFETY: bootstrap tests run on a single thread
19-
unsafe { env::remove_var(key) };
20-
assert_eq!(result, Some(PathBuf::from("custom-ar")));
21-
}
22-
23-
#[test]
24-
fn test_cc2ar_musl() {
25-
let triple = "x86_64-unknown-linux-musl";
26-
// SAFETY: bootstrap tests run on a single thread
27-
unsafe { env::remove_var("AR_x86_64_unknown_linux_musl") };
28-
// SAFETY: bootstrap tests run on a single thread
29-
unsafe { env::remove_var("AR") };
30-
let target = TargetSelection::from_user(triple);
31-
let cc = Path::new("/usr/bin/clang");
32-
let default_ar = PathBuf::from("default-ar");
33-
let result = cc2ar(cc, target, default_ar);
34-
assert_eq!(result, Some(PathBuf::from("ar")));
35-
}
36-
37-
#[test]
38-
fn test_cc2ar_openbsd() {
39-
let triple = "x86_64-unknown-openbsd";
40-
// SAFETY: bootstrap tests run on a single thread
41-
unsafe { env::remove_var("AR_x86_64_unknown_openbsd") };
42-
// SAFETY: bootstrap tests run on a single thread
43-
unsafe { env::remove_var("AR") };
44-
let target = TargetSelection::from_user(triple);
45-
let cc = Path::new("/usr/bin/cc");
46-
let default_ar = PathBuf::from("default-ar");
47-
let result = cc2ar(cc, target, default_ar);
48-
assert_eq!(result, Some(PathBuf::from("ar")));
49-
}
50-
51-
#[test]
52-
fn test_cc2ar_vxworks() {
53-
let triple = "armv7-wrs-vxworks";
54-
// SAFETY: bootstrap tests run on a single thread
55-
unsafe { env::remove_var("AR_armv7_wrs_vxworks") };
56-
// SAFETY: bootstrap tests run on a single thread
57-
unsafe { env::remove_var("AR") };
58-
let target = TargetSelection::from_user(triple);
59-
let cc = Path::new("/usr/bin/clang");
60-
let default_ar = PathBuf::from("default-ar");
61-
let result = cc2ar(cc, target, default_ar);
62-
assert_eq!(result, Some(PathBuf::from("wr-ar")));
63-
}
64-
65-
#[test]
66-
fn test_cc2ar_nto_i586() {
67-
let triple = "i586-unknown-nto-something";
68-
// SAFETY: bootstrap tests run on a single thread
69-
unsafe { env::remove_var("AR_i586_unknown_nto_something") };
70-
// SAFETY: bootstrap tests run on a single thread
71-
unsafe { env::remove_var("AR") };
72-
let target = TargetSelection::from_user(triple);
73-
let cc = Path::new("/usr/bin/clang");
74-
let default_ar = PathBuf::from("default-ar");
75-
let result = cc2ar(cc, target, default_ar);
76-
assert_eq!(result, Some(PathBuf::from("ntox86-ar")));
77-
}
78-
79-
#[test]
80-
fn test_cc2ar_nto_aarch64() {
81-
let triple = "aarch64-unknown-nto-something";
82-
// SAFETY: bootstrap tests run on a single thread
83-
unsafe { env::remove_var("AR_aarch64_unknown_nto_something") };
84-
// SAFETY: bootstrap tests run on a single thread
85-
unsafe { env::remove_var("AR") };
86-
let target = TargetSelection::from_user(triple);
87-
let cc = Path::new("/usr/bin/clang");
88-
let default_ar = PathBuf::from("default-ar");
89-
let result = cc2ar(cc, target, default_ar);
90-
assert_eq!(result, Some(PathBuf::from("ntoaarch64-ar")));
91-
}
92-
93-
#[test]
94-
fn test_cc2ar_nto_x86_64() {
95-
let triple = "x86_64-unknown-nto-something";
96-
// SAFETY: bootstrap tests run on a single thread
97-
unsafe { env::remove_var("AR_x86_64_unknown_nto_something") };
98-
// SAFETY: bootstrap tests run on a single thread
99-
unsafe { env::remove_var("AR") };
100-
let target = TargetSelection::from_user(triple);
101-
let cc = Path::new("/usr/bin/clang");
102-
let default_ar = PathBuf::from("default-ar");
103-
let result = cc2ar(cc, target, default_ar);
104-
assert_eq!(result, Some(PathBuf::from("ntox86_64-ar")));
105-
}
106-
107-
#[test]
108-
#[should_panic(expected = "Unknown architecture, cannot determine archiver for Neutrino QNX")]
109-
fn test_cc2ar_nto_unknown() {
110-
let triple = "powerpc-unknown-nto-something";
111-
// SAFETY: bootstrap tests run on a single thread
112-
unsafe { env::remove_var("AR_powerpc_unknown_nto_something") };
113-
// SAFETY: bootstrap tests run on a single thread
114-
unsafe { env::remove_var("AR") };
115-
let target = TargetSelection::from_user(triple);
116-
let cc = Path::new("/usr/bin/clang");
117-
let default_ar = PathBuf::from("default-ar");
118-
let _ = cc2ar(cc, target, default_ar);
119-
}
120-
1218
#[test]
1229
fn test_ndk_compiler_c() {
12310
let ndk_path = PathBuf::from("/ndk");

src/ci/docker/host-x86_64/arm-android/Dockerfile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ RUN /scripts/android-sdk.sh
2828
ENV PATH=$PATH:/android/sdk/emulator
2929
ENV PATH=$PATH:/android/sdk/tools
3030
ENV PATH=$PATH:/android/sdk/platform-tools
31+
ENV PATH=$PATH:/android/ndk/toolchains/llvm/prebuilt/linux-x86_64/bin
3132

3233
ENV TARGETS=arm-linux-androideabi
3334

0 commit comments

Comments
 (0)