Commita925d966Recorded2 Sep 2026Repositorysigil-audio

Release 0.12.1: build under the repo manifest, stop tracking .sigil

Message

sigil-audio could not build or test. Three separate causes:

  • alsa/asoundlib.h not found. sokol_audio.h uses the ALSA backend on Linux and nothing here vendors it. The repo's manifest.scm already listed alsa-lib; the build simply was not being run under it. No manifest change was needed -- guix shell -m manifest.scm was.
  • No dev-dependencies, so sigil test refused outright: a package with native code needs sigil-test and sigil-test-runner to build a harness.
  • The suite then DIED rather than failed. Vendored libvorbis computes ((lo-1)<<16) at psy.c:319, which is (-1)<<16 when lo is 0 -- undefined behaviour, and the toolchain traps it at RUNTIME, so the process panicked inside vorbis_analysis with no test result at all. -fno-sanitize=undefined is scoped to the two vendored compile steps and NEVER to sigil-audio's own sources: this is upstream code we vendor unmodified, and the check is worth keeping everywhere we actually own the code.

Also stops tracking .sigil/deps/sigil-stdlib, a symlink whose content was an absolute path into this machine's dependency store. It changed on every relock, so it churned the diff while being meaningless to any other checkout. .sigil/ now ignored, matching the rest of the estate.

NOT CONVERTED TO CI, deliberately. Both test files register zero tests, so the runner prints "All tests passed" over 0 passed while reporting 2 registered no tests in yellow. Adding a pipeline would publish a green that asserts nothing. Held with sigil-dsp and vigil until sigil test --strict (t-907227).

Released because sigil-studio cannot build against the published tip: that commit predates the with-sigil-c-flags fix and fails on a missing sigil-internal.h -- the same defect fixed in sigil-tui v0.8.1.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01P6mPymR1ZBRV1nuyDpBxDF

Changed
 .gitignore               |  1 +
 .sigil/deps/sigil-stdlib |  1 -
 package.sgl              | 22 +++++++++++++++++-----
 sigil.lock               | 39 +++++++++++++++++++++++++++++++++------
 4 files changed, 51 insertions(+), 12 deletions(-)
Diff
.gitignoremodified
@@ -1 +1,2 @@
1
build/
+2
.sigil/
.sigil/deps/sigil-stdlibdeleted
@@ -1 +0,0 @@
−1
/home/daviwil/.sigil/deps/codeberg-sigil-sigil-54f66e8ec446b65b75ab6f12454d2c0aa269f2c0/packages/sigil-stdlib
0
No newline at end of file
package.sglmodified
@@ -20,8 +20,8 @@
20
(step ctx))))))
21
(package
22
name: "sigil-audio"
−23
version: "0.12.0"
−24
sigil: "^0.17"
+23
version: "0.12.1"
+24
sigil: "0.20"
25
description: "Audio playback and streaming for Sigil"
26
url: "https://codeberg.org/sigil/sigil-audio"
27
license: "BSD-3-Clause"
@@ -54,7 +54,7 @@
54
features: '(release cross windows)))
55
56
dependencies: (list
−57
(from-git url: "codeberg:sigil/sigil" package: "sigil-stdlib" version: "^0.17"))
+57
(from-git url: "codeberg:sigil/sigil" package: "sigil-stdlib" version: "^0.20"))
58
59
libraries: (list
60
(library
@@ -87,6 +87,10 @@
87
((windows) '("-lole32" "-lwinmm" "-lksuser"))
88
(else '())))))
89
+90
dev-dependencies: (list
+91
(from-git url: "codeberg:sigil/sigil" package: "sigil-test" version: "^0.20")
+92
(from-git url: "codeberg:sigil/sigil" package: "sigil-test-runner" version: "^0.20"))
+93
94
tasks: (list
95
(task
96
name: 'build
@@ -111,7 +115,14 @@
115
"-Wno-unused-function"
116
"-Wno-unused-but-set-variable"
117
"-Wno-sign-compare"
−114
"-Wno-strict-aliasing")))
+118
"-Wno-strict-aliasing"
+119
;; libvorbis shifts negative values (psy.c:319,
+120
;; ((lo-1)<<16) with lo==0). That is UB in C and the
+121
;; toolchain traps it at RUNTIME, so the suite died in
+122
;; vorbis_analysis rather than failing a test. Upstream
+123
;; code we vendor unmodified; scoped to this step only,
+124
;; never to sigil-audio own sources.
+125
"-fno-sanitize=undefined")))
126
127
;; Compile vendored libvorbis (full library + encoder + file
128
;; I/O). Upstream sources are byte-identical to the 1.3.7
@@ -162,7 +173,8 @@
173
"-Wno-unused-function"
174
"-Wno-unused-but-set-variable"
175
"-Wno-sign-compare"
−165
"-Wno-strict-aliasing"))))
+176
"-Wno-strict-aliasing"
+177
"-fno-sanitize=undefined"))))
178
179
;; sigil-audio's own C sources.
180
(skip-on-wasm (compile-c-sources
sigil.lockmodified
@@ -2,14 +2,41 @@
2
(lock
3
(package name: "sigil-lib"
4
url: "codeberg:sigil/sigil"
−5
ref: "^0.17"
−6
sha: "61ba6501f4ff5d1fd534c13c4a3494b69cc88412"
+5
ref: ">=0.20, <1.0"
+6
sha: "2e452e2f641fcf63be4e88a2748b34791543be8f"
7
package-selector: "sigil-lib"
−8
version: "0.17.1")
+8
version: "0.20.3")
9
(package name: "sigil-stdlib"
10
url: "codeberg:sigil/sigil"
−11
ref: "^0.17"
−12
sha: "61ba6501f4ff5d1fd534c13c4a3494b69cc88412"
+11
ref: "^0.20"
+12
sha: "2e452e2f641fcf63be4e88a2748b34791543be8f"
13
package-selector: "sigil-stdlib"
−14
version: "0.17.1")
+14
version: "0.20.3")
+15
(package name: "sigil-test"
+16
url: "codeberg:sigil/sigil"
+17
ref: "^0.20"
+18
sha: "2e452e2f641fcf63be4e88a2748b34791543be8f"
+19
package-selector: "sigil-test"
+20
version: "0.20.3")
+21
(package name: "sigil-test-runner"
+22
url: "codeberg:sigil/sigil"
+23
ref: "^0.20"
+24
sha: "2e452e2f641fcf63be4e88a2748b34791543be8f"
+25
package-selector: "sigil-test-runner"
+26
version: "0.20.3")
+27
(package name: "sigil-json"
+28
url: "codeberg:sigil/sigil-json"
+29
ref: "^0.16.0"
+30
sha: "55c9e74712b5f79b45d41c65cfe0aef2c8f7e155"
+31
version: "0.16.0")
+32
(package name: "sigil-crypto"
+33
url: "codeberg:sigil/sigil-crypto"
+34
ref: "^0.16.0"
+35
sha: "debba4462b7ff4de143db9e0792b8606fdc455bc"
+36
version: "0.16.5")
+37
(package name: "sigil-sqlite"
+38
url: "codeberg:sigil/sigil-sqlite"
+39
ref: "^0.16.0"
+40
sha: "569ef1063dda8f5989968644af31fc09c64b4bfe"
+41
version: "0.16.3")
42
)