mirror of
https://github.com/cargo-bins/cargo-binstall.git
synced 2025-04-24 22:30:03 +00:00
Fix detect-targets
glibc detection (#1421)
* Fix `detect-targets` glibc detection Fixed #1420 Signed-off-by: Jiahao XU <Jiahao_XU@outlook.com> * Fix `detect-targets` glibc detection for Fedora Fedora 37-39 has glibc installed in `/lib64` and `/usr/lib64` instead of `/lib` or `/usr/lib`. Signed-off-by: Jiahao XU <Jiahao_XU@outlook.com> * Improve caching in `detect-targets-alpine-test` Make sure it reuses cached artifacts instead of recompiling everything. Signed-off-by: Jiahao XU <Jiahao_XU@outlook.com> * Mv `test-detect-targets-musl.sh` into `.github/scripts/` Signed-off-by: Jiahao XU <Jiahao_XU@outlook.com> * Refactor `ci.yml`: Extract new job `detect-targets-build` Signed-off-by: Jiahao XU <Jiahao_XU@outlook.com> * FIx `detect-targets-ubuntu-test` Signed-off-by: Jiahao XU <Jiahao_XU@outlook.com> * Avoid building the entire workspacein `detect-targets-build` Signed-off-by: Jiahao XU <Jiahao_XU@outlook.com> * Fix `detect-targets-*-test`: `chmod +x detect-targets` Also fixed testing on Alpine, to make sure it exits with status 1 on assertion failure. Signed-off-by: Jiahao XU <Jiahao_XU@outlook.com> * Fix typo Signed-off-by: Jiahao XU <Jiahao_XU@outlook.com> * Cache all crates in `detect-targets-build` Since `detect-targets` rarely changes and is quite small, it is also reasonable to cache it. Signed-off-by: Jiahao XU <Jiahao_XU@outlook.com> * Add job `detect-targets-more-glibc-test` Signed-off-by: Jiahao XU <Jiahao_XU@outlook.com> * Add `detect-targets-nix-test` Signed-off-by: Jiahao XU <Jiahao_XU@outlook.com> * Fix `detect-targets-nix-test` executing `detect-targets` Signed-off-by: Jiahao XU <Jiahao_XU@outlook.com> * Fix workflow: Add all `detect-targets-*` jobs to be dep of `tests-pass` Signed-off-by: Jiahao XU <Jiahao_XU@outlook.com> --------- Signed-off-by: Jiahao XU <Jiahao_XU@outlook.com>
This commit is contained in:
parent
86060fadc2
commit
b56a8c3579
3 changed files with 99 additions and 29 deletions
|
@ -38,16 +38,23 @@ pub(super) async fn detect_targets(target: String) -> Vec<String> {
|
|||
.expect("unwrap: target always has a - for cpu_arch")
|
||||
.0;
|
||||
|
||||
let cpu_arch_suffix = cpu_arch.replace('_', "-");
|
||||
let handles: Vec<_> = {
|
||||
let cpu_arch_suffix = cpu_arch.replace('_', "-");
|
||||
let filename = format!("ld-linux-{cpu_arch_suffix}.so.2");
|
||||
let dirname = format!("{cpu_arch}-linux-gnu");
|
||||
|
||||
let handles: Vec<_> = [
|
||||
format!("/lib/ld-linux-{cpu_arch_suffix}.so.2"),
|
||||
format!("/lib/{cpu_arch}-linux-gnu/ld-linux-{cpu_arch_suffix}.so.2"),
|
||||
format!("/usr/lib/{cpu_arch}-linux-gnu/ld-linux-{cpu_arch_suffix}.so.2"),
|
||||
]
|
||||
.into_iter()
|
||||
.map(|p| AutoAbortHandle(tokio::spawn(is_gnu_ld(p))))
|
||||
.collect();
|
||||
[
|
||||
format!("/lib/{filename}"),
|
||||
format!("/lib64/{filename}"),
|
||||
format!("/lib/{dirname}/{filename}"),
|
||||
format!("/lib64/{dirname}/{filename}"),
|
||||
format!("/usr/lib/{dirname}/{filename}"),
|
||||
format!("/usr/lib64/{dirname}/{filename}"),
|
||||
]
|
||||
.into_iter()
|
||||
.map(|p| AutoAbortHandle(tokio::spawn(is_gnu_ld(p))))
|
||||
.collect()
|
||||
};
|
||||
|
||||
let has_glibc = async move {
|
||||
for mut handle in handles {
|
||||
|
@ -108,7 +115,7 @@ You are not meant to run this directly.
|
|||
if status.success() {
|
||||
// Executing glibc ldd or /lib/ld-linux-{cpu_arch}.so.1 will always
|
||||
// succeeds.
|
||||
stdout.contains("GLIBC").then_some(Libc::Gnu)
|
||||
(stdout.contains("GLIBC") || stdout.contains("GNU libc")).then_some(Libc::Gnu)
|
||||
} else if status.code() == Some(1) {
|
||||
// On Alpine, executing both the gcompat glibc and the ldd and
|
||||
// /lib/ld-musl-{cpu_arch}.so.1 will fail with exit status 1.
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue