Skip to content

Check system libraries build with CI/CD#4256

Open
dawkagaming wants to merge 1 commit into
aethersdr:mainfrom
dawkagaming:system-libs-ci
Open

Check system libraries build with CI/CD#4256
dawkagaming wants to merge 1 commit into
aethersdr:mainfrom
dawkagaming:system-libs-ci

Conversation

@dawkagaming

Copy link
Copy Markdown
Contributor

Hello,

I am a CI job to check whenever the usage of system libraries break the compilation, it might get useful when doing some bigger changes with dependencies.

Thanks,
Dawid Kulas
SP9SKA

@dawkagaming
dawkagaming requested a review from a team as a code owner July 15, 2026 11:01
@aethersdr-agent

Copy link
Copy Markdown
Contributor

Hi @dawkagaming — thanks for putting this together! Adding a dedicated check-system-libs-linux job to guard the USE_SYSTEM_* build paths is genuinely useful, so it's worth getting this green. 🙂

What failed

CI failed on the new job this PR adds (check-system-libs-linux), at its very first step — Install main dependencies. Because that step errored, every later step (Install system library replacements, Checkout, Configure, Build) was skipped, so none of your actual CMake/rtmidi wiring was even exercised yet. In other words: this isn't a compile error in the code — it's the workflow YAML in .github/workflows/ci.yml that needs a fix.

Why the dependency step fails

On GitHub-hosted ubuntu-latest runners, apt has to run as root via sudo, and the package index isn't guaranteed to be fresh. The current step:

- name: Install main dependencies
  run: apt -U install -y \
    cmake \
    ...

has two problems:

  1. No sudoapt can't acquire the dpkg lock and bails out with a permission error before installing anything.
  2. apt -U install-U isn't a valid apt option, and there's no apt update first, so the index can be stale.

Suggested fix

Update the index once, then install with sudo. A run: | block also sidesteps the line-continuation issues below:

- name: Install main dependencies
  run: |
    sudo apt-get update
    sudo apt-get install -y \
      cmake pkgconf \
      qt6-base-dev qt6-multimedia-dev qt6-serialbus-dev qt6-websockets-dev \
      qtkeychain-qt6-dev libfftw3-dev libopus-dev qt6-shadertools-dev \
      qt6-base-private-dev libhidapi-dev libonnxruntime-dev libpipewire-0.3-dev

- name: Install system library replacements
  run: |
    sudo apt-get install -y \
      libmspack-dev librtmidi-dev libasound2-dev zlib1g-dev \
      libmosquitto-dev libliquid-dev

Two things you'll hit right after (once the install is fixed)

Since Configure/Build were skipped, CI hasn't reached them — but a couple of spots in the diff will bite next:

  • Trailing space after a \ line-continuation in the Configure step (run: cmake . \ — note the space after the backslash). A backslash only continues a line when it's the last character, so this breaks the continuation. Using a run: | block (as above) avoids the whole class of problem.
  • run: make -C . — the tree uses an out-of-source build elsewhere in this workflow. Prefer cmake --build . (or cmake -B build + cmake --build build) to match the rest of ci.yml and stay generator-agnostic.

None of this touches your rtmidi change itself — it's all in the new job definition, so it should be a quick turnaround. Once Install main dependencies succeeds, we'll finally see the USE_SYSTEM_RTMIDI=ON configure/build actually run, which is the whole point of the job. Thanks again for contributing this! 73


🤖 aethersdr-agent · cost: $4.8387 · model: claude-opus-4-8

@dawkagaming
dawkagaming force-pushed the system-libs-ci branch 10 times, most recently from db3e8c7 to a102212 Compare July 15, 2026 11:34
@dawkagaming

Copy link
Copy Markdown
Contributor Author

Okay, it works as expected now.

@jensenpat

Copy link
Copy Markdown
Collaborator

Holding for next week's release.

@jensenpat
jensenpat marked this pull request as draft July 17, 2026 16:20
@jensenpat
jensenpat marked this pull request as ready for review July 19, 2026 04:22
@ten9876

ten9876 commented Jul 19, 2026

Copy link
Copy Markdown
Collaborator

First-pass triage review (not exhaustive — surfacing blockers to keep this moving):

Great idea — a system-libs build guard is genuinely useful. A couple of things to sort before this can go green:

Blockers

  • No apt-get update before the installs. The official debian:sid image ships with an empty /var/lib/apt/lists, so apt install will fail with "Unable to locate package …" until the index is refreshed. Please add an apt-get update (or apt update) as the first step, or fold it into the install commands.
  • apt -U install-U isn't a recognized option for apt install (it's not --update/--upgrade); as written apt is likely to reject it. Did you mean to run apt update first and then a plain apt install -y …? Please confirm the intent here.

Have you seen this job pass on a fork run? If it's green somewhere, I may be wrong about the base image's apt state — a link to a successful run would settle it.

Secondary notes

  • cmake --build build has no -j; consider -j$(nproc) to match the other jobs and cut CI time (this config builds liquid-dsp etc. from source).
  • The job isn't path-gated, so it runs a full from-source build on every PR. That's fine as a safety net, just flagging the cost — could gate on build-system/dependency paths if it proves heavy.
  • Nit: trailing whitespace after - name: Checkout.

Thanks for adding this!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants