%global debug_package %{nil} Name: uke-audio-integration Version: 1.0.0 Release: 1%{?dist} Summary: Uke audio-integration package selection and source family License: MIT URL: https://github.com/MCC45TR/uke-linux-hardware-support Source0: uke-audio-integration-1.0.0.tar.xz ExclusiveArch: aarch64 SourceLicense: MIT AND (MIT) BuildRequires: desktop-file-utils BuildRequires: gcc-c++ alsa-lib-devel alsa-utils pkgconf-pkg-config BuildRequires: gcc-c++ pkgconf-pkg-config alsa-lib-devel wayland-devel systemd-devel BuildRequires: libasan libubsan BuildRequires: libxml2 BuildRequires: systemd %description Reviewed component sources with independent binary package identities. The source package adds no runtime selection RPM or service. %package -n uke-displayport-audio Version: 0.1.0 Release: 9.fc46 License: MIT BuildArch: noarch Summary: Internal speaker and DisplayPort playback policy for Uke Requires: alsa-ucm Requires: wireplumber >= 0.5 Requires: pipewire-pulseaudio >= 1.6.10-1.uke1 %description -n uke-displayport-audio ALSA Use Case Manager data for the POCO-Pad-X1 and POCO-Pad-X1-HDMI cards. The combined card exposes four speaker PCM channels and a separate stereo DisplayPort PCM. The amplifier preset is supplied separately. Capture is not advertised until the native microphone path is qualified. %package -n uke-speaker-controls Version: 0.1.0 Release: 5.fc46 License: MIT BuildArch: noarch Summary: KDE access to the four Uke amplifier controls Requires: kmix Requires: senemos-uke-linux-kernel-mainline >= 7.3.0-31 %description -n uke-speaker-controls Launch the original Fedora KDE KMix with its ALSA backend to adjust the four Uke speaker amplifier levels. The sound selection provides a four-channel speaker PCM and separate stereo DisplayPort PCM. No KDE application is rebuilt. %package -n uke-speaker-orientation Version: 0.1.0 Release: 6.fc46 License: MIT Summary: Display-aware internal speaker routing for Uke Wayland sessions Requires: uke-displayport-audio >= 0.1.0-6 %description -n uke-speaker-orientation Follow the internal display transform in KDE Plasma and GNOME Wayland sessions and set the Uke kernel's per-amplifier Speaker Rotation controls. Only the active local session and the exact combined Uke card are eligible. No gain, speaker enable, firmware, microphone or external-output setting is changed. %prep %setup -q ( mkdir -p "%{_builddir}/uke-audio-integration-1.0.0/work/uke-displayport-audio" cd '%{_builddir}/uke-audio-integration-1.0.0/work/uke-displayport-audio' rm -rf 'uke-displayport-audio-0.1.0' /usr/bin/rpmuncompress -x '%{_builddir}/uke-audio-integration-1.0.0/inputs/uke-displayport-audio/uke-displayport-audio-0.1.0.tar.xz' STATUS=$? if [ $STATUS -ne 0 ]; then exit $STATUS fi cd 'uke-displayport-audio-0.1.0' /usr/bin/chmod -Rf a+rX,u+w,g-w,o-w . ( mkdir -p "%{_builddir}/uke-audio-integration-1.0.0/work/uke-displayport-audio/uke-displayport-audio-0.1.0/work/uke-displayport-audio" cd '%{_builddir}/uke-audio-integration-1.0.0/work/uke-displayport-audio/uke-displayport-audio-0.1.0/work/uke-displayport-audio' rm -rf 'uke-displayport-audio-0.1.0' /usr/bin/rpmuncompress -x '%{_builddir}/uke-audio-integration-1.0.0/work/uke-displayport-audio/uke-displayport-audio-0.1.0/inputs/uke-displayport-audio/uke-displayport-audio-0.1.0.tar.gz' STATUS=$? if [ $STATUS -ne 0 ]; then exit $STATUS fi cd 'uke-displayport-audio-0.1.0' /usr/bin/chmod -Rf a+rX,u+w,g-w,o-w . ) ) ( mkdir -p "%{_builddir}/uke-audio-integration-1.0.0/work/uke-speaker-controls" cd '%{_builddir}/uke-audio-integration-1.0.0/work/uke-speaker-controls' rm -rf 'uke-speaker-controls-0.1.0' /usr/bin/rpmuncompress -x '%{_builddir}/uke-audio-integration-1.0.0/inputs/uke-speaker-controls/uke-speaker-controls-0.1.0.tar.xz' STATUS=$? if [ $STATUS -ne 0 ]; then exit $STATUS fi cd 'uke-speaker-controls-0.1.0' /usr/bin/chmod -Rf a+rX,u+w,g-w,o-w . ( mkdir -p "%{_builddir}/uke-audio-integration-1.0.0/work/uke-speaker-controls/uke-speaker-controls-0.1.0/work/uke-speaker-controls" cd '%{_builddir}/uke-audio-integration-1.0.0/work/uke-speaker-controls/uke-speaker-controls-0.1.0/work/uke-speaker-controls' rm -rf 'uke-speaker-controls-0.1.0' /usr/bin/rpmuncompress -x '%{_builddir}/uke-audio-integration-1.0.0/work/uke-speaker-controls/uke-speaker-controls-0.1.0/inputs/uke-speaker-controls/uke-speaker-controls-0.1.0.tar.gz' STATUS=$? if [ $STATUS -ne 0 ]; then exit $STATUS fi cd 'uke-speaker-controls-0.1.0' /usr/bin/chmod -Rf a+rX,u+w,g-w,o-w . ) ) ( mkdir -p "%{_builddir}/uke-audio-integration-1.0.0/work/uke-speaker-orientation" cd '%{_builddir}/uke-audio-integration-1.0.0/work/uke-speaker-orientation' rm -rf 'uke-speaker-orientation-0.1.0' /usr/bin/rpmuncompress -x '%{_builddir}/uke-audio-integration-1.0.0/inputs/uke-speaker-orientation/uke-speaker-orientation-0.1.0.tar.xz' STATUS=$? if [ $STATUS -ne 0 ]; then exit $STATUS fi cd 'uke-speaker-orientation-0.1.0' /usr/bin/chmod -Rf a+rX,u+w,g-w,o-w . ( mkdir -p "%{_builddir}/uke-audio-integration-1.0.0/work/uke-speaker-orientation/uke-speaker-orientation-0.1.0/work/uke-speaker-orientation" cd '%{_builddir}/uke-audio-integration-1.0.0/work/uke-speaker-orientation/uke-speaker-orientation-0.1.0/work/uke-speaker-orientation' rm -rf 'uke-speaker-orientation-0.1.0' /usr/bin/rpmuncompress -x '%{_builddir}/uke-audio-integration-1.0.0/work/uke-speaker-orientation/uke-speaker-orientation-0.1.0/inputs/uke-speaker-orientation/uke-speaker-orientation-0.1.0.tar.gz' STATUS=$? if [ $STATUS -ne 0 ]; then exit $STATUS fi cd 'uke-speaker-orientation-0.1.0' /usr/bin/chmod -Rf a+rX,u+w,g-w,o-w . ) ) %build ( cd "%{_builddir}/uke-audio-integration-1.0.0/work/uke-displayport-audio/uke-displayport-audio-0.1.0" ( cd "%{_builddir}/uke-audio-integration-1.0.0/work/uke-displayport-audio/uke-displayport-audio-0.1.0/work/uke-displayport-audio/uke-displayport-audio-0.1.0" ) ) ( cd "%{_builddir}/uke-audio-integration-1.0.0/work/uke-speaker-controls/uke-speaker-controls-0.1.0" ( cd "%{_builddir}/uke-audio-integration-1.0.0/work/uke-speaker-controls/uke-speaker-controls-0.1.0/work/uke-speaker-controls/uke-speaker-controls-0.1.0" ) ) ( cd "%{_builddir}/uke-audio-integration-1.0.0/work/uke-speaker-orientation/uke-speaker-orientation-0.1.0" ( cd "%{_builddir}/uke-audio-integration-1.0.0/work/uke-speaker-orientation/uke-speaker-orientation-0.1.0/work/uke-speaker-orientation/uke-speaker-orientation-0.1.0" g++ -O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -mbranch-protection=standard -fasynchronous-unwind-tables -fstack-clash-protection -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -std=c++17 -Wall -Wextra -Werror \ $(pkg-config --cflags alsa wayland-client libsystemd) \ src/uke-speaker-orientation.cpp -Wl,-z,relro -Wl,--as-needed -Wl,-z,pack-relative-relocs -Wl,-z,now -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -specs=/usr/lib/rpm/redhat/redhat-hardened-ld-errors -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -Wl,--build-id=sha1 -specs=/usr/lib/rpm/redhat/redhat-package-notes \ $(pkg-config --libs alsa wayland-client libsystemd) -o uke-speaker-orientation ) ) %install ( cd "%{_builddir}/uke-audio-integration-1.0.0/work/uke-displayport-audio/uke-displayport-audio-0.1.0" ( cd "%{_builddir}/uke-audio-integration-1.0.0/work/uke-displayport-audio/uke-displayport-audio-0.1.0/work/uke-displayport-audio/uke-displayport-audio-0.1.0" install -d %{buildroot}/usr/share/alsa/ucm2/Qualcomm/sm7675 install -m 0644 src/ucm2/Qualcomm/sm7675/*.conf %{buildroot}/usr/share/alsa/ucm2/Qualcomm/sm7675/ install -d %{buildroot}/usr/share/alsa/ucm2/conf.d/sm7675 ln -s ../../Qualcomm/sm7675/POCO-Pad-X1-HDMI.conf %{buildroot}/usr/share/alsa/ucm2/conf.d/sm7675/POCO-Pad-X1-HDMI.conf ln -s ../../Qualcomm/sm7675/POCO-Pad-X1.conf %{buildroot}/usr/share/alsa/ucm2/conf.d/sm7675/POCO-Pad-X1.conf install -Dm0644 src/wireplumber/75-uke-thp-not-camera.conf %{buildroot}/usr/share/wireplumber/wireplumber.conf.d/75-uke-thp-not-camera.conf ) ) ( cd "%{_builddir}/uke-audio-integration-1.0.0/work/uke-speaker-controls/uke-speaker-controls-0.1.0" ( cd "%{_builddir}/uke-audio-integration-1.0.0/work/uke-speaker-controls/uke-speaker-controls-0.1.0/work/uke-speaker-controls/uke-speaker-controls-0.1.0" install -Dm0644 src/uke-speaker-controls.desktop %{buildroot}/usr/share/applications/org.uke.SpeakerControls.desktop install -Dm0644 src/kmix/ALSA.POCO-Pad-X1.1.default.xml %{buildroot}/usr/share/kmix/profiles/ALSA.POCO-Pad-X1.1.default.xml ) ) ( cd "%{_builddir}/uke-audio-integration-1.0.0/work/uke-speaker-orientation/uke-speaker-orientation-0.1.0" ( cd "%{_builddir}/uke-audio-integration-1.0.0/work/uke-speaker-orientation/uke-speaker-orientation-0.1.0/work/uke-speaker-orientation/uke-speaker-orientation-0.1.0" install -Dm0755 uke-speaker-orientation %{buildroot}/usr/libexec/uke-speaker-orientation install -Dm0644 src/uke-speaker-orientation.desktop %{buildroot}/etc/xdg/autostart/uke-speaker-orientation.desktop ) ) %check ( cd "%{_builddir}/uke-audio-integration-1.0.0/work/uke-displayport-audio/uke-displayport-audio-0.1.0" ( cd "%{_builddir}/uke-audio-integration-1.0.0/work/uke-displayport-audio/uke-displayport-audio-0.1.0/work/uke-displayport-audio/uke-displayport-audio-0.1.0" test "$(find %{buildroot}/usr/share/alsa/ucm2/Qualcomm/sm7675 -type f | wc -l)" -eq 7 test "$(find %{buildroot}/usr/share/alsa/ucm2/conf.d/sm7675 -type l | wc -l)" -eq 2 cmp src/wireplumber/75-uke-thp-not-camera.conf %{buildroot}/usr/share/wireplumber/wireplumber.conf.d/75-uke-thp-not-camera.conf test -r %{buildroot}/usr/share/alsa/ucm2/conf.d/sm7675/POCO-Pad-X1-HDMI.conf bash tests/audio-policy.sh ) ) ( cd "%{_builddir}/uke-audio-integration-1.0.0/work/uke-speaker-controls/uke-speaker-controls-0.1.0" ( cd "%{_builddir}/uke-audio-integration-1.0.0/work/uke-speaker-controls/uke-speaker-controls-0.1.0/work/uke-speaker-controls/uke-speaker-controls-0.1.0" desktop-file-validate %{buildroot}/usr/share/applications/org.uke.SpeakerControls.desktop xmllint --nonet --noout %{buildroot}/usr/share/kmix/profiles/ALSA.POCO-Pad-X1.1.default.xml ) ) ( cd "%{_builddir}/uke-audio-integration-1.0.0/work/uke-speaker-orientation/uke-speaker-orientation-0.1.0" ( cd "%{_builddir}/uke-audio-integration-1.0.0/work/uke-speaker-orientation/uke-speaker-orientation-0.1.0/work/uke-speaker-orientation/uke-speaker-orientation-0.1.0" bash tests/speaker-orientation.sh ) ) %files -n uke-displayport-audio %license work/uke-displayport-audio/uke-displayport-audio-0.1.0/work/uke-displayport-audio/uke-displayport-audio-0.1.0/LICENSE %dir /usr/share/alsa/ucm2/Qualcomm/sm7675 /usr/share/alsa/ucm2/Qualcomm/sm7675/POCO-Pad-X1-HDMI.conf /usr/share/alsa/ucm2/Qualcomm/sm7675/DP-HiFi.conf /usr/share/alsa/ucm2/Qualcomm/sm7675/DP-ELD.conf /usr/share/alsa/ucm2/Qualcomm/sm7675/POCO-Pad-X1.conf /usr/share/alsa/ucm2/Qualcomm/sm7675/Speaker-*.conf %dir /usr/share/alsa/ucm2/conf.d/sm7675 /usr/share/alsa/ucm2/conf.d/sm7675/POCO-Pad-X1-HDMI.conf /usr/share/alsa/ucm2/conf.d/sm7675/POCO-Pad-X1.conf /usr/share/wireplumber/wireplumber.conf.d/75-uke-thp-not-camera.conf %files -n uke-speaker-controls %license work/uke-speaker-controls/uke-speaker-controls-0.1.0/work/uke-speaker-controls/uke-speaker-controls-0.1.0/LICENSE %doc work/uke-speaker-controls/uke-speaker-controls-0.1.0/work/uke-speaker-controls/uke-speaker-controls-0.1.0/SPEAKER-CONTROLS.md /usr/share/applications/org.uke.SpeakerControls.desktop /usr/share/kmix/profiles/ALSA.POCO-Pad-X1.1.default.xml %files -n uke-speaker-orientation %license work/uke-speaker-orientation/uke-speaker-orientation-0.1.0/work/uke-speaker-orientation/uke-speaker-orientation-0.1.0/LICENSE %doc work/uke-speaker-orientation/uke-speaker-orientation-0.1.0/work/uke-speaker-orientation/uke-speaker-orientation-0.1.0/SPEAKER-ORIENTATION.md /usr/libexec/uke-speaker-orientation %config(noreplace) /etc/xdg/autostart/uke-speaker-orientation.desktop %changelog * Tue Oct 20 2026 Senemos Maintainers <75160848+MCC45TR@users.noreply.github.com> - 1.0.0-1 - Build reviewed child recipes under one source family without binary repackaging.