Build media and live-kit in test-mode on non-MacOS (#6859)

Build media and live-kit in test-mode on non-MacOS (Related to
https://github.com/zed-industries/zed/issues/5391
https://github.com/zed-industries/zed/issues/5395
https://github.com/zed-industries/zed/issues/5394)

This makes it possible to build the media and live-kit crates on
non-MacOS

Release Notes:

- N/A
This commit is contained in:
Amin Yahyaabadi 2024-01-29 18:04:15 -08:00 committed by GitHub
parent e69e6f5586
commit 2c834c24a3
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
8 changed files with 68 additions and 6 deletions

View file

@ -42,6 +42,12 @@ nanoid = { version ="0.4", optional = true}
[target.'cfg(target_os = "macos")'.dependencies]
core-foundation = "0.9.3"
[target.'cfg(not(target_os = "macos"))'.dependencies]
async-trait = { workspace = true }
collections = { path = "../collections", features = ["test-support"] }
gpui = { path = "../gpui", features = ["test-support"] }
live_kit_server = { path = "../live_kit_server" }
[dev-dependencies]
collections = { path = "../collections", features = ["test-support"] }
gpui = { path = "../gpui", features = ["test-support"] }

View file

@ -1,15 +1,15 @@
use std::sync::Arc;
#[cfg(not(any(test, feature = "test-support")))]
#[cfg(all(target_os = "macos", not(any(test, feature = "test-support"))))]
pub mod prod;
#[cfg(not(any(test, feature = "test-support")))]
#[cfg(all(target_os = "macos", not(any(test, feature = "test-support"))))]
pub use prod::*;
#[cfg(any(test, feature = "test-support"))]
#[cfg(any(test, feature = "test-support", not(target_os = "macos")))]
pub mod test;
#[cfg(any(test, feature = "test-support"))]
#[cfg(any(test, feature = "test-support", not(target_os = "macos")))]
pub use test::*;
pub type Sid = String;

View file

@ -5,6 +5,7 @@ use collections::{BTreeMap, HashMap, HashSet};
use futures::Stream;
use gpui::BackgroundExecutor;
use live_kit_server::{proto, token};
#[cfg(target_os = "macos")]
use media::core_video::CVImageBuffer;
use parking_lot::Mutex;
use postage::watch;
@ -845,6 +846,7 @@ impl Frame {
self.height
}
#[cfg(target_os = "macos")]
pub fn image(&self) -> CVImageBuffer {
unimplemented!("you can't call this in test mode")
}

View file

@ -1,6 +1,7 @@
use std::{env, path::PathBuf, process::Command};
#[cfg(target_os = "macos")]
fn main() {
use std::{env, path::PathBuf, process::Command};
let sdk_path = String::from_utf8(
Command::new("xcrun")
.args(["--sdk", "macosx", "--show-sdk-path"])
@ -37,3 +38,6 @@ fn main() {
.write_to_file(out_path.join("bindings.rs"))
.expect("couldn't write dispatch bindings");
}
#[cfg(not(target_os = "macos"))]
fn main() {}

View file

@ -3,6 +3,8 @@
#![allow(non_snake_case)]
#![allow(unused)]
#[cfg(target_os = "macos")]
use objc::*;
#[cfg(target_os = "macos")]
include!(concat!(env!("OUT_DIR"), "/bindings.rs"));

View file

@ -3,12 +3,14 @@
mod bindings;
#[cfg(target_os = "macos")]
use core_foundation::{
base::{CFTypeID, TCFType},
declare_TCFType, impl_CFTypeDescription, impl_TCFType,
};
use std::ffi::c_void;
#[cfg(target_os = "macos")]
pub mod io_surface {
use super::*;
@ -27,6 +29,7 @@ pub mod io_surface {
}
}
#[cfg(target_os = "macos")]
pub mod core_video {
#![allow(non_snake_case)]
@ -206,6 +209,7 @@ pub mod core_video {
}
}
#[cfg(target_os = "macos")]
pub mod core_media {
#![allow(non_snake_case)]
@ -413,6 +417,7 @@ pub mod core_media {
}
}
#[cfg(target_os = "macos")]
pub mod video_toolbox {
#![allow(non_snake_case)]

View file

@ -11,3 +11,6 @@ echo "migrating database..."
echo "seeding database..."
script/seed-db
echo "Linux dependencies..."
script/linux

40
script/linux Executable file
View file

@ -0,0 +1,40 @@
#!/usr/bin/env bash
# if not on Linux, do nothing
[[ $(uname) == "Linux" ]] || exit 0
# if sudo is not installed, define an empty alias
maysudo=$(command -v sudo || true)
export maysudo
# Ubuntu, Debian, etc.
apt=$(command -v apt-get || true)
deps=(
libasound2-dev
)
if [[ -n $apt ]]; then
$maysudo "$apt" install -y "${deps[@]}"
exit 0
fi
# Fedora, CentOS, RHEL, etc.
dnf=$(command -v dnf || true)
deps=(
alsa-lib-devel
)
if [[ -n $dnf ]]; then
$maysudo "$dnf" install -y "${deps[@]}"
exit 0
fi
# Arch, Manjaro, etc.
pacman=$(command -v pacman || true)
deps=(
alsa-lib
)
if [[ -n $pacman ]]; then
$maysudo "$pacman" -S --noconfirm "${deps[@]}"
exit 0
fi
echo "Unsupported Linux distribution in script/linux"