%global debug_package %{nil} URL: https://github.com/MCC45TR/uke-linux-hardware-support Source0: uke-boot-integration-1.8.11.tar.xz ExclusiveArch: aarch64 BuildRequires: bluez-libs-devel BuildRequires: dbus-daemon systemd-udev pkgconfig(umockdev-1.0) BuildRequires: gcc-c++ make systemd-rpm-macros BuildRequires: jq BuildRequires: openssl-devel BuildRequires: pkgconfig(fdisk) pkgconfig(zlib) util-linux BuildRequires: pkgconfig(libdrm) BuildRequires: pkgconfig(libsystemd) pkgconfig(wayland-client) pkgconfig(wayland-server) Name: uke-boot-integration Version: 1.8.11 Release: 1.fc46 License: MIT AND GPL-3.0-or-later AND Apache-2.0 Summary: Uke image configuration and native boot integration Requires: senemos-native-runtime(libstdc++) Requires: kmod bash systemd NetworkManager openssh-server chrony Requires: util-linux-core coreutils grep Requires: systemd-udev Requires: bluez Requires: uke-firmware >= 3.0.304.0 Requires: senemos-uke-linux-kernel-mainline-modules >= 7.2.9-1.53.native53 Requires(pre): rpm systemd coreutils sed Requires(post): systemd Requires(posttrans): systemd coreutils sed Provides: uke-usb-gadget-ownership-api = 2 Provides: uke-usb-manual-cdc-api = 2 Provides: uke-boot-integration(native-platform-profile-ready-v1) = 1 Provides: uke-boot-integration(factory-wlan-v1) = 1 Provides: uke-wifi-factory = 1.8.11-1.fc46 Obsoletes: uke-wifi-factory < 1.8.11-1.fc46 Provides: uke-boot-integration(factory-bluetooth-v1) = 1 Provides: uke-bluetooth = 1.8.11-1.fc46 Obsoletes: uke-bluetooth < 1.8.11-1.fc46 Provides: uke-boot-integration(touch-runtime-v1) = 1 Provides: uke-boot-integration(kernel-touch-dispatch-v1) = 1 Provides: uke-boot-integration(kernel-touch-input-v1) = 1 Provides: uke-boot-integration(kernel-touch-input-v2) = 1 Provides: uke-touchscreen = 1.8.11-1.fc46 Obsoletes: uke-touchscreen < 1.8.11-1.fc46 %description -n uke-boot-integration Reviewed Uke partition-role, command-line and dracut input templates, with a native read-only prerequisite inspection command. Templates require explicit host-composer application; installation does not regenerate initramfs, select a default boot entry, alter EFI variables or write Android partitions. No UEFI firmware or proprietary firmware blob is included. Package success does not establish RAM/UFS/firmware handoff or physical tablet boot. %package -n uke-esp32-cdc Version: 1.8.11 Release: 1.fc46 License: MIT Summary: Native ESP32-S3 CDC journal forwarding for the Uke Core debug profile Requires: uke-boot-integration = 1.8.11-1.fc46 Requires: systemd senemos-native-runtime(libstdc++) %description -n uke-esp32-cdc Native raw-TTY configuration and real-root journal forwarding to an explicitly configured ttyACM USB-host port. Core composition may apply the separate original systemd debug-shell override for HID-driven VT2 commands and journal output. Installation activates no service, gadget, boot entry or partition write. %package -n uke-boot-recovery Version: 1.8.11 Release: 1.fc46 License: MIT Summary: Native Uke reboot commands and a three-minute startup recovery guard Requires: uke-boot-integration = 1.8.11-1.fc46 Requires: systemd systemd-udev %description -n uke-boot-recovery C++ recovery/bootloader commands and a native readiness observer. Installing this optional development package enables the guard on subsequent boots and provides local reboot aliases without replacing Fedora-owned executables. The host composer must include its dracut module to cover initramfs stalls. No Android, boot, EFI or partition data is written by package installation. %package -n uke-cdc-debug Version: 1.8.11 Release: 1.fc46 License: MIT Summary: Explicit local USB serial development console for Uke Requires: uke-boot-integration = 1.8.11-1.fc46 Requires: bash systemd %description -n uke-cdc-debug Original Bash development console over the standard CDC ACM gadget. It requires the explicit senemos.debug=cdc-acm kernel argument and manual service enablement. The console grants local root access over USB. USB networking stays optional. %package -n uke-kernel-update Version: 1.8.11 Release: 1.fc46 License: MIT Summary: Native checked installation of matched Uke stock-ABL kernel bundles Requires: senemos-native-runtime(libstdc++) openssl-libs rpm Requires: systemd >= 254 Requires: uke-installation-profile = 1.8.11-1.fc46 Provides: uke-kernel-update(userdata-ab) = 1 Provides: uke-kernel-update(guarded-automatic) = 1 Provides: uke-kernel-update(transaction-v1) = 1 Provides: uke-kernel-update(final-transaction-v2) = 1 Provides: uke-kernel-update(root-filesystem-v2) = 1 Provides: uke-kernel-update(current-slot-restore) = 1 Provides: uke-kernel-update(kernel-touch-client-v1) = 1 Provides: uke-kernel-update(userdata-fallback-v1) = 1 Provides: uke-kernel-update(qualified-firmware-cohort-v1) = 1 %description -n uke-kernel-update Validates matched installed boot-v4 payloads and module inventories. The Linux root profile retains its opt-in boot_b writer. The userdata profile writes an inactive boot slot and selects the QTI slot only after full readback, coherent GPT/boot-LUN checks and durable backups. Boot health accepts a matching trial. Automatic staging requires both the global and userdata policies to be enabled; the global default is disabled. Failed alternating trials select the verified accepted slot and request a normal reboot after bounded health retries. Physical power-loss recovery requires device validation. %package -n uke-installation-profile Version: 1.8.11 Release: 1.fc46 License: MIT Summary: Native classification of the Uke Linux root partition Requires: senemos-native-runtime(libstdc++) systemd Requires: /usr/lib/systemd/systemd-growfs Requires: uke-boot-integration = 1.8.11-1.fc46 %description -n uke-installation-profile Verifies the physical UFS root and exact Linux or userdata selector. Repairs only the legacy unknown record after fresh inspection. State is private and durable; classification does not write block devices or select a boot slot. %prep %setup -q ( mkdir -p "%{_builddir}/uke-boot-integration-1.8.11/work/uke-boot-integration" cd '%{_builddir}/uke-boot-integration-1.8.11/work/uke-boot-integration' rm -rf 'uke-boot-integration-1.8.11' /usr/bin/rpmuncompress -x '%{_builddir}/uke-boot-integration-1.8.11/inputs/uke-boot-integration/uke-boot-integration-1.8.11.tar.xz' STATUS=$? if [ $STATUS -ne 0 ]; then exit $STATUS fi cd 'uke-boot-integration-1.8.11' /usr/bin/chmod -Rf a+rX,u+w,g-w,o-w . cp touch-runtime/legacy/src/upstream/nt36532-thp/LICENSE THP-LICENSE ) %build ( cd "%{_builddir}/uke-boot-integration-1.8.11/work/uke-boot-integration/uke-boot-integration-1.8.11" g++ -O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Wno-complain-wrong-lang -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 -ffile-prefix-map=$PWD=. src/boot-status.cpp -o uke-boot-status -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 g++ -O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Wno-complain-wrong-lang -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 -ffile-prefix-map=$PWD=. src/usb-port.cpp -o uke-usb-port $(pkg-config --cflags --libs libsystemd libdrm) -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 g++ -O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Wno-complain-wrong-lang -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 -ffile-prefix-map=$PWD=. src/esp32-cdc.cpp -o uke-esp32-cdc -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 g++ -O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Wno-complain-wrong-lang -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 -ffile-prefix-map=$PWD=. src/wifi-factory.cpp -o uke-wifi-factory -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 g++ -O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Wno-complain-wrong-lang -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++20 -Wall -Wextra -Werror -ffile-prefix-map=$PWD=. src/bluetooth-address.cpp -o uke-bluetooth-address -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 g++ -O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Wno-complain-wrong-lang -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 -ffile-prefix-map=$PWD=. src/boot-guard.cpp -o uke-boot-guard $(pkg-config --cflags --libs libsystemd wayland-client) -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 g++ -O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Wno-complain-wrong-lang -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 -ffile-prefix-map=$PWD=. src/reboot.cpp -o uke-reboot $(pkg-config --cflags --libs libsystemd) -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 g++ -O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Wno-complain-wrong-lang -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++20 -Wall -Wextra -Werror -ffile-prefix-map=$PWD=. src/kernel-update.cpp -o uke-kernel-update $(pkg-config --cflags --libs fdisk zlib openssl libsystemd) -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 g++ -O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Wno-complain-wrong-lang -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++20 -Wall -Wextra -Werror -ffile-prefix-map=$PWD=. src/install-profile.cpp -o uke-install-profile -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 g++ -O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Wno-complain-wrong-lang -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 -ffile-prefix-map=$PWD=. src/native-profile-ready.cpp -o uke-native-power-profile-ready $(pkg-config --cflags --libs libsystemd) -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 g++ -O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Wno-complain-wrong-lang -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++20 -Wall -Wextra -Werror -ffile-prefix-map=$PWD=. src/touch-launcher.cpp -o uke-touchscreen -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 g++ -O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Wno-complain-wrong-lang -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++20 -Wall -Wextra -Werror -Wno-unused-function -ffile-prefix-map=$PWD=. touch-runtime/legacy/src/touch-thp.cpp touch-runtime/legacy/src/upstream/nt36532-thp/nvt_touch_core.cpp -lcrypto -lsystemd -o uke-touch-thp -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 ) %install ( cd "%{_builddir}/uke-boot-integration-1.8.11/work/uke-boot-integration/uke-boot-integration-1.8.11" install -Dm644 src/profiles/60-uke-security.conf %{buildroot}/usr/lib/sysctl.d/60-uke-security.conf install -Dm755 uke-touchscreen %{buildroot}/usr/libexec/senemos-uke/uke-touchscreen install -Dm755 uke-touch-thp %{buildroot}/usr/libexec/senemos-uke/uke-touch-thp install -d %{buildroot}/usr/lib/systemd/system sed 's@ExecStart=/usr/libexec/senemos-uke/uke-touch-thp --daemon@ExecCondition=/usr/libexec/senemos-uke/uke-touchscreen --userspace-needed\nExecStart=/usr/libexec/senemos-uke/uke-touchscreen --daemon@' touch-runtime/legacy/src/units/uke-touchscreen.service > %{buildroot}/usr/lib/systemd/system/uke-touchscreen.service install -Dm644 touch-runtime/legacy/src/units/80-uke-touchscreen.preset %{buildroot}/usr/lib/systemd/system-preset/80-uke-touchscreen.preset install -Dm644 touch-runtime/legacy/src/udev/70-uke-touchscreen.rules %{buildroot}/usr/lib/udev/rules.d/70-uke-touchscreen.rules install -Dm644 touch-runtime/legacy/src/modules-load.d/uke-touchscreen.conf %{buildroot}/usr/lib/modules-load.d/uke-touchscreen.conf install -Dm644 touch-runtime/legacy/src/modprobe.d/uke-touchscreen.conf %{buildroot}/usr/lib/modprobe.d/uke-touchscreen.conf install -d %{buildroot}/usr/lib/firmware/novatek/uke ln -s /usr/lib/firmware/qcom/uke/touch/csot/normal.bin %{buildroot}/usr/lib/firmware/novatek/uke/nt36532-normal.bin install -Dm644 src/units/70-uke-chronyd-clock.conf %{buildroot}/usr/lib/systemd/system/chronyd.service.d/70-uke-clock.conf install -Dm755 uke-boot-status %{buildroot}/usr/bin/uke-boot-status install -Dm755 uke-native-power-profile-ready %{buildroot}/usr/libexec/senemos-uke/uke-native-power-profile-ready install -Dm644 src/units/uke-native-power-profile-ready.service %{buildroot}/usr/lib/systemd/system/uke-native-power-profile-ready.service install -Dm644 src/profiles/72-uke-native-power-profile.rules %{buildroot}/usr/lib/udev/rules.d/72-uke-native-power-profile.rules install -Dm755 uke-usb-port %{buildroot}/usr/bin/uke-usb-port install -Dm644 src/units/uke-usb-observer.service %{buildroot}/usr/lib/systemd/system/uke-usb-observer.service install -Dm644 src/profiles/org.senemos.Uke.USB1.conf %{buildroot}/usr/share/dbus-1/system.d/org.senemos.Uke.USB1.conf install -Dm755 uke-wifi-factory %{buildroot}/usr/libexec/senemos-uke/uke-wifi-factory install -Dm644 src/units/uke-wifi-factory.service %{buildroot}/usr/lib/systemd/system/uke-wifi-factory.service install -Dm755 uke-bluetooth-address %{buildroot}/usr/libexec/uke-bluetooth-address install -Dm644 packaging/uke-bluetooth-address.service %{buildroot}/usr/lib/systemd/system/uke-bluetooth-address.service install -Dm644 packaging/70-uke-bluetooth.rules %{buildroot}/usr/lib/udev/rules.d/70-uke-bluetooth.rules install -d %{buildroot}/usr/share/senemos/boot/uke install -m644 src/profiles/* %{buildroot}/usr/share/senemos/boot/uke/ install -Dm644 src/units/uke-cdc-acm.service %{buildroot}/usr/lib/systemd/system/uke-cdc-acm.service install -Dm644 src/units/uke-cdc-shell.service %{buildroot}/usr/lib/systemd/system/uke-cdc-shell.service install -Dm755 src/uke-usb-network.sh %{buildroot}/usr/libexec/senemos-uke/uke-usb-network install -Dm644 src/profiles/usb-sharing %{buildroot}/etc/senemos/usb-sharing install -Dm644 src/profiles/80-uke-usb.preset %{buildroot}/usr/lib/systemd/system-preset/80-uke-usb.preset install -Dm644 src/units/uke-usb-network.service %{buildroot}/usr/lib/systemd/system/uke-usb-network.service install -Dm644 src/units/uke-usb-network-shell.service %{buildroot}/usr/lib/systemd/system/uke-usb-network-shell.service install -Dm644 src/profiles/uke-coresight-bringup.conf %{buildroot}/usr/lib/modprobe.d/uke-coresight-bringup.conf install -Dm755 uke-esp32-cdc %{buildroot}/usr/libexec/senemos-uke/uke-esp32-cdc install -Dm644 src/units/uke-esp32-cdc-log.service %{buildroot}/usr/lib/systemd/system/uke-esp32-cdc-log.service install -Dm755 uke-reboot %{buildroot}/usr/bin/uke-reboot install -Dm755 uke-kernel-update %{buildroot}/usr/bin/uke-kernel-update install -Dm644 src/profiles/kernel-update.conf %{buildroot}/etc/senemos/kernel-update.conf install -Dm644 src/profiles/userdata-update.conf %{buildroot}/etc/senemos/userdata-update.conf install -Dm644 src/profiles/80-uke-boot.preset %{buildroot}/usr/lib/systemd/system-preset/80-uke-boot.preset install -Dm644 src/units/uke-userdata-accept.service %{buildroot}/usr/lib/systemd/system/uke-userdata-accept.service install -Dm644 src/units/uke-userdata-fallback.service %{buildroot}/usr/lib/systemd/system/uke-userdata-fallback.service install -Dm755 uke-install-profile %{buildroot}/usr/libexec/senemos-uke/uke-install-profile install -Dm644 src/units/uke-install-profile.service %{buildroot}/usr/lib/systemd/system/uke-install-profile.service install -Dm644 src/units/uke-root-grow.service %{buildroot}/usr/lib/systemd/system/uke-root-grow.service install -Dm755 uke-boot-guard %{buildroot}/usr/libexec/senemos-uke/uke-boot-guard install -Dm644 src/units/uke-boot-guard.service %{buildroot}/usr/lib/systemd/system/uke-boot-guard.service install -Dm644 src/profiles/uke-reboot.conf %{buildroot}/usr/lib/modules-load.d/uke-reboot.conf install -Dm755 src/dracut/93uke-boot-guard/module-setup.sh %{buildroot}/usr/lib/dracut/modules.d/93uke-boot-guard/module-setup.sh install -d %{buildroot}/usr/lib/systemd/system/sysinit.target.wants %{buildroot}/usr/local/{bin,sbin} ln -s ../uke-boot-guard.service %{buildroot}/usr/lib/systemd/system/sysinit.target.wants/uke-boot-guard.service ln -s ../../../usr/bin/uke-reboot %{buildroot}/usr/local/bin/reboot ln -s ../../../usr/bin/uke-reboot %{buildroot}/usr/local/sbin/reboot ) %check ( cd "%{_builddir}/uke-boot-integration-1.8.11/work/uke-boot-integration/uke-boot-integration-1.8.11" cmp src/profiles/60-uke-security.conf %{buildroot}/usr/lib/sysctl.d/60-uke-security.conf bash tests/installation-policy.sh bash tests/slot-control.sh bash tests/userdata-update.sh g++ -std=c++20 -O2 -Wall -Wextra -Werror tests/touch-health.cpp -o touch-health-contract ./touch-health-contract g++ -std=c++17 -O2 -Wall -Wextra -Werror tests/usb-port.cpp -o usb-port-contract ./usb-port-contract bash tests/usb-inventory.sh bash tests/usb-auto.sh bash tests/usb-ownership.sh g++ -std=c++17 -Wall -Wextra -Werror -O2 tests/wifi-factory.cpp -o wifi-factory-contract ./wifi-factory-contract g++ -std=c++20 -O2 -Wall -Wextra -Werror -Wno-unused-function tests/bluetooth-address.cpp -o bluetooth-address-contract ./bluetooth-address-contract bash tests/startup-contract.sh bash tests/startup-native.sh g++ -std=c++20 -O2 -Wall -Wextra -Werror tests/kernel-update.cpp -o kernel-update-contract $(pkg-config --cflags --libs fdisk zlib openssl libsystemd) ./kernel-update-contract g++ -std=c++17 -O2 -Wall -Wextra -Werror -pthread tests/native-profile-ready.cpp -o native-profile-ready-contract $(pkg-config --cflags --libs libsystemd) bash tests/native-profile-ready.sh ./native-profile-ready-contract g++ -std=c++17 -O2 -Wall -Wextra -Werror tests/native-profile-udev.cpp -o native-profile-udev-contract $(pkg-config --cflags --libs umockdev-1.0) timeout --signal=KILL 25 umockdev-wrapper ./native-profile-udev-contract "$PWD/tests/native-profile-udev.sh" g++ -std=c++20 -O2 -Wall -Wextra -Werror tests/touch-launcher.cpp -o touch-launcher-contract ./touch-launcher-contract g++ -std=c++20 -O2 -Wall -Wextra -Werror touch-runtime/legacy/tests/touch-input.cpp touch-runtime/legacy/src/upstream/nt36532-thp/nvt_touch_core.cpp -lcrypto -lsystemd -o touch-input-contract ./touch-input-contract g++ -std=c++20 -O2 -Wall -Wextra -Werror touch-runtime/legacy/tests/touch-normal-probe.cpp -lcrypto -o touch-normal-contract ./touch-normal-contract g++ -std=c++20 -O2 -Wall -Wextra -Werror touch-runtime/legacy/tests/touch-assignment.cpp -o touch-assignment-contract timeout 15 bash -c 'ulimit -v 262144; exec ./touch-assignment-contract' ) %pre -n uke-boot-integration ( old=uke-bluetooth; new=uke-boot-integration; unit=uke-bluetooth-address.service; phase=save # POSIX shell fragment embedded only in RPM migration scriptlets. # Restore the admitted state; never enable a previously disabled hardware path. case "$phase" in save) [ -d /run/systemd/system ] || exit 0 test "$(rpm -q --qf '%%{NAME}' "$old" 2>/dev/null)" = "$old" || exit 0 state=/run/uke-rpm-migration [ ! -L "$state" ] && [ ! -L "$state/$new" ] || exit 1 install -d -m700 "$state" enabled=$(systemctl is-enabled "$unit" 2>/dev/null) || : active=$(systemctl is-active "$unit" 2>/dev/null) || : case "$enabled" in enabled|enabled-runtime|disabled|static|indirect|masked|masked-runtime) ;; *) exit 1;; esac case "$active" in active|inactive|failed|activating|deactivating) ;; *) exit 1;; esac (umask 077; printf '%%s\n%%s\n' "$enabled" "$active" >"$state/$new") ;; restore) if [ "$new" = uke-iio-sensor-proxy ]; then if /usr/bin/selinuxenabled; then /usr/bin/semodule -i /usr/share/selinux/packages/uke-ssc.cil || exit 1 else /usr/bin/semodule -n -s targeted -i /usr/share/selinux/packages/uke-ssc.cil || exit 1 fi fi state=/run/uke-rpm-migration [ -f "$state/$new" ] && [ ! -L "$state" ] && [ ! -L "$state/$new" ] || exit 0 enabled=$(sed -n '1p' "$state/$new") active=$(sed -n '2p' "$state/$new") current=$(systemctl is-enabled "$unit" 2>/dev/null) || : case "$current" in masked|masked-runtime) unlink "$state/$new"; exit 0;; esac systemctl daemon-reload || exit 1 case "$enabled" in enabled) systemctl enable "$unit" || exit 1;; enabled-runtime) systemctl enable --runtime "$unit" || exit 1;; masked|masked-runtime) unlink "$state/$new"; exit 0;; esac if [ "$active" = active ]; then systemctl start "$unit" || exit 1; fi unlink "$state/$new" ;; *) exit 1;; esac ) || exit 1 ( old=uke-touchscreen; new=uke-boot-integration-touch; unit=uke-touchscreen.service; phase=save # POSIX shell fragment embedded only in RPM migration scriptlets. # Restore the admitted state; never enable a previously disabled hardware path. case "$phase" in save) [ -d /run/systemd/system ] || exit 0 test "$(rpm -q --qf '%%{NAME}' "$old" 2>/dev/null)" = "$old" || exit 0 state=/run/uke-rpm-migration [ ! -L "$state" ] && [ ! -L "$state/$new" ] || exit 1 install -d -m700 "$state" enabled=$(systemctl is-enabled "$unit" 2>/dev/null) || : active=$(systemctl is-active "$unit" 2>/dev/null) || : case "$enabled" in enabled|enabled-runtime|disabled|static|indirect|masked|masked-runtime) ;; *) exit 1;; esac case "$active" in active|inactive|failed|activating|deactivating) ;; *) exit 1;; esac (umask 077; printf '%%s\n%%s\n' "$enabled" "$active" >"$state/$new") ;; restore) if [ "$new" = uke-iio-sensor-proxy ]; then if /usr/bin/selinuxenabled; then /usr/bin/semodule -i /usr/share/selinux/packages/uke-ssc.cil || exit 1 else /usr/bin/semodule -n -s targeted -i /usr/share/selinux/packages/uke-ssc.cil || exit 1 fi fi state=/run/uke-rpm-migration [ -f "$state/$new" ] && [ ! -L "$state" ] && [ ! -L "$state/$new" ] || exit 0 enabled=$(sed -n '1p' "$state/$new") active=$(sed -n '2p' "$state/$new") current=$(systemctl is-enabled "$unit" 2>/dev/null) || : case "$current" in masked|masked-runtime) unlink "$state/$new"; exit 0;; esac systemctl daemon-reload || exit 1 case "$enabled" in enabled) systemctl enable "$unit" || exit 1;; enabled-runtime) systemctl enable --runtime "$unit" || exit 1;; masked|masked-runtime) unlink "$state/$new"; exit 0;; esac if [ "$active" = active ]; then systemctl start "$unit" || exit 1; fi unlink "$state/$new" ;; *) exit 1;; esac ) || exit 1 %post -n uke-boot-integration if [ $1 -eq 1 ] && [ -x "/usr/lib/systemd/systemd-update-helper" ]; then # Initial installation /usr/lib/systemd/systemd-update-helper install-system-units uke-touchscreen.service || : fi [ -x /usr/lib/systemd/systemd-sysctl ] && /usr/lib/systemd/systemd-sysctl --prefix=/kernel/kptr_restrict --prefix=/kernel/dmesg_restrict || : /usr/bin/udevadm control --reload >/dev/null 2>&1 || : %preun -n uke-boot-integration 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-touchscreen.service || : fi %postun -n uke-boot-integration if [ $1 -ge 1 ] && [ -x "/usr/lib/systemd/systemd-update-helper" ]; then # Package upgrade, not uninstall /usr/lib/systemd/systemd-update-helper mark-restart-system-units uke-touchscreen.service || : fi /usr/bin/udevadm control --reload >/dev/null 2>&1 || : %posttrans -n uke-boot-integration ( old=uke-bluetooth; new=uke-boot-integration; unit=uke-bluetooth-address.service; phase=restore # POSIX shell fragment embedded only in RPM migration scriptlets. # Restore the admitted state; never enable a previously disabled hardware path. case "$phase" in save) [ -d /run/systemd/system ] || exit 0 test "$(rpm -q --qf '%%{NAME}' "$old" 2>/dev/null)" = "$old" || exit 0 state=/run/uke-rpm-migration [ ! -L "$state" ] && [ ! -L "$state/$new" ] || exit 1 install -d -m700 "$state" enabled=$(systemctl is-enabled "$unit" 2>/dev/null) || : active=$(systemctl is-active "$unit" 2>/dev/null) || : case "$enabled" in enabled|enabled-runtime|disabled|static|indirect|masked|masked-runtime) ;; *) exit 1;; esac case "$active" in active|inactive|failed|activating|deactivating) ;; *) exit 1;; esac (umask 077; printf '%%s\n%%s\n' "$enabled" "$active" >"$state/$new") ;; restore) if [ "$new" = uke-iio-sensor-proxy ]; then if /usr/bin/selinuxenabled; then /usr/bin/semodule -i /usr/share/selinux/packages/uke-ssc.cil || exit 1 else /usr/bin/semodule -n -s targeted -i /usr/share/selinux/packages/uke-ssc.cil || exit 1 fi fi state=/run/uke-rpm-migration [ -f "$state/$new" ] && [ ! -L "$state" ] && [ ! -L "$state/$new" ] || exit 0 enabled=$(sed -n '1p' "$state/$new") active=$(sed -n '2p' "$state/$new") current=$(systemctl is-enabled "$unit" 2>/dev/null) || : case "$current" in masked|masked-runtime) unlink "$state/$new"; exit 0;; esac systemctl daemon-reload || exit 1 case "$enabled" in enabled) systemctl enable "$unit" || exit 1;; enabled-runtime) systemctl enable --runtime "$unit" || exit 1;; masked|masked-runtime) unlink "$state/$new"; exit 0;; esac if [ "$active" = active ]; then systemctl start "$unit" || exit 1; fi unlink "$state/$new" ;; *) exit 1;; esac ) || exit 1 ( old=uke-touchscreen; new=uke-boot-integration-touch; unit=uke-touchscreen.service; phase=restore # POSIX shell fragment embedded only in RPM migration scriptlets. # Restore the admitted state; never enable a previously disabled hardware path. case "$phase" in save) [ -d /run/systemd/system ] || exit 0 test "$(rpm -q --qf '%%{NAME}' "$old" 2>/dev/null)" = "$old" || exit 0 state=/run/uke-rpm-migration [ ! -L "$state" ] && [ ! -L "$state/$new" ] || exit 1 install -d -m700 "$state" enabled=$(systemctl is-enabled "$unit" 2>/dev/null) || : active=$(systemctl is-active "$unit" 2>/dev/null) || : case "$enabled" in enabled|enabled-runtime|disabled|static|indirect|masked|masked-runtime) ;; *) exit 1;; esac case "$active" in active|inactive|failed|activating|deactivating) ;; *) exit 1;; esac (umask 077; printf '%%s\n%%s\n' "$enabled" "$active" >"$state/$new") ;; restore) if [ "$new" = uke-iio-sensor-proxy ]; then if /usr/bin/selinuxenabled; then /usr/bin/semodule -i /usr/share/selinux/packages/uke-ssc.cil || exit 1 else /usr/bin/semodule -n -s targeted -i /usr/share/selinux/packages/uke-ssc.cil || exit 1 fi fi state=/run/uke-rpm-migration [ -f "$state/$new" ] && [ ! -L "$state" ] && [ ! -L "$state/$new" ] || exit 0 enabled=$(sed -n '1p' "$state/$new") active=$(sed -n '2p' "$state/$new") current=$(systemctl is-enabled "$unit" 2>/dev/null) || : case "$current" in masked|masked-runtime) unlink "$state/$new"; exit 0;; esac systemctl daemon-reload || exit 1 case "$enabled" in enabled) systemctl enable "$unit" || exit 1;; enabled-runtime) systemctl enable --runtime "$unit" || exit 1;; masked|masked-runtime) unlink "$state/$new"; exit 0;; esac if [ "$active" = active ]; then systemctl start "$unit" || exit 1; fi unlink "$state/$new" ;; *) exit 1;; esac ) || exit 1 %post -n uke-kernel-update if [ $1 -eq 1 ] && [ -x "/usr/lib/systemd/systemd-update-helper" ]; then # Initial installation /usr/lib/systemd/systemd-update-helper install-system-units uke-userdata-accept.service || : fi %preun -n uke-kernel-update 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-userdata-accept.service || : fi %postun -n uke-kernel-update %post -n uke-installation-profile if [ $1 -eq 1 ] && [ -x "/usr/lib/systemd/systemd-update-helper" ]; then # Initial installation /usr/lib/systemd/systemd-update-helper install-system-units uke-root-grow.service || : fi %preun -n uke-installation-profile 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-root-grow.service || : fi # Retire only our generated policy, including when downgrading to an older classifier. if [ "$(readlink /etc/tmpfiles.d/journal-nocow.conf 2>/dev/null)" = '/usr/share/senemos/boot/uke/journal-nocow-disabled.conf' ]; then rm -f /etc/tmpfiles.d/journal-nocow.conf fi %postun -n uke-installation-profile %posttrans -n uke-installation-profile if [ -d /run/systemd/system ] && [ -r /sys/firmware/devicetree/base/compatible ]; then /usr/libexec/senemos-uke/uke-install-profile reconcile || : fi %transfiletriggerin -n uke-kernel-update -- /usr/lib/senemos/kernel-updates /usr/lib/senemos/default-boot.img if [ -d /run/systemd/system ] && [ -r /sys/firmware/devicetree/base/compatible ]; then if ! /usr/bin/uke-kernel-update auto; then echo 'Uke automatic boot update refused; inspect the reported cause before rebooting.' >&2 exit 1 fi fi %files -n uke-boot-integration %license work/uke-boot-integration/uke-boot-integration-1.8.11/LICENSE %license work/uke-boot-integration/uke-boot-integration-1.8.11/LICENSE.GPL-3.0 %license work/uke-boot-integration/uke-boot-integration-1.8.11/THP-LICENSE %doc work/uke-boot-integration/uke-boot-integration-1.8.11/README.md %doc work/uke-boot-integration/uke-boot-integration-1.8.11/docs/BLUETOOTH.md %doc work/uke-boot-integration/uke-boot-integration-1.8.11/docs/USB-TYPEC.md %doc work/uke-boot-integration/uke-boot-integration-1.8.11/docs/NATIVE-POWER-PROFILES.md %doc work/uke-boot-integration/uke-boot-integration-1.8.11/docs/TOUCH-RUNTIME.md /usr/libexec/senemos-uke/uke-native-power-profile-ready /usr/libexec/senemos-uke/uke-touchscreen /usr/libexec/senemos-uke/uke-touch-thp /usr/lib/systemd/system/uke-touchscreen.service /usr/lib/systemd/system-preset/80-uke-touchscreen.preset /usr/lib/udev/rules.d/70-uke-touchscreen.rules /usr/lib/modules-load.d/uke-touchscreen.conf /usr/lib/modprobe.d/uke-touchscreen.conf %dir /usr/lib/firmware/novatek %dir /usr/lib/firmware/novatek/uke /usr/lib/firmware/novatek/uke/nt36532-normal.bin /usr/lib/systemd/system/uke-native-power-profile-ready.service /usr/lib/udev/rules.d/72-uke-native-power-profile.rules /usr/libexec/senemos-uke/uke-wifi-factory /usr/lib/systemd/system/uke-wifi-factory.service /usr/libexec/uke-bluetooth-address /usr/lib/systemd/system/uke-bluetooth-address.service /usr/lib/udev/rules.d/70-uke-bluetooth.rules /usr/bin/uke-boot-status /usr/bin/uke-usb-port /usr/lib/systemd/system/uke-usb-observer.service /usr/share/dbus-1/system.d/org.senemos.Uke.USB1.conf /usr/lib/systemd/system/chronyd.service.d/70-uke-clock.conf /usr/lib/systemd/system-preset/80-uke-boot.preset /usr/share/senemos/boot/uke /usr/lib/systemd/system/uke-cdc-acm.service /usr/libexec/senemos-uke/uke-usb-network %config(noreplace) /etc/senemos/usb-sharing /usr/lib/systemd/system-preset/80-uke-usb.preset /usr/lib/systemd/system/uke-usb-network.service /usr/lib/systemd/system/uke-usb-network-shell.service /usr/lib/modprobe.d/uke-coresight-bringup.conf /usr/lib/sysctl.d/60-uke-security.conf %files -n uke-esp32-cdc %license work/uke-boot-integration/uke-boot-integration-1.8.11/LICENSE /usr/libexec/senemos-uke/uke-esp32-cdc /usr/lib/systemd/system/uke-esp32-cdc-log.service %files -n uke-cdc-debug /usr/lib/systemd/system/uke-cdc-shell.service %files -n uke-kernel-update %license work/uke-boot-integration/uke-boot-integration-1.8.11/LICENSE %doc work/uke-boot-integration/uke-boot-integration-1.8.11/docs/KERNEL-UPDATES.md %doc work/uke-boot-integration/uke-boot-integration-1.8.11/docs/USERDATA-AB.md /usr/bin/uke-kernel-update %dir /etc/senemos %config(noreplace) /etc/senemos/kernel-update.conf %config(noreplace) /etc/senemos/userdata-update.conf /usr/lib/systemd/system/uke-userdata-accept.service /usr/lib/systemd/system/uke-userdata-fallback.service %files -n uke-installation-profile %license work/uke-boot-integration/uke-boot-integration-1.8.11/LICENSE %doc work/uke-boot-integration/uke-boot-integration-1.8.11/docs/USERDATA-AB.md /usr/libexec/senemos-uke/uke-install-profile /usr/lib/systemd/system/uke-install-profile.service /usr/lib/systemd/system/uke-root-grow.service %files -n uke-boot-recovery %license work/uke-boot-integration/uke-boot-integration-1.8.11/LICENSE /usr/bin/uke-reboot /usr/local/bin/reboot /usr/local/sbin/reboot /usr/libexec/senemos-uke/uke-boot-guard /usr/lib/systemd/system/uke-boot-guard.service /usr/lib/systemd/system/sysinit.target.wants/uke-boot-guard.service /usr/lib/modules-load.d/uke-reboot.conf /usr/lib/dracut/modules.d/93uke-boot-guard %changelog * Thu Oct 29 2026 Senemos Maintainers <75160848+MCC45TR@users.noreply.github.com> - 1.8.11-1.fc46 - Build this component independently from its reviewed source recipe.