%global debug_package %{nil} URL: https://github.com/MCC45TR/uke-linux-hardware-support Source0: uke-ssc-fileservice-2026.09.21.tar.xz ExclusiveArch: aarch64 BuildRequires: gcc gcc-c++ systemd-rpm-macros BuildRequires: pkgconfig(libsystemd) Name: uke-ssc-fileservice Version: 2026.09.21 Release: 24.fc46 License: GPL-3.0-or-later Summary: Native Uke SSC file service with a disposable registry Requires: iio-sensor-proxy(ssc) >= 1 Requires: iio-sensor-proxy(uke-dual-light) >= 1 Requires: /usr/share/uke-sensors/odm/json.lst Requires: /usr/share/uke-sensors/sns_reg.conf Requires: /usr/lib/firmware/qcom/uke/sensors/sns_tppe.so Requires: /usr/bin/findmnt Requires: /usr/bin/grep Requires: /usr/bin/flock Requires(post): systemd Requires(preun): systemd Requires(postun): systemd %description -n uke-ssc-fileservice Serve the pinned upstream FastRPC implementation from a private RAM tree. Copy calibration from a read-only persist mount; firmware writes remain in RAM. Device-local firmware/configuration is required separately and is not redistributed here. Startup, restart and suspend remain device test gates. %prep %setup -q ( mkdir -p "%{_builddir}/uke-ssc-fileservice-2026.09.21/work/uke-ssc-fileservice" echo 'ed7b0e704a5e8c20b77b013b4b34f3cddbe41d4cf546edc73f029501f7ebdec5 %{_builddir}/uke-ssc-fileservice-2026.09.21/inputs/uke-ssc-fileservice/hexagonrpc-510c87e5.tar.gz' | sha256sum -c - cd '%{_builddir}/uke-ssc-fileservice-2026.09.21/work/uke-ssc-fileservice' rm -rf 'uke-ssc-fileservice-2026.09.21' /usr/bin/mkdir -p 'uke-ssc-fileservice-2026.09.21' cd 'uke-ssc-fileservice-2026.09.21' /usr/bin/chmod -Rf a+rX,u+w,g-w,o-w . tar -xf %{_builddir}/uke-ssc-fileservice-2026.09.21/inputs/uke-ssc-fileservice/hexagonrpc-510c87e5.tar.gz --strip-components=1 /usr/bin/rpmuncompress %{_builddir}/uke-ssc-fileservice-2026.09.21/inputs/uke-ssc-fileservice/0001-select-sequence-type.patch | /usr/bin/patch -p1 -s --fuzz=0 --no-backup-if-mismatch -f /usr/bin/rpmuncompress %{_builddir}/uke-ssc-fileservice-2026.09.21/inputs/uke-ssc-fileservice/0002-verbose-native-u64.patch | /usr/bin/patch -p1 -s --fuzz=0 --no-backup-if-mismatch -f /usr/bin/rpmuncompress %{_builddir}/uke-ssc-fileservice-2026.09.21/inputs/uke-ssc-fileservice/0003-map-oem-odm-sensor-config.patch | /usr/bin/patch -p1 -s --fuzz=0 --no-backup-if-mismatch -f /usr/bin/rpmuncompress %{_builddir}/uke-ssc-fileservice-2026.09.21/inputs/uke-ssc-fileservice/0004-reject-mapped-symlinks.patch | /usr/bin/patch -p1 -s --fuzz=0 --no-backup-if-mismatch -f /usr/bin/rpmuncompress %{_builddir}/uke-ssc-fileservice-2026.09.21/inputs/uke-ssc-fileservice/0005-reject-incomplete-shell-images.patch | /usr/bin/patch -p1 -s --fuzz=0 --no-backup-if-mismatch -f /usr/bin/rpmuncompress %{_builddir}/uke-ssc-fileservice-2026.09.21/inputs/uke-ssc-fileservice/0006-notify-listener-readiness.patch | /usr/bin/patch -p1 -s --fuzz=0 --no-backup-if-mismatch -f ) %build ( cd "%{_builddir}/uke-ssc-fileservice-2026.09.21/work/uke-ssc-fileservice/uke-ssc-fileservice-2026.09.21" CFLAGS="${CFLAGS:--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 }" ; export CFLAGS ; CXXFLAGS="${CXXFLAGS:--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 }" ; export CXXFLAGS ; FFLAGS="${FFLAGS:--O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -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 -I/usr/lib64/gfortran/modules }" ; export FFLAGS ; FCFLAGS="${FCFLAGS:--O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -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 -I/usr/lib64/gfortran/modules }" ; export FCFLAGS ; VALAFLAGS="${VALAFLAGS:--g}" ; export VALAFLAGS ; RUSTFLAGS="${RUSTFLAGS:--Copt-level=3 -Cdebuginfo=2 -Ccodegen-units=1 -Cstrip=none -Cforce-frame-pointers=yes -Clink-arg=-specs=/usr/lib/rpm/redhat/redhat-package-notes --cap-lints=warn}" ; export RUSTFLAGS ; LDFLAGS="${LDFLAGS:--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 }" ; export LDFLAGS ; LT_SYS_LIBRARY_PATH="${LT_SYS_LIBRARY_PATH:-/usr/lib64:}" ; export LT_SYS_LIBRARY_PATH ; CC="${CC:-gcc}" ; export CC ; CXX="${CXX:-g++}" ; export CXX gcc $CFLAGS $LDFLAGS -std=gnu11 -Wall -Wextra -Werror -Wno-unused-parameter \ -I include libhexagonrpc/*.c libhexagonrpc/interface/*.c hexagonrpcd/*.c \ hexagonrpcd/interface/*.c -lsystemd -o uke-hexagonrpcd g++ $CXXFLAGS $LDFLAGS -std=c++20 -Wall -Wextra -Werror %{_builddir}/uke-ssc-fileservice-2026.09.21/inputs/uke-ssc-fileservice/ssc-cache.cpp -o uke-ssc-cache ) %install ( cd "%{_builddir}/uke-ssc-fileservice-2026.09.21/work/uke-ssc-fileservice/uke-ssc-fileservice-2026.09.21" install -Dm755 uke-hexagonrpcd %{buildroot}/usr/libexec/uke-hexagonrpcd install -Dm755 uke-ssc-cache %{buildroot}/usr/libexec/uke-ssc-cache install -Dm644 %{_builddir}/uke-ssc-fileservice-2026.09.21/inputs/uke-ssc-fileservice/uke-ssc-root.service %{buildroot}/usr/lib/systemd/system/uke-ssc-root.service install -Dm644 %{_builddir}/uke-ssc-fileservice-2026.09.21/inputs/uke-ssc-fileservice/uke-ssc-sensors.service %{buildroot}/usr/lib/systemd/system/uke-ssc-sensors.service install -Dm644 %{_builddir}/uke-ssc-fileservice-2026.09.21/inputs/uke-ssc-fileservice/uke-ssc-cache.service %{buildroot}/usr/lib/systemd/system/uke-ssc-cache.service install -Dm644 %{_builddir}/uke-ssc-fileservice-2026.09.21/inputs/uke-ssc-fileservice/iio-ssc-order.conf %{buildroot}/usr/lib/systemd/system/iio-sensor-proxy.service.d/uke-ssc.conf install -Dm644 %{_builddir}/uke-ssc-fileservice-2026.09.21/inputs/uke-ssc-fileservice/70-uke-ssc.rules %{buildroot}/usr/lib/udev/rules.d/70-uke-ssc.rules ) %check ( cd "%{_builddir}/uke-ssc-fileservice-2026.09.21/work/uke-ssc-fileservice/uke-ssc-fileservice-2026.09.21" mkdir contract for name in hexagonfs hexagonfs_mapped hexagonfs_virt_dir rpcd_builder; do gcc -std=gnu11 -O2 -Wall -Wextra -Werror -Wno-unused-parameter -I include \ -c hexagonrpcd/$name.c -o contract/$name.o || exit done g++ -std=c++20 -O2 -Wall -Wextra -Werror -I hexagonrpcd %{_builddir}/uke-ssc-fileservice-2026.09.21/inputs/uke-ssc-fileservice/hexagon-registry.cpp contract/*.o -o contract/registry ./contract/registry sed -n '/^static int create_shell_pd(/,/^}/p' hexagonrpcd/rpcd.c > contract/shell-function.h gcc -std=gnu11 -O2 -Wall -Wextra -Werror -I contract %{_builddir}/uke-ssc-fileservice-2026.09.21/inputs/uke-ssc-fileservice/hexagon-shell.c -o contract/shell ./contract/shell sed -n '/^static void \*start_reverse_tunnel(/,/^}/p' hexagonrpcd/rpcd.c > contract/listener-function.h gcc -std=gnu11 -O2 -Wall -Wextra -Werror -I contract %{_builddir}/uke-ssc-fileservice-2026.09.21/inputs/uke-ssc-fileservice/hexagon-readiness.c -o contract/readiness ./contract/readiness mkdir -p src tests cp %{_builddir}/uke-ssc-fileservice-2026.09.21/inputs/uke-ssc-fileservice/ssc-cache.cpp src/ssc-cache.cpp cp %{_builddir}/uke-ssc-fileservice-2026.09.21/inputs/uke-ssc-fileservice/ssc-cache-test.cpp tests/ssc-cache.cpp g++ -std=c++20 -O2 -Wall -Wextra -Werror tests/ssc-cache.cpp -o contract/cache mkdir contract/cache-fixture ./contract/cache "$PWD/contract/cache-fixture" ) %post -n uke-ssc-fileservice if [ $1 -eq 1 ] && [ -x "/usr/lib/systemd/systemd-update-helper" ]; then # Initial installation /usr/lib/systemd/systemd-update-helper install-system-units uke-ssc-cache.service uke-ssc-root.service uke-ssc-sensors.service || : fi %preun -n uke-ssc-fileservice if [ $1 -eq 0 ] && [ -x "/usr/lib/systemd/systemd-update-helper" ]; then # Package removal, not upgrade /usr/lib/systemd/systemd-update-helper remove-system-units uke-ssc-cache.service uke-ssc-root.service uke-ssc-sensors.service || : fi %postun -n uke-ssc-fileservice %transfiletriggerin -n uke-ssc-fileservice -- /usr/lib/firmware/qcom/uke/sensors /usr/share/uke-sensors /usr/libexec/uke-ssc-cache if [ -d /run/systemd/system ] && [ -r /sys/firmware/devicetree/base/compatible ] && grep -zFxq xiaomi,uke /sys/firmware/devicetree/base/compatible && systemctl -q is-active uke-ssc-root.service; then systemctl daemon-reload if ! systemctl try-restart uke-ssc-cache.service uke-ssc-root.service uke-ssc-sensors.service iio-sensor-proxy.service; then echo 'Uke SSC cache refresh refused; inspect the service result before accepting the new sensor runtime.' >&2 fi fi %files -n uke-ssc-fileservice %license work/uke-ssc-fileservice/uke-ssc-fileservice-2026.09.21/COPYING /usr/libexec/uke-hexagonrpcd /usr/libexec/uke-ssc-cache /usr/lib/systemd/system/uke-ssc-cache.service /usr/lib/systemd/system/uke-ssc-root.service /usr/lib/systemd/system/uke-ssc-sensors.service /usr/lib/systemd/system/iio-sensor-proxy.service.d/uke-ssc.conf /usr/lib/udev/rules.d/70-uke-ssc.rules %changelog * Thu Oct 29 2026 Senemos Maintainers <75160848+MCC45TR@users.noreply.github.com> - 2026.09.21-24.fc46 - Build this component independently from its reviewed source recipe.