Name: rocknix-abl Version: 1.0.3 Release: 1%{?dist} Summary: ROCKNIX-signed Qualcomm ABL bootloader for Ayaneo Pocket DS (SM8550) License: GPL-2.0-or-later AND LicenseRef-Qualcomm-redistributable URL: https://github.com/ROCKNIX/abl Source0: https://github.com/ROCKNIX/abl/releases/download/v%{version}/rocknix-abl-v%{version}.tar.gz Source1: updateabl Source2: flash_abl.sh.template Source3: backup_abl.sh Source4: restore_backup_abl.sh Source5: README ExclusiveArch: aarch64 # These all run on-device against /dev/block/by-name/abl_* Requires: util-linux Requires: coreutils Requires: /usr/sbin/blkid # Skip the arch_install post-checks: the abl_signed-SM8550.elf isn't a # regular ELF in our load path -- it's a signed boot payload to be flashed, # so no need for executable stack / debuginfo / etc. processing. %global _arch_install_post %{nil} %global debug_package %{nil} %description The Ayaneo Pocket DS ships with a stock Qualcomm-signed ABL (Android Bootloader) that boots into Android. ROCKNIX builds a re-signed ABL that boots a generic aarch64 Linux Image+DTB chain instead. This package ships: * /usr/share/bootloader/rocknix_abl/abl_signed-SM8550.elf -- the signed ABL * /usr/share/bootloader/rocknix_abl/{flash,backup,restore}_abl.sh -- helper scripts to flash from inside Android (sideloaded onto /sdcard) * /usr/bin/updateabl -- on-device updater that flashes /dev/block/by-name/abl_a and abl_b directly from Linux when the SHA-256 of the running ABL differs from the shipped one. Boot flow once flashed: ABL (this package) -> dtbloader -> systemd-boot/UKI -> mainline kernel + qcs8550-ayaneo-pocketds.dtb. %prep %setup -q -n rocknix-abl-v%{version} %build # nothing to build; binary ELF is pre-signed %install install -d %{buildroot}%{_datadir}/bootloader/rocknix_abl install -d %{buildroot}%{_bindir} install -m 0644 abl_signed-SM8550.elf %{buildroot}%{_datadir}/bootloader/rocknix_abl/ install -m 0644 abl_signed-SM8550.elf.sha256 %{buildroot}%{_datadir}/bootloader/rocknix_abl/ install -m 0755 %{SOURCE3} %{buildroot}%{_datadir}/bootloader/rocknix_abl/backup_abl.sh install -m 0755 %{SOURCE4} %{buildroot}%{_datadir}/bootloader/rocknix_abl/restore_backup_abl.sh install -m 0644 %{SOURCE5} %{buildroot}%{_datadir}/bootloader/rocknix_abl/README # Materialize the flash_abl.sh template with DEVICE=SM8550 fixed in. sed 's/%%DEVICE%%/SM8550/g' %{SOURCE2} > %{buildroot}%{_datadir}/bootloader/rocknix_abl/flash_abl.sh chmod 0755 %{buildroot}%{_datadir}/bootloader/rocknix_abl/flash_abl.sh # updateabl: shipped from a Fedora-adapted copy (HW_DEVICE defaulted to SM8550, # SYSTEM_ROOT defaulted to /, no reliance on ROCKNIX-only os-release fields). install -m 0755 %{SOURCE1} %{buildroot}%{_bindir}/updateabl %files %license %doc %{_datadir}/bootloader/rocknix_abl/README %{_datadir}/bootloader/rocknix_abl/abl_signed-SM8550.elf %{_datadir}/bootloader/rocknix_abl/abl_signed-SM8550.elf.sha256 %{_datadir}/bootloader/rocknix_abl/flash_abl.sh %{_datadir}/bootloader/rocknix_abl/backup_abl.sh %{_datadir}/bootloader/rocknix_abl/restore_backup_abl.sh %{_bindir}/updateabl %post # First time this package lands on a real device, run updateabl so the # in-eMMC abl_a/abl_b partitions get flashed with the ROCKNIX-signed ELF. # Skipped on chroots / image builds (no abl_a partition visible). if /usr/sbin/blkid -t PARTLABEL=abl_a -o device >/dev/null 2>&1; then /usr/bin/updateabl || : fi %changelog * Thu Apr 30 2026 Ayaneo Pocket DS Fedora port - 1.0.3-1 - Initial Fedora package, ported from ROCKNIX projects/ROCKNIX/packages/tools/rocknix-abl