Skip to content

feat: proper DCD based on PLL transition quality (from Direwolf) #149

feat: proper DCD based on PLL transition quality (from Direwolf)

feat: proper DCD based on PLL transition quality (from Direwolf) #149

Workflow file for this run

name: CI
on:
push:
branches: [ "**" ]
pull_request:
branches: [ main ]
env:
FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: true
jobs:
# ── Core build + tests ─────────────────────────────────────────────────────
# Builds bbs / ax25kiss / ax25tnc and runs the full test suite.
build-and-test:
strategy:
fail-fast: false
matrix:
include:
- os: ubuntu-latest
name: Ubuntu GCC
- os: macos-latest
name: macOS Clang
name: ${{ matrix.name }}
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v4
# ── Linux deps ─────────────────────────────────────────────────────────
- name: Install dependencies (Ubuntu)
if: runner.os == 'Linux'
run: |
sudo apt-get update -qq
sudo apt-get install -y libgtest-dev libsqlite3-dev libasound2-dev \
libdbus-1-dev libbluetooth-dev pkg-config cmake
# Ubuntu ships GoogleTest as source-only; build and install the .a files.
GTEST_SRC=$(ls -d /usr/src/googletest /usr/src/gtest 2>/dev/null | head -1)
echo "Building GoogleTest from: $GTEST_SRC"
cd "$GTEST_SRC"
sudo cmake -B build -DCMAKE_BUILD_TYPE=Release
sudo cmake --build build
# Ubuntu 22.04+ puts libs under build/lib; older under build/
sudo find build -name 'libgtest*.a' -exec cp {} /usr/lib/ \;
# ── macOS deps ─────────────────────────────────────────────────────────
- name: Install dependencies (macOS)
if: runner.os == 'macOS'
run: brew install googletest sqlite
# ── Build core (no BLE) ────────────────────────────────────────────────
- name: Build core apps
run: make bbs ax25kiss ax25tnc ax25sim ax25send
# ── Build modemtnc ────────────────────────────────────────────────────
- name: Build modemtnc
run: make modemtnc
# ── Modemtnc loopback self-test ────────────────────────────────────────
- name: modemtnc loopback (1200 baud)
run: ./bin/modemtnc --loopback -s 1200 -c CI | grep -q "PASS"
- name: modemtnc loopback (300 baud)
run: ./bin/modemtnc --loopback -s 300 -c CI | grep -q "PASS"
- name: modemtnc loopback (9600 baud)
run: ./bin/modemtnc --loopback -s 9600 -c CI | grep -q "PASS"
# ── Test suite ─────────────────────────────────────────────────────────
- name: Run tests
run: make test
# ── BT bridge (macOS only, non-blocking) ──────────────────────────────────
# Verifies that bt_kiss_bridge still compiles. Runs on macOS because it has
# CoreBluetooth + IOBluetooth out of the box (no extra deps needed).
# Failures here are reported but do NOT block merges.
build-bt-bridge:
name: BT bridge (macOS, optional)
runs-on: macos-latest
continue-on-error: true
steps:
- uses: actions/checkout@v4
- name: Build bt_kiss_bridge
run: make bt_kiss_bridge
- name: Create ble_kiss_bridge symlink
run: ln -sf bt_kiss_bridge ble_kiss_bridge && ls -la ble_kiss_bridge