Name: uke-speaker-runtime Version: 0.4 Release: 3%{?dist} Summary: Read-only Uke speaker calibration reader and guarded DSP provisioner License: GPL-2.0-only Source0: %{name}-%{version}.tar.gz BuildRequires: gcc-c++ BuildRequires: clang BuildRequires: compiler-rt BuildRequires: openssl-devel BuildRequires: alsa-lib-devel BuildRequires: jq systemd systemd-rpm-macros Requires: systemd systemd-udev curl coreutils jq alsa-utils util-linux rpm Provides: uke-speaker-runtime(gain-readiness-v1) = 1 %description Reads device-specific calibration directly from a read-only persist filesystem. It never writes calibration files. The default check mode does not access audio hardware. Provisioning is bound to the matching board sound-card lifecycle. The helper never starts playback. Generic OEM DSP data is acquired separately by an explicit one-time command; no network request runs in the boot service. %prep %setup -q -c %build %{__cxx} %{build_cxxflags} -std=c++20 src/audio/uke-speaker-runtime.cpp \ %{build_ldflags} -lasound -lcrypto -o uke-speaker-runtime %check CXX=g++ bash tests/audio-speaker-runtime-contract.sh CXX=clang++ bash tests/audio-speaker-runtime-contract.sh CXX=g++ bash tests/audio-speaker-service-contract.sh CXX=clang++ bash tests/audio-speaker-service-contract.sh bash -n src/audio/speaker-gain-preflight.sh bash tests/audio-speaker-preflight-contract.sh %install install -Dm755 uke-speaker-runtime %{buildroot}%{_bindir}/uke-speaker-runtime install -Dm755 src/audio/prepare-generic-speaker-data.sh %{buildroot}%{_libexecdir}/uke-speaker-prepare-data install -Dm755 src/audio/speaker-gain-preflight.sh %{buildroot}%{_bindir}/uke-speaker-gain-preflight install -Dm644 src/audio/systemd/uke-speaker-provision@.service %{buildroot}%{_unitdir}/uke-speaker-provision@.service install -Dm644 src/audio/udev/70-uke-speaker-provision.rules %{buildroot}%{_udevrulesdir}/70-uke-speaker-provision.rules %post %systemd_post uke-speaker-provision@.service %udev_rules_update %preun %systemd_preun uke-speaker-provision@.service %postun %systemd_postun uke-speaker-provision@.service %udev_rules_update %files %{_libexecdir}/uke-speaker-prepare-data %{_unitdir}/uke-speaker-provision@.service %{_udevrulesdir}/70-uke-speaker-provision.rules %license LICENSE %{_bindir}/uke-speaker-runtime %{_bindir}/uke-speaker-gain-preflight