fix: make cpal/ALSA optional — headless Linux builds work without libasound
- cpal is now behind an 'audio' feature flag (off by default) - --live mode requires --features audio at build time - --send-tone and --record work on headless servers without audio libs - Linux build script no longer installs libasound2-dev Build for headless: cargo build --release Build with mic/speakers: cargo build --release --features audio Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -18,7 +18,11 @@ tracing-subscriber = { workspace = true }
|
|||||||
async-trait = { workspace = true }
|
async-trait = { workspace = true }
|
||||||
bytes = { workspace = true }
|
bytes = { workspace = true }
|
||||||
anyhow = "1"
|
anyhow = "1"
|
||||||
cpal = "0.15"
|
cpal = { version = "0.15", optional = true }
|
||||||
|
|
||||||
|
[features]
|
||||||
|
default = []
|
||||||
|
audio = ["cpal"]
|
||||||
|
|
||||||
[[bin]]
|
[[bin]]
|
||||||
name = "wzp-client"
|
name = "wzp-client"
|
||||||
|
|||||||
@@ -134,7 +134,14 @@ async fn main() -> anyhow::Result<()> {
|
|||||||
let transport = Arc::new(wzp_transport::QuinnTransport::new(connection));
|
let transport = Arc::new(wzp_transport::QuinnTransport::new(connection));
|
||||||
|
|
||||||
if cli.live {
|
if cli.live {
|
||||||
run_live(transport).await
|
#[cfg(feature = "audio")]
|
||||||
|
{
|
||||||
|
return run_live(transport).await;
|
||||||
|
}
|
||||||
|
#[cfg(not(feature = "audio"))]
|
||||||
|
{
|
||||||
|
anyhow::bail!("--live requires the 'audio' feature (build with: cargo build --features audio)");
|
||||||
|
}
|
||||||
} else if cli.send_tone_secs.is_some() || cli.record_file.is_some() {
|
} else if cli.send_tone_secs.is_some() || cli.record_file.is_some() {
|
||||||
run_file_mode(transport, cli.send_tone_secs, cli.record_file).await
|
run_file_mode(transport, cli.send_tone_secs, cli.record_file).await
|
||||||
} else {
|
} else {
|
||||||
@@ -326,6 +333,7 @@ async fn run_file_mode(
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// Live mode: capture from mic, encode, send; receive, decode, play.
|
/// Live mode: capture from mic, encode, send; receive, decode, play.
|
||||||
|
#[cfg(feature = "audio")]
|
||||||
async fn run_live(transport: Arc<wzp_transport::QuinnTransport>) -> anyhow::Result<()> {
|
async fn run_live(transport: Arc<wzp_transport::QuinnTransport>) -> anyhow::Result<()> {
|
||||||
use wzp_client::audio_io::{AudioCapture, AudioPlayback};
|
use wzp_client::audio_io::{AudioCapture, AudioPlayback};
|
||||||
|
|
||||||
|
|||||||
@@ -6,11 +6,13 @@
|
|||||||
//!
|
//!
|
||||||
//! Targets: Android (JNI), Windows desktop, macOS/Linux (testing)
|
//! Targets: Android (JNI), Windows desktop, macOS/Linux (testing)
|
||||||
|
|
||||||
|
#[cfg(feature = "audio")]
|
||||||
pub mod audio_io;
|
pub mod audio_io;
|
||||||
pub mod bench;
|
pub mod bench;
|
||||||
pub mod call;
|
pub mod call;
|
||||||
pub mod handshake;
|
pub mod handshake;
|
||||||
|
|
||||||
|
#[cfg(feature = "audio")]
|
||||||
pub use audio_io::{AudioCapture, AudioPlayback};
|
pub use audio_io::{AudioCapture, AudioPlayback};
|
||||||
pub use call::{CallConfig, CallDecoder, CallEncoder};
|
pub use call::{CallConfig, CallDecoder, CallEncoder};
|
||||||
pub use handshake::perform_handshake;
|
pub use handshake::perform_handshake;
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ set -euo pipefail
|
|||||||
SSH_KEY_NAME="wz"
|
SSH_KEY_NAME="wz"
|
||||||
SSH_KEY_PATH="/Users/manwe/CascadeProjects/wzp"
|
SSH_KEY_PATH="/Users/manwe/CascadeProjects/wzp"
|
||||||
SERVER_NAME="wzp-builder-$(date +%s)"
|
SERVER_NAME="wzp-builder-$(date +%s)"
|
||||||
SERVER_TYPE="cx23"
|
SERVER_TYPE="cx33"
|
||||||
IMAGE="ubuntu-24.04"
|
IMAGE="ubuntu-24.04"
|
||||||
REMOTE_USER="root"
|
REMOTE_USER="root"
|
||||||
OUTPUT_DIR="target/linux-x86_64"
|
OUTPUT_DIR="target/linux-x86_64"
|
||||||
@@ -56,7 +56,7 @@ done
|
|||||||
|
|
||||||
# 3. Install build dependencies
|
# 3. Install build dependencies
|
||||||
echo "[3/7] Installing build dependencies..."
|
echo "[3/7] Installing build dependencies..."
|
||||||
$SSH "apt-get update -qq && apt-get install -y -qq build-essential cmake pkg-config libasound2-dev curl git > /dev/null 2>&1"
|
$SSH "apt-get update -qq && apt-get install -y -qq build-essential cmake pkg-config curl git > /dev/null 2>&1"
|
||||||
|
|
||||||
# 4. Install Rust
|
# 4. Install Rust
|
||||||
echo "[4/7] Installing Rust..."
|
echo "[4/7] Installing Rust..."
|
||||||
|
|||||||
Reference in New Issue
Block a user