From c97ecc7326b4071c72c2fdbab74419c7d6cd61da Mon Sep 17 00:00:00 2001 From: Kirill Bulatov Date: Wed, 21 Feb 2024 00:35:29 +0200 Subject: [PATCH] Add initial CI job for Windows target (#8088) Clippy is disabled for now, due to many warnings in both `gpui` and other code, see https://github.com/zed-industries/zed/actions/runs/7980269779/job/21789529800 for more details. Also, due to `#!/usr/bin/env bash` shebang in the `script/clippy`, it starts in Windows CI with `shell: C:\Program Files\Git\bin\bash.EXE -euxo pipefail {0}` https://github.com/zed-industries/zed/actions/runs/7980269779/job/21789529800#step:4:3 It seems more appropriate to use PowerShell instead. See `todo!("windows")` for all stubbed places currently. Release Notes: - N/A --- .github/workflows/ci.yml | 30 +++++++++++++++++++++++ crates/fs/src/fs.rs | 2 +- crates/gpui/src/platform.rs | 4 +++ crates/gpui/src/platform/test/platform.rs | 3 +++ crates/install_cli/src/install_cli.rs | 14 +++++++---- crates/terminal/src/terminal.rs | 4 +-- crates/zed/src/languages/csharp.rs | 14 +++++++---- crates/zed/src/languages/elixir.rs | 14 +++++++---- crates/zed/src/languages/lua.rs | 14 +++++++---- crates/zed/src/languages/rust.rs | 14 +++++++---- crates/zed/src/languages/toml.rs | 14 +++++++---- crates/zed/src/languages/zig.rs | 14 +++++++---- 12 files changed, 103 insertions(+), 38 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index bf8d7a79efebc578151e1865f3f52ef100ee3051..43549531a4afa8f4bc83cdac90d05243ebdfb7a1 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -126,6 +126,36 @@ jobs: - name: Build Zed run: cargo build -p zed + + # todo!(windows): Actually run the tests + windows_tests: + name: (Windows) Run Clippy and tests + runs-on: windows-latest + steps: + - name: Checkout repo + uses: actions/checkout@v4 + with: + clean: false + submodules: "recursive" + + - name: Restore from cache + uses: actions/cache@v4 + with: + path: | + ~/.cargo/bin/ + ~/.cargo/registry/index/ + ~/.cargo/registry/cache/ + ~/.cargo/git/db/ + target/ + key: ${{ runner.os }}-cargo-${{ hashFiles('**/rust-toolchain.toml') }}-${{ hashFiles('**/Cargo.lock') }} + # todo!(windows): Actually run clippy + #- name: cargo clippy + # shell: bash -euxo pipefail {0} + # run: script/clippy + + - name: Build Zed + run: cargo build -p zed + bundle: name: Bundle macOS app runs-on: diff --git a/crates/fs/src/fs.rs b/crates/fs/src/fs.rs index 968c1795f1239c5c4874043188361eff93934af6..bde0fe3f704531ea9617e22765dd941dcea15731 100644 --- a/crates/fs/src/fs.rs +++ b/crates/fs/src/fs.rs @@ -245,7 +245,7 @@ impl Fs for RealFs { #[cfg(unix)] let inode = metadata.ino(); - // todo!(windows) + // todo!("windows") #[cfg(windows)] let inode = 0; diff --git a/crates/gpui/src/platform.rs b/crates/gpui/src/platform.rs index 7e57009af217dd616c7aa8b48d29606fbe77ca77..bbd2e93b4fe03eabf81df517eba7279a004c55f8 100644 --- a/crates/gpui/src/platform.rs +++ b/crates/gpui/src/platform.rs @@ -61,6 +61,10 @@ pub(crate) fn current_platform() -> Rc { pub(crate) fn current_platform() -> Rc { Rc::new(LinuxPlatform::new()) } +#[cfg(target_os = "windows")] +pub(crate) fn current_platform() -> Rc { + todo!("windows") +} pub(crate) trait Platform: 'static { fn background_executor(&self) -> BackgroundExecutor; diff --git a/crates/gpui/src/platform/test/platform.rs b/crates/gpui/src/platform/test/platform.rs index fc73e49afbcc276acded1c0ea0335b60a0f4b8f1..dc4dc13fa1e25b17da9bb0b2f93a5868b95a2d90 100644 --- a/crates/gpui/src/platform/test/platform.rs +++ b/crates/gpui/src/platform/test/platform.rs @@ -125,6 +125,9 @@ impl Platform for TestPlatform { #[cfg(target_os = "macos")] return Arc::new(crate::platform::mac::MacTextSystem::new()); + + #[cfg(target_os = "windows")] + todo!("windows") } fn run(&self, _on_finish_launching: Box) { diff --git a/crates/install_cli/src/install_cli.rs b/crates/install_cli/src/install_cli.rs index e1dff2c52b238583bf7034424ae2e5b7ff8c8210..52a6656b9026c46f3c43e52cfd552fc3ab5f86ee 100644 --- a/crates/install_cli/src/install_cli.rs +++ b/crates/install_cli/src/install_cli.rs @@ -18,12 +18,16 @@ pub async fn install_cli(cx: &AsyncAppContext) -> Result<()> { // If the symlink is not there or is outdated, first try replacing it // without escalating. smol::fs::remove_file(link_path).await.log_err(); - if smol::fs::unix::symlink(&cli_path, link_path) - .await - .log_err() - .is_some() + // todo!("windows") + #[cfg(not(windows))] { - return Ok(()); + if smol::fs::unix::symlink(&cli_path, link_path) + .await + .log_err() + .is_some() + { + return Ok(()); + } } // The symlink could not be created, so use osascript with admin privileges diff --git a/crates/terminal/src/terminal.rs b/crates/terminal/src/terminal.rs index 0e5eeda85129ea849d944bfb439adfa97693dfd9..882db7239169c253c97611aaa0aa867c745cebaa 100644 --- a/crates/terminal/src/terminal.rs +++ b/crates/terminal/src/terminal.rs @@ -396,7 +396,7 @@ impl TerminalBuilder { #[cfg(unix)] let (fd, shell_pid) = (pty.file().as_raw_fd(), pty.child().id()); - // todo!(windows) + // todo!("windows") #[cfg(windows)] let (fd, shell_pid) = (-1, 0); @@ -664,7 +664,7 @@ impl Terminal { fn update_process_info(&mut self) -> bool { #[cfg(unix)] let mut pid = unsafe { libc::tcgetpgrp(self.shell_fd as i32) }; - // todo!(windows) + // todo!("windows") #[cfg(windows)] let mut pid = -1; if pid < 0 { diff --git a/crates/zed/src/languages/csharp.rs b/crates/zed/src/languages/csharp.rs index 475b7573d035aa6298fced3e235a662893944f74..c8d71ecc6e48ad0590deb012c0c756ca99de2cc6 100644 --- a/crates/zed/src/languages/csharp.rs +++ b/crates/zed/src/languages/csharp.rs @@ -81,11 +81,15 @@ impl super::LspAdapter for OmniSharpAdapter { archive.unpack(container_dir).await?; } - fs::set_permissions( - &binary_path, - ::from_mode(0o755), - ) - .await?; + // todo!("windows") + #[cfg(not(windows))] + { + fs::set_permissions( + &binary_path, + ::from_mode(0o755), + ) + .await?; + } Ok(LanguageServerBinary { path: binary_path, arguments: server_binary_arguments(), diff --git a/crates/zed/src/languages/elixir.rs b/crates/zed/src/languages/elixir.rs index 39b9c0a10016a05f58109c5a3edea76e6849bf3f..ed76d9e1ea1fd3556ccb4399c2f07658c7bd8e92 100644 --- a/crates/zed/src/languages/elixir.rs +++ b/crates/zed/src/languages/elixir.rs @@ -356,11 +356,15 @@ impl LspAdapter for NextLspAdapter { } futures::io::copy(response.body_mut(), &mut file).await?; - fs::set_permissions( - &binary_path, - ::from_mode(0o755), - ) - .await?; + // todo!("windows") + #[cfg(not(windows))] + { + fs::set_permissions( + &binary_path, + ::from_mode(0o755), + ) + .await?; + } } Ok(LanguageServerBinary { diff --git a/crates/zed/src/languages/lua.rs b/crates/zed/src/languages/lua.rs index 24cbafb50f7e54f923e17143057e29f904f9d646..95d73f2566291fe6b612f5584209f7456df459e7 100644 --- a/crates/zed/src/languages/lua.rs +++ b/crates/zed/src/languages/lua.rs @@ -83,11 +83,15 @@ impl super::LspAdapter for LuaLspAdapter { archive.unpack(container_dir).await?; } - fs::set_permissions( - &binary_path, - ::from_mode(0o755), - ) - .await?; + // todo!("windows") + #[cfg(not(windows))] + { + fs::set_permissions( + &binary_path, + ::from_mode(0o755), + ) + .await?; + } Ok(LanguageServerBinary { path: binary_path, arguments: Vec::new(), diff --git a/crates/zed/src/languages/rust.rs b/crates/zed/src/languages/rust.rs index 8bcda939497eac14168aef6e2f59078fcbbe7302..b5a1bdbde0e57c2791e637dd71544722db81fd75 100644 --- a/crates/zed/src/languages/rust.rs +++ b/crates/zed/src/languages/rust.rs @@ -74,11 +74,15 @@ impl LspAdapter for RustLspAdapter { let decompressed_bytes = GzipDecoder::new(BufReader::new(response.body_mut())); let mut file = File::create(&destination_path).await?; futures::io::copy(decompressed_bytes, &mut file).await?; - fs::set_permissions( - &destination_path, - ::from_mode(0o755), - ) - .await?; + // todo!("windows") + #[cfg(not(windows))] + { + fs::set_permissions( + &destination_path, + ::from_mode(0o755), + ) + .await?; + } remove_matching(&container_dir, |entry| entry != destination_path).await; } diff --git a/crates/zed/src/languages/toml.rs b/crates/zed/src/languages/toml.rs index e6f933d707a6247eae84aeede9717287e7f48aad..c426990f0d97f344880cd2f67106d29328fe206e 100644 --- a/crates/zed/src/languages/toml.rs +++ b/crates/zed/src/languages/toml.rs @@ -72,11 +72,15 @@ impl LspAdapter for TaploLspAdapter { futures::io::copy(decompressed_bytes, &mut file).await?; - fs::set_permissions( - &binary_path, - ::from_mode(0o755), - ) - .await?; + // todo!("windows") + #[cfg(not(windows))] + { + fs::set_permissions( + &binary_path, + ::from_mode(0o755), + ) + .await?; + } } Ok(LanguageServerBinary { diff --git a/crates/zed/src/languages/zig.rs b/crates/zed/src/languages/zig.rs index 6c12f129c51816d59b6fb132f2441add8103937e..ee626d4b81392367f526fad8027b2700926dbf65 100644 --- a/crates/zed/src/languages/zig.rs +++ b/crates/zed/src/languages/zig.rs @@ -64,11 +64,15 @@ impl LspAdapter for ZlsAdapter { archive.unpack(container_dir).await?; } - fs::set_permissions( - &binary_path, - ::from_mode(0o755), - ) - .await?; + // todo!("windows") + #[cfg(not(windows))] + { + fs::set_permissions( + &binary_path, + ::from_mode(0o755), + ) + .await?; + } Ok(LanguageServerBinary { path: binary_path, arguments: vec![],