mirror of
https://github.com/zed-industries/zed.git
synced 2024-09-19 02:17:35 +03:00
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
This commit is contained in:
parent
48f0f387f8
commit
c97ecc7326
30
.github/workflows/ci.yml
vendored
30
.github/workflows/ci.yml
vendored
@ -126,6 +126,36 @@ jobs:
|
|||||||
|
|
||||||
- name: Build Zed
|
- name: Build Zed
|
||||||
run: cargo build -p 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:
|
bundle:
|
||||||
name: Bundle macOS app
|
name: Bundle macOS app
|
||||||
runs-on:
|
runs-on:
|
||||||
|
@ -245,7 +245,7 @@ impl Fs for RealFs {
|
|||||||
#[cfg(unix)]
|
#[cfg(unix)]
|
||||||
let inode = metadata.ino();
|
let inode = metadata.ino();
|
||||||
|
|
||||||
// todo!(windows)
|
// todo!("windows")
|
||||||
#[cfg(windows)]
|
#[cfg(windows)]
|
||||||
let inode = 0;
|
let inode = 0;
|
||||||
|
|
||||||
|
@ -61,6 +61,10 @@ pub(crate) fn current_platform() -> Rc<dyn Platform> {
|
|||||||
pub(crate) fn current_platform() -> Rc<dyn Platform> {
|
pub(crate) fn current_platform() -> Rc<dyn Platform> {
|
||||||
Rc::new(LinuxPlatform::new())
|
Rc::new(LinuxPlatform::new())
|
||||||
}
|
}
|
||||||
|
#[cfg(target_os = "windows")]
|
||||||
|
pub(crate) fn current_platform() -> Rc<dyn Platform> {
|
||||||
|
todo!("windows")
|
||||||
|
}
|
||||||
|
|
||||||
pub(crate) trait Platform: 'static {
|
pub(crate) trait Platform: 'static {
|
||||||
fn background_executor(&self) -> BackgroundExecutor;
|
fn background_executor(&self) -> BackgroundExecutor;
|
||||||
|
@ -125,6 +125,9 @@ impl Platform for TestPlatform {
|
|||||||
|
|
||||||
#[cfg(target_os = "macos")]
|
#[cfg(target_os = "macos")]
|
||||||
return Arc::new(crate::platform::mac::MacTextSystem::new());
|
return Arc::new(crate::platform::mac::MacTextSystem::new());
|
||||||
|
|
||||||
|
#[cfg(target_os = "windows")]
|
||||||
|
todo!("windows")
|
||||||
}
|
}
|
||||||
|
|
||||||
fn run(&self, _on_finish_launching: Box<dyn FnOnce()>) {
|
fn run(&self, _on_finish_launching: Box<dyn FnOnce()>) {
|
||||||
|
@ -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
|
// If the symlink is not there or is outdated, first try replacing it
|
||||||
// without escalating.
|
// without escalating.
|
||||||
smol::fs::remove_file(link_path).await.log_err();
|
smol::fs::remove_file(link_path).await.log_err();
|
||||||
if smol::fs::unix::symlink(&cli_path, link_path)
|
// todo!("windows")
|
||||||
.await
|
#[cfg(not(windows))]
|
||||||
.log_err()
|
|
||||||
.is_some()
|
|
||||||
{
|
{
|
||||||
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
|
// The symlink could not be created, so use osascript with admin privileges
|
||||||
|
@ -396,7 +396,7 @@ impl TerminalBuilder {
|
|||||||
#[cfg(unix)]
|
#[cfg(unix)]
|
||||||
let (fd, shell_pid) = (pty.file().as_raw_fd(), pty.child().id());
|
let (fd, shell_pid) = (pty.file().as_raw_fd(), pty.child().id());
|
||||||
|
|
||||||
// todo!(windows)
|
// todo!("windows")
|
||||||
#[cfg(windows)]
|
#[cfg(windows)]
|
||||||
let (fd, shell_pid) = (-1, 0);
|
let (fd, shell_pid) = (-1, 0);
|
||||||
|
|
||||||
@ -664,7 +664,7 @@ impl Terminal {
|
|||||||
fn update_process_info(&mut self) -> bool {
|
fn update_process_info(&mut self) -> bool {
|
||||||
#[cfg(unix)]
|
#[cfg(unix)]
|
||||||
let mut pid = unsafe { libc::tcgetpgrp(self.shell_fd as i32) };
|
let mut pid = unsafe { libc::tcgetpgrp(self.shell_fd as i32) };
|
||||||
// todo!(windows)
|
// todo!("windows")
|
||||||
#[cfg(windows)]
|
#[cfg(windows)]
|
||||||
let mut pid = -1;
|
let mut pid = -1;
|
||||||
if pid < 0 {
|
if pid < 0 {
|
||||||
|
@ -81,11 +81,15 @@ impl super::LspAdapter for OmniSharpAdapter {
|
|||||||
archive.unpack(container_dir).await?;
|
archive.unpack(container_dir).await?;
|
||||||
}
|
}
|
||||||
|
|
||||||
fs::set_permissions(
|
// todo!("windows")
|
||||||
&binary_path,
|
#[cfg(not(windows))]
|
||||||
<fs::Permissions as fs::unix::PermissionsExt>::from_mode(0o755),
|
{
|
||||||
)
|
fs::set_permissions(
|
||||||
.await?;
|
&binary_path,
|
||||||
|
<fs::Permissions as fs::unix::PermissionsExt>::from_mode(0o755),
|
||||||
|
)
|
||||||
|
.await?;
|
||||||
|
}
|
||||||
Ok(LanguageServerBinary {
|
Ok(LanguageServerBinary {
|
||||||
path: binary_path,
|
path: binary_path,
|
||||||
arguments: server_binary_arguments(),
|
arguments: server_binary_arguments(),
|
||||||
|
@ -356,11 +356,15 @@ impl LspAdapter for NextLspAdapter {
|
|||||||
}
|
}
|
||||||
futures::io::copy(response.body_mut(), &mut file).await?;
|
futures::io::copy(response.body_mut(), &mut file).await?;
|
||||||
|
|
||||||
fs::set_permissions(
|
// todo!("windows")
|
||||||
&binary_path,
|
#[cfg(not(windows))]
|
||||||
<fs::Permissions as fs::unix::PermissionsExt>::from_mode(0o755),
|
{
|
||||||
)
|
fs::set_permissions(
|
||||||
.await?;
|
&binary_path,
|
||||||
|
<fs::Permissions as fs::unix::PermissionsExt>::from_mode(0o755),
|
||||||
|
)
|
||||||
|
.await?;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Ok(LanguageServerBinary {
|
Ok(LanguageServerBinary {
|
||||||
|
@ -83,11 +83,15 @@ impl super::LspAdapter for LuaLspAdapter {
|
|||||||
archive.unpack(container_dir).await?;
|
archive.unpack(container_dir).await?;
|
||||||
}
|
}
|
||||||
|
|
||||||
fs::set_permissions(
|
// todo!("windows")
|
||||||
&binary_path,
|
#[cfg(not(windows))]
|
||||||
<fs::Permissions as fs::unix::PermissionsExt>::from_mode(0o755),
|
{
|
||||||
)
|
fs::set_permissions(
|
||||||
.await?;
|
&binary_path,
|
||||||
|
<fs::Permissions as fs::unix::PermissionsExt>::from_mode(0o755),
|
||||||
|
)
|
||||||
|
.await?;
|
||||||
|
}
|
||||||
Ok(LanguageServerBinary {
|
Ok(LanguageServerBinary {
|
||||||
path: binary_path,
|
path: binary_path,
|
||||||
arguments: Vec::new(),
|
arguments: Vec::new(),
|
||||||
|
@ -74,11 +74,15 @@ impl LspAdapter for RustLspAdapter {
|
|||||||
let decompressed_bytes = GzipDecoder::new(BufReader::new(response.body_mut()));
|
let decompressed_bytes = GzipDecoder::new(BufReader::new(response.body_mut()));
|
||||||
let mut file = File::create(&destination_path).await?;
|
let mut file = File::create(&destination_path).await?;
|
||||||
futures::io::copy(decompressed_bytes, &mut file).await?;
|
futures::io::copy(decompressed_bytes, &mut file).await?;
|
||||||
fs::set_permissions(
|
// todo!("windows")
|
||||||
&destination_path,
|
#[cfg(not(windows))]
|
||||||
<fs::Permissions as fs::unix::PermissionsExt>::from_mode(0o755),
|
{
|
||||||
)
|
fs::set_permissions(
|
||||||
.await?;
|
&destination_path,
|
||||||
|
<fs::Permissions as fs::unix::PermissionsExt>::from_mode(0o755),
|
||||||
|
)
|
||||||
|
.await?;
|
||||||
|
}
|
||||||
|
|
||||||
remove_matching(&container_dir, |entry| entry != destination_path).await;
|
remove_matching(&container_dir, |entry| entry != destination_path).await;
|
||||||
}
|
}
|
||||||
|
@ -72,11 +72,15 @@ impl LspAdapter for TaploLspAdapter {
|
|||||||
|
|
||||||
futures::io::copy(decompressed_bytes, &mut file).await?;
|
futures::io::copy(decompressed_bytes, &mut file).await?;
|
||||||
|
|
||||||
fs::set_permissions(
|
// todo!("windows")
|
||||||
&binary_path,
|
#[cfg(not(windows))]
|
||||||
<fs::Permissions as fs::unix::PermissionsExt>::from_mode(0o755),
|
{
|
||||||
)
|
fs::set_permissions(
|
||||||
.await?;
|
&binary_path,
|
||||||
|
<fs::Permissions as fs::unix::PermissionsExt>::from_mode(0o755),
|
||||||
|
)
|
||||||
|
.await?;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Ok(LanguageServerBinary {
|
Ok(LanguageServerBinary {
|
||||||
|
@ -64,11 +64,15 @@ impl LspAdapter for ZlsAdapter {
|
|||||||
archive.unpack(container_dir).await?;
|
archive.unpack(container_dir).await?;
|
||||||
}
|
}
|
||||||
|
|
||||||
fs::set_permissions(
|
// todo!("windows")
|
||||||
&binary_path,
|
#[cfg(not(windows))]
|
||||||
<fs::Permissions as fs::unix::PermissionsExt>::from_mode(0o755),
|
{
|
||||||
)
|
fs::set_permissions(
|
||||||
.await?;
|
&binary_path,
|
||||||
|
<fs::Permissions as fs::unix::PermissionsExt>::from_mode(0o755),
|
||||||
|
)
|
||||||
|
.await?;
|
||||||
|
}
|
||||||
Ok(LanguageServerBinary {
|
Ok(LanguageServerBinary {
|
||||||
path: binary_path,
|
path: binary_path,
|
||||||
arguments: vec![],
|
arguments: vec![],
|
||||||
|
Loading…
Reference in New Issue
Block a user