%global pkg_version 0.75.2 %global gh_owner ShadowBlip %global gh_repo InputPlumber # Upstream ships a stripped binary; rpmbuild's auto-debugsource finds no # sources to package and errors out on the empty %files list. Disable. %global debug_package %{nil} %global _enable_debug_packages 0 %global _build_id_links none Name: inputplumber Version: %{pkg_version} Release: %autorelease Summary: Open-source input router and remapper daemon for Linux handhelds License: GPL-3.0-or-later URL: https://github.com/%{gh_owner}/%{gh_repo} # Pre-built aarch64 release tarball (the upstream Rust binary + systemd unit # + dbus/polkit configs + capability_map YAMLs ROCKNIX consumes directly). # Avoids dragging cargo + a Rust toolchain into the Pocket DS build chain. Source0: %{url}/releases/download/v%{pkg_version}/inputplumber-aarch64.tar.gz ExclusiveArch: aarch64 # Runtime libraries the upstream binary links against (matches ROCKNIX's # PKG_DEPENDS_TARGET="toolchain systemd libevdev libiio polkit"). Requires: systemd Requires: libevdev Requires: libiio Requires: polkit # The dbus + polkit drop-in files in the tarball reference the system bus. Requires(post): systemd Requires(preun): systemd Requires(postun): systemd # systemd-rpm-macros: provides _unitdir / _udevrulesdir / _udevhwdbdir. BuildRequires: systemd-rpm-macros %description InputPlumber is a userspace input router and remapper daemon designed for Linux gaming handhelds. It exposes physical input devices (gamepad MCUs, HID controllers, touchpads, IMU/accelerometer chips) as a single composite virtual gamepad over D-Bus, with per-game profiles, gyro-to-mouse mapping, and capability transformation. Originally written for the ChimeraOS / ShadowBlip stack and adopted by ROCKNIX as the canonical input layer for SM8550-class devices including the AYANEO Pocket DS. %prep # Tarball top-level dir is plain "inputplumber" (no version suffix), # so override the default subdir name. %setup -q -n inputplumber %build # Nothing to build — prebuilt binary release. %install mkdir -p %{buildroot} cp -a usr %{buildroot}/usr # Sanity check: the binary must be present. test -x %{buildroot}%{_bindir}/inputplumber %post %systemd_post inputplumber.service inputplumber-suspend.service %preun %systemd_preun inputplumber.service inputplumber-suspend.service %postun %systemd_postun_with_restart inputplumber.service %files %{_bindir}/inputplumber %{_unitdir}/inputplumber.service %{_unitdir}/inputplumber-suspend.service %{_udevrulesdir}/90-inputplumber-autostart.rules %{_udevrulesdir}/99-inputplumber-device-setup.rules %{_udevhwdbdir}/59-inputplumber.hwdb %{_udevhwdbdir}/60-inputplumber-autostart.hwdb %{_datadir}/dbus-1/system.d/org.shadowblip.InputPlumber.conf %{_datadir}/polkit-1/actions/org.shadowblip.InputPlumber.policy %{_datadir}/polkit-1/rules.d/org.shadowblip.InputPlumber.rules %{_datadir}/inputplumber/ %changelog %autochangelog