%global debug_package %{nil} %global __strip /bin/true %global nabu_release 1.4.0.7 %global uname_r 6.17.0-nabu-senemos-v%{nabu_release} Name: senemos-nabu-kernel Epoch: 1 Version: 1.17.0 Release: 1.v%{nabu_release}%{?dist} Summary: SENEMOS kernel and unattended update integration for Xiaomi Pad 5 License: GPL-2.0-only AND MIT URL: https://copr.fedorainfracloud.org/coprs/mcc45tr/nabu-linux/ BuildArch: noarch Source0: nabu-v%{nabu_release}-rpm-payload.tar.gz Source1: nabu-kernel-update Source2: nabu-kernel-update.service Source3: nabu-kernel-update.timer Source4: 90-nabu-kernel-update.preset Source5: 91-nabu-late-xhci.conf Source6: 90-nabu-late-xhci.conf BuildRequires: systemd-rpm-macros Requires: senemos-nabu-kernel-core = %{epoch}:%{version}-%{release} Requires: senemos-nabu-kernel-modules = %{epoch}:%{version}-%{release} Requires: dnf5 Requires: systemd Obsoletes: senemos-nabu-kernel-v1.4.0.1 Obsoletes: senemos-nabu-kernel-v1.4.0.2 Provides: senemos-nabu-kernel-v1.4.0.2 %description The stable Nabu kernel package name is intentionally independent of the kernel release. DNF therefore treats future COPR builds as ordinary upgrades instead of unrelated packages. A narrow systemd timer updates only this package; its exact core and modules dependencies move in the same transaction. %package -n senemos-nabu-kernel-core Summary: Nabu v%{nabu_release} kernel image, device tree and UKI integration Requires(posttrans): kmod Requires(posttrans): nabu-uki-config >= 1.2.0 Provides: installonlypkg(kernel) Provides: kernel-uname-r Provides: kernel-nabu-core-uname-r %description -n senemos-nabu-kernel-core Kernel image, configuration, symbol map and Xiaomi Pad 5 device tree. After the RPM transaction it atomically regenerates the canonical SENEMOS UKI and boot entry while preserving the Android and fallback entries. %package -n senemos-nabu-kernel-modules Summary: Nabu v%{nabu_release} loadable modules Requires: senemos-nabu-kernel-core = %{epoch}:%{version}-%{release} Provides: installonlypkg(kernel) Provides: kernel-modules-uname-r %description -n senemos-nabu-kernel-modules Loadable modules for the SENEMOS Nabu v%{nabu_release} kernel. %prep %build %install mkdir -p %{buildroot} tar -xzf %{SOURCE0} -C %{buildroot} install -Dm0755 %{SOURCE1} %{buildroot}%{_libexecdir}/nabu-kernel-update install -Dm0644 %{SOURCE2} %{buildroot}%{_unitdir}/nabu-kernel-update.service install -Dm0644 %{SOURCE3} %{buildroot}%{_unitdir}/nabu-kernel-update.timer install -Dm0644 %{SOURCE4} %{buildroot}%{_presetdir}/90-nabu-kernel-update.preset install -Dm0644 %{SOURCE5} %{buildroot}%{_prefix}/lib/dracut/dracut.conf.d/90-nabu-omit-early-xhci.conf install -Dm0644 %{SOURCE6} %{buildroot}%{_prefix}/lib/modules-load.d/90-nabu-late-xhci.conf %check # Kernel payload archives become the authoritative RPM file metadata. Reject # an archive created from a developer-owned staging tree before it can publish # non-root ownership into /boot or /usr/lib/modules. if tar --numeric-owner -tvzf %{SOURCE0} | awk '$2 != "0/0" { print; bad=1; exit } END { exit bad }'; then : else echo 'Kernel payload contains a non-root owner.' >&2 exit 1 fi test -s %{buildroot}/boot/vmlinuz-%{uname_r} test -s %{buildroot}%{_prefix}/lib/modules/%{uname_r}/dtb/qcom/sm8150-xiaomi-nabu.dtb test -d %{buildroot}%{_prefix}/lib/modules/%{uname_r}/kernel %post %systemd_post nabu-kernel-update.timer %preun %systemd_preun nabu-kernel-update.timer %postun %systemd_postun nabu-kernel-update.timer %posttrans -n senemos-nabu-kernel-core if /usr/bin/nabu-regenerate-uki %{uname_r}; then install -d -m0755 /var/lib/nabu-kernel-update printf '%%s\n' '%{uname_r}' > /var/lib/nabu-kernel-update/installed-kernel else printf 'Warning: automatic Nabu UKI generation failed for %%s; the update timer will retry.\n' '%{uname_r}' >&2 fi %postun -n senemos-nabu-kernel-core if [ "$1" -eq 0 ]; then /usr/sbin/depmod -a || : fi %files %{_libexecdir}/nabu-kernel-update %{_unitdir}/nabu-kernel-update.service %{_unitdir}/nabu-kernel-update.timer %{_presetdir}/90-nabu-kernel-update.preset %{_prefix}/lib/dracut/dracut.conf.d/90-nabu-omit-early-xhci.conf %{_prefix}/lib/modules-load.d/90-nabu-late-xhci.conf %files -n senemos-nabu-kernel-core /boot/vmlinuz-%{uname_r} /boot/System.map-%{uname_r} /boot/config-%{uname_r} %{_prefix}/lib/modules/%{uname_r}/dtb/qcom/sm8150-xiaomi-nabu.dtb %{_prefix}/lib/modules/%{uname_r}/modules.* %files -n senemos-nabu-kernel-modules %{_prefix}/lib/modules/%{uname_r}/kernel/ %changelog * Tue Aug 25 2026 SENEMOS Project - 1:1.17.0-1.v1.4.0.7 - Add PM8150 PON bootloader and recovery reboot-mode values used by Nabu's included PM8150 device tree. - Declare the ath10k SNOC device wake-capable after modem initialization and release that capability during teardown so suspend WoWLAN can be armed. - Preserve the validated v1.4.0.6 kernel configuration except for the new release-localversion string. * Tue Aug 25 2026 SENEMOS Project - 1:1.17.0-1.v1.4.0.6 - Keep the experimental 90 Hz panel and touch implementation in the source, but hide it by default behind the expose_nabu_90hz module parameter. - Keep the Nabu DPU DSPP topology allocated and update CTM state without a full modeset so Night Light transitions do not blank the dual-DSI panel. - Reject developer-owned payload archives and publish root-owned kernel and module files. * Sun Aug 23 2026 SENEMOS Project - 1:1.17.0-1.v1.4.0.5 - Add Novatek low-power double-tap wake with a balanced SPI IRQ wake path. - Preserve the vendor 60/120 Hz TDDI commands and avoid unsupported scan-band writes at 90 Hz so the touch firmware does not enter its reset loop. - Correct qcom-fg charging-state polarity and initialize status from the charger supply. - Derive the readable RPM release suffix and uname from one dotted release value. Use an epoch once so DNF upgrades from the former 5.v1405 scheme. * Sun Aug 23 2026 SENEMOS Project - 1.17.0-5.v1405 - Install the late-XHCI rule as an immutable vendor dracut policy under a new basename so a stale empty /etc drop-in cannot mask the boot-time omission. * Sun Aug 23 2026 SENEMOS Project - 1.17.0-4.v1405 - Replace stale or empty copies of the hardware-owned late-XHCI dracut policy while retaining the previous file as an RPM backup. * Sun Aug 23 2026 SENEMOS Project - 1.17.0-3.v1405 - Keep only the versioned core and modules payloads install-only. Upgrade the stable-name integration package normally so shared updater files are replaced instead of conflicting with retained older meta packages. * Sun Aug 23 2026 SENEMOS Project - 1.17.0-2.v1405 - Resolve the target kernel from the newest installed core NEVRA so retained install-only fallback kernels do not prevent canonical UKI regeneration. * Sun Aug 23 2026 SENEMOS Project - 1.17.0-1.v1405 - Keep the stable senemos-nabu-kernel package name and the established 6.17.0-nabu-senemos-v1.4.0.4 uname format. - Use the vendor low TDDI scan band for the additional 90 Hz mode so the 120 Hz command cannot reset the NVT touch firmware at 90 Hz. - Defer optional XHCI/pogo-keyboard probing until the real root so failed USB enumeration cannot hold the kernel before /init. * Sat Aug 22 2026 SENEMOS Project - 1.4.0.3-5.test - Keep the running legacy core and modules installed during the stable-name migration instead of obsoleting their live files. - Mark the stable kernel package set as install-only so normal DNF updates can retain the running kernel without disabling its safety protection. * Sat Aug 22 2026 SENEMOS Project - 1.4.0.3-4.test - Preserve every complete fallback module tree even when its top-level directory is not explicitly owned by RPM. - Fail the unattended check if an existing Android or GNOME fallback entry has lost its EFI payload. * Sat Aug 22 2026 SENEMOS Project - 1.4.0.3-3.test - Resolve the target uname from the installed stable core RPM instead of comparing human release labels such as v1.37 and v1.4.0.3. - Verify the canonical entry names that exact UKI, allow ten minutes for UKI generation, and remove only unowned stale module trees after reboot. * Sat Aug 22 2026 SENEMOS Project - 1.4.0.3-2.test - Allow the narrow updater to replace the currently running previous Nabu RPM; the immutable v1.37 EFI fallback remains available until the next reboot. * Sat Aug 22 2026 SENEMOS Project - 1.4.0.3-1.test - Use stable RPM names so future COPR builds are normal DNF upgrades. - Add a persistent narrow update timer and post-transaction UKI generation. - Replace the prior kernel payload and canonical UKI instead of accumulating version-named packages and boot entries. - Rebuild the Nabu DTB with the FastRPC accelerometer mount matrix used by GNOME automatic rotation.