fix: isolate macos-specific dependencies (#6854)

Amin Yahyaabadi created

Release Notes:
- N/A

Change summary

Cargo.lock                        |  3 ---
crates/fsevent/Cargo.toml         |  4 +++-
crates/fsevent/examples/events.rs | 13 ++++++++++---
crates/live_kit_client/Cargo.toml |  9 +++------
crates/live_kit_client/build.rs   |  5 ++++-
crates/media/Cargo.toml           |  6 ++++--
6 files changed, 24 insertions(+), 16 deletions(-)

Detailed changes

Cargo.lock 🔗

@@ -3984,10 +3984,8 @@ dependencies = [
  "block",
  "byteorder",
  "bytes 1.5.0",
- "cocoa",
  "collections",
  "core-foundation",
- "core-graphics 0.22.3",
  "foreign-types 0.3.2",
  "futures 0.3.28",
  "gpui",
@@ -3997,7 +3995,6 @@ dependencies = [
  "log",
  "media",
  "nanoid",
- "objc",
  "parking_lot 0.11.2",
  "postage",
  "serde",

crates/fsevent/Cargo.toml 🔗

@@ -12,9 +12,11 @@ doctest = false
 
 [dependencies]
 bitflags = "1"
-fsevent-sys = "3.0.2"
 parking_lot.workspace = true
 
+[target.'cfg(target_os = "macos")'.dependencies]
+fsevent-sys = "3.0.2"
+
 [dev-dependencies]
 tempfile.workspace = true
 

crates/fsevent/examples/events.rs 🔗

@@ -1,10 +1,12 @@
-use fsevent::EventStream;
-use std::{env::args, path::Path, time::Duration};
-
+#[cfg(target_os = "macos")]
 fn main() {
+    use fsevent::EventStream;
+    use std::{env::args, path::Path, time::Duration};
+
     let paths = args().skip(1).collect::<Vec<_>>();
     let paths = paths.iter().map(Path::new).collect::<Vec<_>>();
     assert!(!paths.is_empty(), "Must pass 1 or more paths as arguments");
+
     let (stream, _handle) = EventStream::new(&paths, Duration::from_millis(100));
     stream.run(|events| {
         eprintln!("event batch");
@@ -14,3 +16,8 @@ fn main() {
         true
     });
 }
+
+#[cfg(not(target_os = "macos"))]
+fn main() {
+    eprintln!("This example only works on macOS");
+}

crates/live_kit_client/Cargo.toml 🔗

@@ -31,8 +31,6 @@ media = { path = "../media" }
 
 anyhow.workspace = true
 async-broadcast = "0.4"
-core-foundation = "0.9.3"
-core-graphics = "0.22.3"
 futures.workspace = true
 log.workspace = true
 parking_lot.workspace = true
@@ -41,6 +39,9 @@ postage.workspace = true
 async-trait = { workspace = true, optional = true }
 nanoid = { version ="0.4", optional = true}
 
+[target.'cfg(target_os = "macos")'.dependencies]
+core-foundation = "0.9.3"
+
 [dev-dependencies]
 collections = { path = "../collections", features = ["test-support"] }
 gpui = { path = "../gpui", features = ["test-support"] }
@@ -53,14 +54,10 @@ async-trait.workspace = true
 block = "0.1"
 bytes = "1.2"
 byteorder = "1.4"
-cocoa = "0.25"
-core-foundation = "0.9.3"
-core-graphics = "0.22.3"
 foreign-types = "0.3"
 futures.workspace = true
 hmac = "0.12"
 jwt = "0.16"
-objc = "0.2"
 parking_lot.workspace = true
 serde.workspace = true
 serde_derive.workspace = true

crates/live_kit_client/build.rs 🔗

@@ -35,7 +35,10 @@ pub struct SwiftTarget {
 const MACOS_TARGET_VERSION: &str = "10.15.7";
 
 fn main() {
-    if cfg!(not(any(test, feature = "test-support"))) {
+    if cfg!(all(
+        target_os = "macos",
+        not(any(test, feature = "test-support"))
+    )) {
         let swift_target = get_swift_target();
 
         build_bridge(&swift_target);

crates/media/Cargo.toml 🔗

@@ -14,10 +14,12 @@ doctest = false
 anyhow.workspace = true
 block = "0.1"
 bytes = "1.2"
-core-foundation = "0.9.3"
 foreign-types = "0.3"
-metal = "0.21.0"
+
+[target.'cfg(target_os = "macos")'.dependencies]
+core-foundation = "0.9.3"
 objc = "0.2"
+metal = "0.21.0"
 
 [build-dependencies]
 bindgen = "0.65.1"