Skip to content

Commit fe01bbd

Browse files
authored
Merge pull request #38 from second-state/fix/deprecation-warnings-and-aarch64-build
Fix deprecation warnings and add aarch64 build support
2 parents 82cf1bc + b1cb211 commit fe01bbd

5 files changed

Lines changed: 58 additions & 0 deletions

File tree

.cargo/config.toml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
[target.aarch64-unknown-linux-gnu]
2+
rustflags = ["-C", "target-feature=+fp16"]

.github/workflows/rust_ci.yml

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,3 +41,47 @@ jobs:
4141

4242
- name: Build binary
4343
run: cargo build --release
44+
45+
build-aarch64:
46+
name: Build (aarch64)
47+
runs-on: ubuntu-latest
48+
container:
49+
image: debian:bookworm-slim
50+
steps:
51+
- name: Install base dependencies
52+
shell: bash
53+
run: |
54+
set -euo pipefail
55+
export DEBIAN_FRONTEND=noninteractive
56+
dpkg --add-architecture arm64
57+
apt-get update
58+
apt-get install -y --no-install-recommends \
59+
ca-certificates \
60+
pkg-config \
61+
libssl-dev \
62+
libssl-dev:arm64 \
63+
gcc-aarch64-linux-gnu \
64+
libc6-dev-arm64-cross \
65+
build-essential \
66+
git \
67+
curl \
68+
unzip \
69+
cmake
70+
71+
- name: Check out repository
72+
uses: actions/checkout@v4
73+
74+
- name: Set up Rust toolchain
75+
uses: dtolnay/rust-toolchain@stable
76+
77+
- name: Add Rust target
78+
run: rustup target add aarch64-unknown-linux-gnu
79+
80+
- name: Build binary
81+
env:
82+
CC_aarch64_unknown_linux_gnu: aarch64-linux-gnu-gcc
83+
AR_aarch64_unknown_linux_gnu: aarch64-linux-gnu-ar
84+
CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_LINKER: aarch64-linux-gnu-gcc
85+
PKG_CONFIG_ALLOW_CROSS: "1"
86+
PKG_CONFIG_PATH: /usr/lib/aarch64-linux-gnu/pkgconfig
87+
run: cargo build --release --target aarch64-unknown-linux-gnu

README.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,12 @@ Edit `config.toml` to customize the VAD, ASR, LLM, TTS services, as well as prom
5959
cargo build --release
6060
```
6161

62+
**Note for aarch64 (ARM64) builds:** When cross-compiling for aarch64, the required `fp16` target feature is automatically enabled via `.cargo/config.toml`. If building natively on aarch64, you may need to set:
63+
64+
```
65+
RUSTFLAGS="-C target-feature=+fp16" cargo build --release
66+
```
67+
6268
### Configure AI services
6369

6470
The `config.toml` can use any combination of open-source or proprietary AI services, as long as they offer OpenAI-compatible API endpoints. Here are instructions to start open source AI servers for the EchoKit server.

src/main.rs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ use axum::{
77
use clap::Parser;
88
use config::Config;
99

10+
#[allow(deprecated)]
1011
use crate::{config::ASRConfig, services::realtime_ws::StableRealtimeConfig};
1112

1213
pub mod ai;
@@ -55,9 +56,11 @@ async fn routes(
5556
});
5657

5758
let mut tool_set = ai::openai::tool::ToolSet::default();
59+
#[allow(deprecated)]
5860
let mut real_config: Option<StableRealtimeConfig> = None;
5961

6062
// todo: support other configs
63+
#[allow(deprecated)]
6164
match &config.config {
6265
config::AIConfig::Stable {
6366
llm: config::LLMConfig::OpenAIChat(chat_llm),
@@ -173,6 +176,7 @@ async fn routes(
173176
)))
174177
.layer(axum::Extension(record_config.clone()));
175178

179+
#[allow(deprecated)]
176180
if let Some(real_config) = real_config {
177181
log::info!(
178182
"Adding realtime WebSocket handler with config: {:?}",

src/services/realtime_ws.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
#![allow(deprecated)]
2+
13
use axum::{
24
extract::{Extension, WebSocketUpgrade, ws::WebSocket},
35
response::IntoResponse,

0 commit comments

Comments
 (0)