You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit 9a2bd59
Browse filesBrowse the repository at this point in the historyBrowse files
ci: build the Nix packages, including the CUDA link
The Nix packages had no CI coverage at all, which is how three Linux
packaging bugs shipped in a row: missing pkg-config/alsa-lib, an ALSA
client too old for the host PipeWire, and a CUDA build that compiled
every .cu kernel and then failed the final link on -lcuda.
All three are BUILD failures, so a runner catches them; none needs a GPU,
a microphone or a Wayland session. The nix job also asserts the Wayland
delivery tools really are on the wrapped binary's PATH, since a package
that transcribes and then cannot type is the failure mode that looks like
a bug in the app.
nix-cuda is a separate job: nvcc plus the CUDA redistributables are
minutes of compute and gigabytes of download, and it needs the runner's
disk reclaimed. It proves the link, not inference.
Copy file name to clipboardExpand all lines: .github/workflows/ci.yml
+59Lines changed: 59 additions & 0 deletions
Original file line number
Diff line number
Diff line change
@@ -407,3 +407,62 @@ jobs:
407
407
if: failure()
408
408
run: >-
409
409
echo "::error title=install job failed::scripts/install.sh could not install the published release, or the app it installed was not the outloud daemon with its speech helper. Run scripts/test-install.sh locally; it installs into a temp dir and never touches /Applications."
410
+
411
+
# The Nix packages had no coverage at all, which is how three separate
412
+
# Linux packaging bugs shipped in a row: a missing pkg-config/alsa-lib, an
413
+
# ALSA client too old for the host PipeWire, and a CUDA build that compiled
414
+
# every .cu kernel and then failed the final link on -lcuda. Every one of
415
+
# those is a BUILD failure, so a runner can catch them; none needs a GPU,
# The default package: proves the workspace builds under Nix on Linux
423
+
# and that the wtype/wl-clipboard wrapper resolves.
424
+
- name: Build the default package
425
+
run: nix build .#default --print-build-logs
426
+
- name: The wrapper must put wtype and wl-copy on the binary's PATH
427
+
run: |
428
+
# wrapProgram replaces bin/outloud with a shell wrapper and moves
429
+
# the real ELF aside; asserting on the whole bin/ directory instead
430
+
# of a specific filename keeps this from breaking when nixpkgs
431
+
# changes the wrapper's naming. Grep, never execute: running the
432
+
# binary would want a Wayland session and a microphone.
433
+
set -euo pipefail
434
+
if ! grep -rqs wtype result/bin/; then
435
+
echo "::error::wtype is not on the wrapped binary's PATH"
436
+
ls -la result/bin/
437
+
exit 1
438
+
fi
439
+
if ! grep -rqs wl-clipboard result/bin/; then
440
+
echo "::error::wl-clipboard is not on the wrapped binary's PATH"
441
+
exit 1
442
+
fi
443
+
echo "wtype and wl-clipboard are both on the wrapped PATH"
444
+
- name: Attribute failure
445
+
if: failure()
446
+
run: >-
447
+
echo "::error title=nix job failed::The Nix package failed to build on x86_64 Linux, or the Wayland delivery tools are missing from the wrapped binary's PATH."
448
+
449
+
# CUDA is split out and allowed to fail the slow way: it compiles
450
+
# whisper.cpp's CUDA kernels with nvcc, which is minutes of work and a
451
+
# multi-gigabyte toolchain download. It proves the LINK, which is where
452
+
# this has broken before (libcuda is a driver stub, not part of the
453
+
# redistributable toolkit); it cannot prove inference, which needs a real
454
+
# GPU this runner does not have.
455
+
nix-cuda:
456
+
runs-on: ubuntu-24.04
457
+
timeout-minutes: 90
458
+
steps:
459
+
- uses: actions/checkout@v4
460
+
# nvcc plus the CUDA redistributables far exceed the runner's ~14 GB.
- name: Build the CUDA package (compile + link only; no GPU here)
464
+
run: nix build .#outloud-cuda --print-build-logs
465
+
- name: Attribute failure
466
+
if: failure()
467
+
run: >-
468
+
echo "::error title=nix-cuda job failed::whisper.cpp's CUDA build or its final link failed. If the error is 'unable to find library -lcuda', the libcuda stub path in flake.nix is wrong: libcuda ships with the driver, and Nix links against cuda_cudart's stubs directory."
0 commit comments