%global neo_kernel_release 7.2.11-1.fluxneo.unified %global debug_package %{nil} %global __brp_strip %{nil} %global __brp_strip_static_archive %{nil} %global __brp_strip_comment_note %{nil} %{!?neo_kernel_release:%global neo_kernel_release 7.2.11-1.fluxneo.unified} Name: kernel-flux-neo Version: 7.2.11 Release: 2.fluxneo%{?dist} Summary: Flux Neo Apple Silicon kernel, modules and matched device tree License: GPL-2.0-only ExclusiveArch: aarch64 Source0: kernel.tar Source1: sources.json BuildRequires: clang llvm lld llvm-devel make gcc bison flex bc openssl-devel elfutils-libelf-devel python3 perl rsync kmod rust rust-src bindgen-cli cpio diffutils Requires: dracut-asahi kmod Provides: kernel-uname-r = %{neo_kernel_release} Provides: kernel-core-uname-r = %{neo_kernel_release} # Retain previous kernel packages so DNF installonly updates permit rollback. Provides: installonlypkg(kernel) %description Source-built Flux Neo kernel. Modules and DTBs are produced in the same build. Hardware support remains experimental. %prep %setup -q -n kernel %build export SOURCE_DATE_EPOCH=$(python3 -c 'import json; print(json.load(open("%{SOURCE1}"))["source_date_epoch"])') export KBUILD_BUILD_USER=flux KBUILD_BUILD_HOST=fedora-builder export KBUILD_BUILD_TIMESTAMP="$(date -u -d @${SOURCE_DATE_EPOCH} '+%%a %%b %%d %%T UTC %%Y')" make O=out ARCH=arm64 LLVM=1 LOCALVERSION= flux_neo_defconfig # Bootloader policy supplies the command line; do not embed diagnostic CPU limits. scripts/config --file out/.config --set-str LOCALVERSION "-1.fluxneo.unified" --set-str CMDLINE '' --enable CMDLINE_FROM_BOOTLOADER make O=out ARCH=arm64 LLVM=1 LOCALVERSION= olddefconfig make O=out ARCH=arm64 LLVM=1 LOCALVERSION= rustavailable make %{?_smp_mflags} O=out ARCH=arm64 LLVM=1 LOCALVERSION= Image modules dtbs test "$(make -s O=out ARCH=arm64 LLVM=1 LOCALVERSION= kernelrelease)" = '%{neo_kernel_release}' for option in MODULES SECURITY_SELINUX VFAT_FS EXT4_FS_SECURITY CGROUPS NAMESPACES DRM_ASAHI_UNIFIED; do grep -qx "CONFIG_${option}=y" out/.config done %install make O=out ARCH=arm64 LLVM=1 LOCALVERSION= INSTALL_MOD_PATH=%{buildroot}/usr INSTALL_MOD_STRIP=1 DEPMOD=true modules_install rm -f %{buildroot}/usr/lib/modules/%{neo_kernel_release}/build %{buildroot}/usr/lib/modules/%{neo_kernel_release}/source install -Dm644 out/arch/arm64/boot/Image %{buildroot}/boot/vmlinuz-%{neo_kernel_release} install -Dm644 out/.config %{buildroot}/boot/config-%{neo_kernel_release} install -Dm644 out/System.map %{buildroot}/boot/System.map-%{neo_kernel_release} install -Dm644 out/arch/arm64/boot/dts/apple/t8140-j700.dtb %{buildroot}/boot/dtb-%{neo_kernel_release}/apple/t8140-j700.dtb install -m644 out/arch/arm64/boot/Image %{buildroot}/usr/lib/modules/%{neo_kernel_release}/vmlinuz ln -s vmlinuz-%{neo_kernel_release} %{buildroot}/boot/Image-%{neo_kernel_release} install -Dm644 %{SOURCE1} %{buildroot}%{_datadir}/flux/sources/kernel.json %post # Fedora kernel-install/dracut owns installed-system boot entries. KIWI finalizes # its initial image separately. Do not invoke this while constructing a buildroot. if test -d /run/systemd/system; then /usr/sbin/depmod -a %{neo_kernel_release} /usr/bin/kernel-install add %{neo_kernel_release} /usr/lib/modules/%{neo_kernel_release}/vmlinuz fi %preun if test "$1" = 0 && test -d /run/systemd/system; then /usr/bin/kernel-install remove %{neo_kernel_release} fi %files %license COPYING LICENSES/ /boot/vmlinuz-%{neo_kernel_release} /boot/Image-%{neo_kernel_release} /boot/config-%{neo_kernel_release} /boot/System.map-%{neo_kernel_release} /boot/dtb-%{neo_kernel_release}/ /usr/lib/modules/%{neo_kernel_release}/ %{_datadir}/flux/sources/kernel.json