Void templates for the small Python dependencies #25

Closed
opened 2026-11-05 17:00:43 +00:00 by xavierk · 2 comments
Owner

Parent

Spec: Voculinux — Void Linux (glibc) Wayland/niri port of Vocalinux

What to build

The two easy Void dependency gaps close as in-repo package templates in void-packages layout under the packaging tree: the keyboard input library the app needs on X11, and an updated audio binding template that resolves the known version-floor gap deliberately (Void's current package is older than the project's declared floor). Templates follow Void manual conventions, build in the pinned Void glibc container with podman, and pass an import smoke. Dependency verification is never disabled to hide the version gap; if evidence shows the project floor itself was raised without need, that finding is recorded here and the floor decision is revisited explicitly instead.

Acceptance criteria

  • Both templates pass the Void template linter with no findings.
  • Both packages build in the pinned Void glibc container (podman) and the built packages import cleanly in a fresh container.
  • The audio binding version satisfies the project's declared floor, or this ticket records the evidence and decision if the floor is changed instead; no verification-disabling template options anywhere.
  • Template dependency lists name only packages verified to exist in current void-packages.

Blocked by

None (can start immediately).

## Parent [Spec: Voculinux — Void Linux (glibc) Wayland/niri port of Vocalinux](https://git.bongbetic.com/xavierk/voculinux/issues/16) ## What to build The two easy Void dependency gaps close as in-repo package templates in void-packages layout under the packaging tree: the keyboard input library the app needs on X11, and an updated audio binding template that resolves the known version-floor gap deliberately (Void's current package is older than the project's declared floor). Templates follow Void manual conventions, build in the pinned Void glibc container with podman, and pass an import smoke. Dependency verification is never disabled to hide the version gap; if evidence shows the project floor itself was raised without need, that finding is recorded here and the floor decision is revisited explicitly instead. ## Acceptance criteria - [ ] Both templates pass the Void template linter with no findings. - [ ] Both packages build in the pinned Void glibc container (podman) and the built packages import cleanly in a fresh container. - [ ] The audio binding version satisfies the project's declared floor, or this ticket records the evidence and decision if the floor is changed instead; no verification-disabling template options anywhere. - [ ] Template dependency lists name only packages verified to exist in current void-packages. ## Blocked by None (can start immediately).
xavierk added the ready-for-agent label 2026-11-05 17:00:43 +00:00
Author
Owner

Ticket #25 implemented on branch feature/25 (commit c462ffb, cut from integration/spec16 tip 0a4d637, still current).

What was built (packaging/void/, void-packages layout + tests/test_void_small_deps.py, 12 offline policy tests):

  • srcpkgs/python3-pynput/template: new, 1.8.2_1 (Void ships no pynput; 404 on master 2026-11-05). python3-module style; depends python3-evdev python3-six python3-xlib (covers pynput's linux install_requires per uv.lock); post_patch strips setup_requires (void precedent: python3-pyte/python3-twitter) so the build never fetches setuptools-lint/sphinx/twine over the network.
  • srcpkgs/python3-PyAudio/template: updated 0.2.12_5 -> 0.2.14_1, checksum 78dfff38... (= uv.lock sdist hash). Only version/revision/maintainer/checksum differ from upstream; same build knobs and post_install. Floor decision: floor stays pyaudio>=0.2.13 (not relaxed); template satisfies it. No noverifypydeps/nopyprovides in either template.
  • tool_checksums.txt: base-image pinned to ghcr.io/void-linux/void-glibc-full index digest sha256:e98f8cdd... (tag: latest).

Acceptance evidence (podman, pinned container):

  • xlint: both templates pass with no findings.
  • xbps-src pkg: both build; PyAudio distfile checksum verifies OK; all deps resolved from current void repos (evdev 1.7.1_2, six 1.17.0_2, xlib 0.33_4, portaudio-devel, python3-devel, setuptools 80.10.2_2).
  • Fresh-container install via local xbps repo index: both install; python3 -c import pyaudio -> 0.2.14 against PortAudio V19.6.0-devel. pynput presence via find_spec (its X backend needs a display, same documented behavior as the native smoke gate).
  • Offline suite: 12/12 pass; black/flake8-critical/isort clean.

Notes for later tickets: the void-glibc-full image ships dash, not bash, so xbps-src needs bash+git installed first (done in throwaway prep layers, not committed). python3 in current Void is 3.14. Staging checkout with built xbps left at ~/.cache/tmp/t25-void-packages (scratch, not committed).

Ticket #25 implemented on branch feature/25 (commit c462ffb, cut from integration/spec16 tip 0a4d637, still current). What was built (packaging/void/, void-packages layout + tests/test_void_small_deps.py, 12 offline policy tests): - srcpkgs/python3-pynput/template: new, 1.8.2_1 (Void ships no pynput; 404 on master 2026-11-05). python3-module style; depends python3-evdev python3-six python3-xlib (covers pynput's linux install_requires per uv.lock); post_patch strips setup_requires (void precedent: python3-pyte/python3-twitter) so the build never fetches setuptools-lint/sphinx/twine over the network. - srcpkgs/python3-PyAudio/template: updated 0.2.12_5 -> 0.2.14_1, checksum 78dfff38... (= uv.lock sdist hash). Only version/revision/maintainer/checksum differ from upstream; same build knobs and post_install. Floor decision: floor stays pyaudio>=0.2.13 (not relaxed); template satisfies it. No noverifypydeps/nopyprovides in either template. - tool_checksums.txt: base-image pinned to ghcr.io/void-linux/void-glibc-full index digest sha256:e98f8cdd... (tag: latest). Acceptance evidence (podman, pinned container): - xlint: both templates pass with no findings. - xbps-src pkg: both build; PyAudio distfile checksum verifies OK; all deps resolved from current void repos (evdev 1.7.1_2, six 1.17.0_2, xlib 0.33_4, portaudio-devel, python3-devel, setuptools 80.10.2_2). - Fresh-container install via local xbps repo index: both install; python3 -c import pyaudio -> 0.2.14 against PortAudio V19.6.0-devel. pynput presence via find_spec (its X backend needs a display, same documented behavior as the native smoke gate). - Offline suite: 12/12 pass; black/flake8-critical/isort clean. Notes for later tickets: the void-glibc-full image ships dash, not bash, so xbps-src needs bash+git installed first (done in throwaway prep layers, not committed). python3 in current Void is 3.14. Staging checkout with built xbps left at ~/.cache/tmp/t25-void-packages (scratch, not committed).
Author
Owner

Merged in integration/spec16 1dd3986383 pushed to fork/integration/spec16 (https://github.com/soubarnak/vocalinux/tree/integration/spec16), review PASS, gates flake8 E9,F63,F7,F82 + black --check + isort --check + mypy src/ clean, pytest 37 passed, npm jest 11 suites/92 tests + lint 0 errors + tsc clean + build OK

Merged in integration/spec16 1dd398638312a3b6e27793d856662e60df73f252 pushed to fork/integration/spec16 (https://github.com/soubarnak/vocalinux/tree/integration/spec16), review PASS, gates flake8 E9,F63,F7,F82 + black --check + isort --check + mypy src/ clean, pytest 37 passed, npm jest 11 suites/92 tests + lint 0 errors + tsc clean + build OK
Sign in to join this conversation.