## START: Set by rpmautospec ## (rpmautospec version 0.8.4) ## RPMAUTOSPEC: autorelease, autochangelog %define autorelease(e:s:pb:n) %{?-p:0.}%{lua: release_number = 6; base_release_number = tonumber(rpm.expand("%{?-b*}%{!?-b:1}")); print(release_number + base_release_number - 1); }%{?-e:.%{-e*}}%{?-s:.%{-s*}}%{!?-n:%{?dist}} ## END: Set by rpmautospec # Arm Mali userspace (r54p1). Bump mali_commit and mali_version together. %global mali_version 0.54.1 %global mali_commit 6260fd1a596a6135a198f0f220e6ed70f3210532 %global mali_url https://raw.githubusercontent.com/cixtech/cix_proprietary__cix_proprietary/%{mali_commit}/cix_proprietary-debs/cix-gpu-umd # Vendor binaries: nothing to extract debuginfo from, and the sonames under # /opt must not be advertised system-wide - libgbm.so.1 in particular would # otherwise collide with mesa-libgbm. %global debug_package %{nil} %global __provides_exclude_from ^/opt/.*$ # ...and with those sonames unadvertised, the internal references between them # must not become unsatisfiable Requires. External deps (libc, libX11) are kept. %global __requires_exclude ^(libmali|libEGL_cix|libOpenCL|libgbm)\\.so.*$ # Build-id links are pointless for prebuilt vendor blobs. %global _build_id_links none %global __brp_strip_static_archive %{nil} Name: sky1-release Version: 10 Release: %autorelease Summary: CIX Sky1 Packages repository configuration License: LicenseRef-Not-Copyrightable # No preamble BuildArch: it would force every subpackage noarch, and sky1-mali # carries aarch64 binaries. sky1-config declares noarch for itself. ExclusiveArch: aarch64 URL: https://copr.fedorainfracloud.org/coprs/lucamagrone/el10-sky1 # Keys Source10: https://download.copr.fedorainfracloud.org/results/lucamagrone/el10-sky1/pubkey.gpg # Repo configs Source20: sky1.repo # Platform boot configuration, shipped in the sky1-config subpackage Source30: 99-sky1-usb.conf Source36: 99-sky1-display.conf Source31: 10-sky1-gpu.conf # Vendor Mali stack, shipped in the sky1-mali subpackage Source32: 10-sky1-gpu-vendor.conf Source34: sky1-mali-vgem.conf Source35: sky1-mali-zink.conf # The GPU and NPU drivers hardcode 0666 on their device nodes; this narrows # them to root:video. Shipped by sky1-config, so it applies with either driver. Source33: 70-sky1-accel.rules # Fetched individually rather than as a repository archive: that commit is 444 MB # and holds every vendor component, of which the Mali runtime is 64 MB. The .so # symlinks are not fetched - git stores them as their target path - and are # recreated in %%install instead. Source40: %{mali_url}/etc/ld.so.conf.d/00-cixgpu-pro.conf Source41: %{mali_url}/etc/vulkan/icd.d/mali.json Source42: %{mali_url}/etc/vulkan/implicit_layer.d/VkLayer_window_system_integration.json Source43: %{mali_url}/etc/vulkan/implicit_layer.d/libVkLayer_window_system_integration.so Source44: %{mali_url}/lib/udev/rules.d/99-cma-device.rules Source45: %{mali_url}/opt/cixgpu-compat/share/glvnd/egl_vendor.d/40_cix.json Source47: %{mali_url}/usr/share/doc/cix-gpu-umd/copyright#/ARM-Mali-EULA.txt Source48: %{mali_url}/opt/cixgpu-pro/lib/aarch64-linux-gnu/libmali.so.%{mali_version} Source49: %{mali_url}/opt/cixgpu-pro/lib/aarch64-linux-gnu/libEGL_cix.so.1.4.0 Source50: %{mali_url}/opt/cixgpu-pro/lib/aarch64-linux-gnu/libOpenCL.so.1.0.0 Source51: %{mali_url}/opt/cixgpu-pro/lib/aarch64-linux-gnu/libgbm.so.1.0.0 # This should only be installed on Enterprise Linux with the same major version Requires: (redhat-release >= %{version} with redhat-release < %[%{version} + 1]) Recommends: epel-release = %{version} # The board does not boot correctly without the settings in sky1-config, so it # is not optional on this platform even though it is a separate package. Requires: sky1-config = %{version}-%{release} %description This package contains the CIX Sky1 Packages repository configuration and GPG key. %package -n sky1-config Summary: Boot configuration required by the CIX Sky1 platform BuildArch: noarch %description -n sky1-config Configuration the CIX Sky1 (Radxa Orion O6N) needs in order to boot. Adds the Cadence USBSSP host controller drivers to the initramfs, without which an initramfs has no USB bus at all and the board cannot boot from a USB device, and installs an anaconda post-script that puts clk_ignore_unused on the kernel command line of an installed system. CIX document that parameter as required: the firmware's SCMI clock protocol cannot express which clocks are untouchable, so the kernel's unused-clock sweep would otherwise switch off the CPU PLLs, the CI-700 interconnect and all four DDR channels. Also pins which driver claims the Mali GPU. panthor and the vendor mali_kbase both match ACPI CIXH5000, and the driver core binds whichever registers first, so the choice would otherwise depend on module load order. Only the vendor driver is suppressed, which makes the open stack the default and keeps a failure anywhere else from leaving the machine with no GPU. %package -n sky1-mali Summary: Vendor Arm Mali GPU stack for the CIX Sky1 platform # Redistributed under clause 1.1(ii) of the Arm Mali userspace driver licence, # a copy of which is shipped as %%license. Not noarch: these are aarch64 blobs. License: LicenseRef-ARM-Mali-EULA Requires: sky1-config = %{version}-%{release} # The GPU firmware moved to cix-firmware, which versions it with the other # device firmware. mali_kbase will not probe without it. Requires: cix-gpu-firmware Provides: libmali = %{mali_version} %description -n sky1-mali Selects the vendor Arm Mali driver (mali_kbase) instead of the open panthor driver, by shadowing the default that sky1-config installs. Both drivers match the Mali-G720 at ACPI CIXH5000 and only one can bind, so the choice is made by deciding which of the two may be autoloaded. Installing this package selects the vendor driver; removing it returns the machine to panthor. The vendor driver is only useful together with the Arm Mali userspace, which belongs in this package: the driver is then selected exactly when the userspace that needs it is present, and a machine can never end up running mali_kbase with no userspace able to drive it. %prep # Every source is a loose file installed straight from %%{S:N} below; the build # directory exists only so that %%license has something to copy. %setup -q -c -T cp -p %{S:47} ARM-Mali-EULA.txt %install # Keys mkdir -p %{buildroot}%{_sysconfdir}/pki/rpm-gpg install -Tp -m 0644 %{S:10} %{buildroot}%{_sysconfdir}/pki/rpm-gpg/RPM-GPG-KEY-SKY1-%{version} # Repo configs install -Dp -m 0644 -t %{buildroot}%{_sysconfdir}/yum.repos.d %{S:20} # Platform boot configuration (sky1-config) install -Dp -m 0644 -t %{buildroot}%{_sysconfdir}/dracut.conf.d %{S:30} %{S:36} # Not %%config: this is a vendor default that must not drift, so it lives in # /usr/lib/modprobe.d where rpm -V catches any edit and a reinstall restores it. install -Dp -m 0644 -t %{buildroot}%{_prefix}/lib/modprobe.d %{S:31} install -Dp -m 0644 -t %{buildroot}%{_prefix}/lib/udev/rules.d %{S:33} # sky1-mali: same basename as the default above, in /etc, so it shadows it. install -Dp -m 0644 %{S:32} %{buildroot}%{_sysconfdir}/modprobe.d/10-sky1-gpu.conf # sky1-mali: vgem supplies the render node the vendor stack lacks; see the file. install -Dp -m 0644 %{S:34} %{buildroot}%{_prefix}/lib/modules-load.d/sky1-mali.conf # sky1-mali: desktop GL via zink on the Mali Vulkan driver; see the file. install -Dp -m 0644 %{S:35} %{buildroot}%{_prefix}/lib/environment.d/90-sky1-mali.conf # sky1-mali: Arm Mali userspace. The vendor layout under /opt is kept verbatim # because its Vulkan ICD and EGL vendor JSONs name libraries without a path and # rely on the ld.so.conf fragment below to find them. %global mali_libdir /opt/cixgpu-pro/lib/aarch64-linux-gnu install -Dp -m 0755 %{S:48} %{buildroot}%{mali_libdir}/libmali.so.%{mali_version} install -Dp -m 0755 %{S:49} %{buildroot}%{mali_libdir}/libEGL_cix.so.1.4.0 install -Dp -m 0755 %{S:50} %{buildroot}%{mali_libdir}/libOpenCL.so.1.0.0 install -Dp -m 0755 %{S:51} %{buildroot}%{mali_libdir}/libgbm.so.1.0.0 ln -s libmali.so.%{mali_version} %{buildroot}%{mali_libdir}/libmali.so.0 ln -s libmali.so.0 %{buildroot}%{mali_libdir}/libmali.so ln -s libEGL_cix.so.1.4.0 %{buildroot}%{mali_libdir}/libEGL_cix.so.1 ln -s libEGL_cix.so.1 %{buildroot}%{mali_libdir}/libEGL_cix.so ln -s libOpenCL.so.1.0.0 %{buildroot}%{mali_libdir}/libOpenCL.so.1 ln -s libOpenCL.so.1 %{buildroot}%{mali_libdir}/libOpenCL.so ln -s libgbm.so.1.0.0 %{buildroot}%{mali_libdir}/libgbm.so.1 ln -s libgbm.so.1 %{buildroot}%{mali_libdir}/libgbm.so install -Dp -m 0644 %{S:40} %{buildroot}%{_sysconfdir}/ld.so.conf.d/00-cixgpu-pro.conf install -Dp -m 0644 %{S:41} %{buildroot}%{_sysconfdir}/vulkan/icd.d/mali.json install -Dp -m 0644 %{S:42} %{buildroot}%{_sysconfdir}/vulkan/implicit_layer.d/VkLayer_window_system_integration.json install -Dp -m 0755 %{S:43} %{buildroot}%{_sysconfdir}/vulkan/implicit_layer.d/libVkLayer_window_system_integration.so # GLVND reads the EGL vendor JSON from the system directory, not from /opt. install -Dp -m 0644 %{S:45} %{buildroot}%{_datadir}/glvnd/egl_vendor.d/40_cix.json # udev rules live under /usr/lib here, not /lib as in the vendor tree. install -Dp -m 0644 %{S:44} %{buildroot}%{_prefix}/lib/udev/rules.d/99-cma-device.rules %files %{_sysconfdir}/pki/rpm-gpg/RPM-GPG-KEY-SKY1-%{version} %config(noreplace) %{_sysconfdir}/yum.repos.d/sky1.repo %files -n sky1-config %config(noreplace) %{_sysconfdir}/dracut.conf.d/99-sky1-usb.conf %config(noreplace) %{_sysconfdir}/dracut.conf.d/99-sky1-display.conf %{_prefix}/lib/modprobe.d/10-sky1-gpu.conf %{_prefix}/lib/udev/rules.d/70-sky1-accel.rules %files -n sky1-mali %license ARM-Mali-EULA.txt %config(noreplace) %{_sysconfdir}/modprobe.d/10-sky1-gpu.conf %config(noreplace) %{_sysconfdir}/ld.so.conf.d/00-cixgpu-pro.conf %{_prefix}/lib/modules-load.d/sky1-mali.conf %{_prefix}/lib/environment.d/90-sky1-mali.conf %{_sysconfdir}/vulkan/icd.d/mali.json %{_sysconfdir}/vulkan/implicit_layer.d/VkLayer_window_system_integration.json %{_sysconfdir}/vulkan/implicit_layer.d/libVkLayer_window_system_integration.so %{_datadir}/glvnd/egl_vendor.d/40_cix.json %{_prefix}/lib/udev/rules.d/99-cma-device.rules /opt/cixgpu-pro %post -n sky1-mali /sbin/ldconfig %postun -n sky1-mali /sbin/ldconfig %changelog ## START: Generated by rpmautospec * Sun Oct 04 2026 Luca Magrone - 10-6 - Ship the display drivers in the initrd * Fri Sep 18 2026 Luca Magrone - 10-5 - Add Zink + VGEM configuration files * Wed Sep 16 2026 Luca Magrone - 10-4 - Add the vendor Mali GPU stack as a sky1-mali subpackage - Package the Arm Mali userspace driver, its ICDs and loader configs. - Pin every Mali source to a single upstream commit. - Ship the Arm licence clause permitting redistribution as %%license. - Require cix-gpu-firmware instead of shipping the GPU firmware here. - Disable debuginfo and build-id links for the blobs under /opt. - Filter the provides and requires so rpm ignores private sonames. - Blacklist mali_kbase from sky1-config, leaving panthor as default. - Shadow that blacklist from sky1-mali to select the vendor driver. - Force kbase page migration on, which the G720 leaves off by default. - Narrow /dev/mali0 and /dev/aipu to 0660 root:video, tagged uaccess. - Build the srpm with rpmautospec directly, dropping fedpkg. - Ignore fetched sources and generated files. * Sat Sep 12 2026 Luca Magrone - 10-3 - Drop 80-sky1-cmdline.ks * Sat Sep 12 2026 Luca Magrone - 10-2 - Add a sky1-config subpackage * Sat Sep 12 2026 Luca Magrone - 10-1 - Initial package ## END: Generated by rpmautospec