diff options
author | Connor Peet <connor@peet.io> | 2022-11-12 01:31:18 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-11-12 01:31:18 +0300 |
commit | d5a5128919a2cf0a0f4ad232acb42fa2d4592501 (patch) | |
tree | 864c48579d72c602ac5a4fa8b1cec5cb73aa60b9 | |
parent | 24340e259a934a8c877d5bdf6f0be9ab64e850d7 (diff) | |
parent | 0cd1422809b52b0a6e1592eb92193c5cf6260a43 (diff) |
Merge pull request #166151 from microsoft/connor4312/cli-fix-nixos
cli: skip glibc check for nixos
-rw-r--r-- | cli/src/util/prereqs.rs | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/cli/src/util/prereqs.rs b/cli/src/util/prereqs.rs index dd240b412d8..0070858ddeb 100644 --- a/cli/src/util/prereqs.rs +++ b/cli/src/util/prereqs.rs @@ -23,6 +23,8 @@ lazy_static! { static ref MIN_LDD_VERSION: SimpleSemver = SimpleSemver::new(2, 17, 0); } +const NIXOS_TEST_PATH: &str = "/etc/NIXOS"; + pub struct PreReqChecker {} impl Default for PreReqChecker { @@ -45,13 +47,14 @@ impl PreReqChecker { #[cfg(target_os = "linux")] pub async fn verify(&self) -> Result<Platform, AnyError> { - let (gnu_a, gnu_b, or_musl) = tokio::join!( + let (is_nixos, gnu_a, gnu_b, or_musl) = tokio::join!( + check_is_nixos(), check_glibc_version(), check_glibcxx_version(), check_musl_interpreter() ); - if gnu_a.is_ok() && gnu_b.is_ok() { + if (gnu_a.is_ok() && gnu_b.is_ok()) || is_nixos { return Ok(if cfg!(target_arch = "x86_64") { Platform::LinuxX64 } else if cfg!(target_arch = "armhf") { @@ -132,6 +135,13 @@ async fn check_glibc_version() -> Result<(), String> { Ok(()) } +/// Check for nixos to avoid mandating glibc versions. See: +/// https://github.com/microsoft/vscode-remote-release/issues/7129 +#[allow(dead_code)] +async fn check_is_nixos() -> bool { + fs::metadata(NIXOS_TEST_PATH).await.is_ok() +} + #[allow(dead_code)] async fn check_glibcxx_version() -> Result<(), String> { let mut libstdc_path: Option<String> = None; |