diff --git a/base/comps/buildsys-build-azurelinux/buildsys-build-azurelinux-kerneldevpkgs.spec b/base/comps/buildsys-build-azurelinux/buildsys-build-azurelinux-kerneldevpkgs.spec new file mode 100644 index 00000000000..2f4adcfc068 --- /dev/null +++ b/base/comps/buildsys-build-azurelinux/buildsys-build-azurelinux-kerneldevpkgs.spec @@ -0,0 +1,105 @@ +Name: buildsys-build-azurelinux-kerneldevpkgs +Version: 4.0 +Release: 7%{?dist} +Summary: Kernel dev package list for kmod builds on Azure Linux +License: MIT +BuildArch: noarch + +# The Azure Linux kernel version to build kernel modules against. +# Update these macros when the kernel component version changes. +%define azl_kernel_version 6.18.5.1 +%define azl_kernel_release 3%{?dist} + +Provides: buildsys-build-azurelinux-kerneldevpkgs-current-x86_64 +Provides: buildsys-build-azurelinux-kerneldevpkgs-current-aarch64 +Provides: buildsys-build-azurelinux-kerneldevpkgs-akmod-x86_64 +Provides: buildsys-build-azurelinux-kerneldevpkgs-akmod-aarch64 + +Requires: kernel-devel = %{azl_kernel_version}-%{azl_kernel_release} + +%description +Meta-package that provides the kerneldevpkgs-current data file and +helper script used by kmodtool to discover which kernel version to +build kernel modules against on Azure Linux. + +The kernel version is explicitly set to the Azure Linux kernel version +rather than queried from the build chroot, which would resolve to the +upstream Fedora kernel. + +%install +# Install the Azure Linux kerneldevpkgs-current file (version WITHOUT arch, +# the helper script appends arch at runtime based on build host) +install -d %{buildroot}%{_datadir}/buildsys-build-azurelinux +echo "%{azl_kernel_version}-%{azl_kernel_release}" > %{buildroot}%{_datadir}/buildsys-build-azurelinux/kerneldevpkgs-current + +# Create a compat symlink so kmodtool (which hardcodes the +# buildsys-build-rpmfusion path) can find the kerneldevpkgs-current file +install -d %{buildroot}%{_datadir}/buildsys-build-rpmfusion +ln -s ../buildsys-build-azurelinux/kerneldevpkgs-current %{buildroot}%{_datadir}/buildsys-build-rpmfusion/kerneldevpkgs-current + +# kmodtool (RPM Fusion version) does: +# 1. `which buildsys-build--kerneldevpkgs` to verify package exists +# 2. `buildsys-build--kerneldevpkgs --current` to get kernel version list +# 3. Uses the output as kernel_uname_r to generate: +# BuildRequires: kernel-devel-uname-r = +# +# The output MUST include the arch suffix (e.g., 6.18.5.1-3.azl4.x86_64) +# to match the kernel-devel RPM's "Provides: kernel-devel-uname-r = ..." +install -d %{buildroot}%{_bindir} + +cat > %{buildroot}%{_bindir}/buildsys-build-azurelinux-kerneldevpkgs << 'EOFSCRIPT' +#!/bin/bash +# Helper script called by kmodtool to list kernel versions for kmod builds. +# Output format must be VERSION-RELEASE.ARCH (e.g., 6.18.5.1-3.azl4.x86_64) +# because kmodtool uses it to generate: +# BuildRequires: kernel-devel-uname-r = + +datadir="/usr/share" +arch="$(uname -m)" + +while [[ $# -gt 0 ]]; do + case "$1" in + --current|--akmod|--newest) + shift + ;; + --prefix) + shift + datadir="$1" + shift + ;; + *) + shift + ;; + esac +done + +kerneldevpkgs="${datadir}/buildsys-build-azurelinux/kerneldevpkgs-current" +if [[ ! -f "${kerneldevpkgs}" ]]; then + kerneldevpkgs="${datadir}/buildsys-build-rpmfusion/kerneldevpkgs-current" +fi + +if [[ -f "${kerneldevpkgs}" ]]; then + kver="$(cat "${kerneldevpkgs}")" + # Append arch suffix — kmodtool expects VERSION-RELEASE.ARCH format + echo "${kver}.${arch}" +else + echo "Error: kerneldevpkgs-current not found" >&2 + exit 1 +fi +EOFSCRIPT +chmod 0755 %{buildroot}%{_bindir}/buildsys-build-azurelinux-kerneldevpkgs + +# Compat symlink for unpatched kmodtool which uses --repo rpmfusion +ln -s buildsys-build-azurelinux-kerneldevpkgs %{buildroot}%{_bindir}/buildsys-build-rpmfusion-kerneldevpkgs + +%files +%{_bindir}/buildsys-build-azurelinux-kerneldevpkgs +%{_bindir}/buildsys-build-rpmfusion-kerneldevpkgs +%dir %{_datadir}/buildsys-build-azurelinux +%{_datadir}/buildsys-build-azurelinux/kerneldevpkgs-current +%dir %{_datadir}/buildsys-build-rpmfusion +%{_datadir}/buildsys-build-rpmfusion/kerneldevpkgs-current + +%changelog +* Thu Mar 13 2026 Elaheh Dehghani - 4.0-7 +- Initial Azure Linux package diff --git a/base/comps/buildsys-build-azurelinux/buildsys-build-azurelinux.comp.toml b/base/comps/buildsys-build-azurelinux/buildsys-build-azurelinux.comp.toml new file mode 100644 index 00000000000..87337dcd485 --- /dev/null +++ b/base/comps/buildsys-build-azurelinux/buildsys-build-azurelinux.comp.toml @@ -0,0 +1,2 @@ +[components.buildsys-build-azurelinux-kerneldevpkgs] +spec = { type = "local", path = "buildsys-build-azurelinux-kerneldevpkgs.spec" } diff --git a/base/comps/nvidia-kmod/nvidia-kmod.comp.toml b/base/comps/nvidia-kmod/nvidia-kmod.comp.toml new file mode 100644 index 00000000000..c72cf945583 --- /dev/null +++ b/base/comps/nvidia-kmod/nvidia-kmod.comp.toml @@ -0,0 +1,14 @@ +[components.nvidia-kmod] +spec.type = "upstream" +spec.upstream-distro = { name = "rpmfusion-nonfree" } + +# Undefine %fedora so the spec doesn't set %buildforkernels to "akmod" — +# Azure Linux builds for "current" kernel only, not automatic kernel modules +[components.nvidia-kmod.build] +defines = { fedora = "0" } + +[[components.nvidia-kmod.overlays]] +description = "Use Azure Linux kerneldevpkgs instead of RPM Fusion to resolve kernel-devel version against the AZL kernel, not the Fedora/upstream kernel" +type = "spec-search-replace" +regex = "buildsys-build-rpmfusion-kerneldevpkgs" +replacement = "buildsys-build-azurelinux-kerneldevpkgs" diff --git a/base/comps/xorg-x11-drv-nvidia/xorg-x11-drv-nvidia.comp.toml b/base/comps/xorg-x11-drv-nvidia/xorg-x11-drv-nvidia.comp.toml new file mode 100644 index 00000000000..5809a4e57ae --- /dev/null +++ b/base/comps/xorg-x11-drv-nvidia/xorg-x11-drv-nvidia.comp.toml @@ -0,0 +1,9 @@ +[components.xorg-x11-drv-nvidia] +spec = { + type = "upstream", + upstream-distro = { + name = "rpmfusion-nonfree", + version = "43", + snapshot = "2026-02-24T00:00:00-08:00" + } +} diff --git a/distro/rpmfusion.distro.toml b/distro/rpmfusion.distro.toml new file mode 100644 index 00000000000..65fa84d7def --- /dev/null +++ b/distro/rpmfusion.distro.toml @@ -0,0 +1,69 @@ +[distros.rpmfusion-free] +description = "RPM Fusion Free repository" +default-version = "43" +dist-git-base-uri = "https://pkgs.rpmfusion.org/cgit/free/$pkg.git" +lookaside-base-uri = "https://pkgs.rpmfusion.org/repo/pkgs/free/$pkg/$filename/$hashtype/$hash/$filename" +repos = [ + {"base-uri" = "https://download1.rpmfusion.org/free/fedora/releases/$releasever/Everything/source/SRPMS" }, + {"base-uri" = "https://download1.rpmfusion.org/free/fedora/updates/$releasever/source/SRPMS" }, +] + +[distros.rpmfusion-free.versions.41] +description = "RPM Fusion Free for Fedora 41" +release-ver = "41" +dist-git-branch = "f41" + +[distros.rpmfusion-free.versions.42] +description = "RPM Fusion Free for Fedora 42" +release-ver = "42" +dist-git-branch = "f42" + +[distros.rpmfusion-free.versions.43] +description = "RPM Fusion Free for Fedora 43" +release-ver = "43" +dist-git-branch = "f43" + +[distros.rpmfusion-free.versions.44] +description = "RPM Fusion Free for Fedora 44" +release-ver = "44" +dist-git-branch = "f44" + +[distros.rpmfusion-free.versions.rawhide] +description = "RPM Fusion Free for Fedora Rawhide" +release-ver = "rawhide" +dist-git-branch = "rawhide" + +[distros.rpmfusion-nonfree] +description = "RPM Fusion Nonfree repository" +default-version = "43" +dist-git-base-uri = "https://github.com/rpmfusion/$pkg.git" +lookaside-base-uri = "https://pkgs.rpmfusion.org/repo/pkgs/nonfree/$pkg/$filename/$hashtype/$hash/$filename" +repos = [ + {"base-uri" = "https://download1.rpmfusion.org/nonfree/fedora/releases/$releasever/Everything/source/SRPMS" }, + {"base-uri" = "https://download1.rpmfusion.org/nonfree/fedora/updates/$releasever/source/SRPMS" }, +] + +[distros.rpmfusion-nonfree.versions.41] +description = "RPM Fusion Nonfree for Fedora 41" +release-ver = "41" +dist-git-branch = "f41" + +[distros.rpmfusion-nonfree.versions.42] +description = "RPM Fusion Nonfree for Fedora 42" +release-ver = "42" +dist-git-branch = "f42" + +[distros.rpmfusion-nonfree.versions.43] +description = "RPM Fusion Nonfree for Fedora 43" +release-ver = "43" +dist-git-branch = "f43" + +[distros.rpmfusion-nonfree.versions.44] +description = "RPM Fusion Nonfree for Fedora 44" +release-ver = "44" +dist-git-branch = "f44" + +[distros.rpmfusion-nonfree.versions.rawhide] +description = "RPM Fusion Nonfree for Fedora Rawhide" +release-ver = "rawhide" +dist-git-branch = "rawhide"