summarylogtreecommitdiffstats
diff options
context:
space:
mode:
authorPiotr Gorski2024-05-21 08:24:49 +0200
committerPiotr Gorski2024-05-21 08:24:49 +0200
commit7ad7435959c298d0c407990f868d696ba6cdf049 (patch)
treeeadd8153579b8795167b9f10977fadae3e784d26
parentb04b64fb75967b3eb20f5717e3f849945508c498 (diff)
downloadaur-7ad7435959c298d0c407990f868d696ba6cdf049.tar.gz
Sync with Github
Signed-off-by: Piotr Gorski <lucjan.lucjanov@gmail.com>
-rw-r--r--.SRCINFO1
-rw-r--r--PKGBUILD58
2 files changed, 56 insertions, 3 deletions
diff --git a/.SRCINFO b/.SRCINFO
index f8371734a871..49f5bea1d83a 100644
--- a/.SRCINFO
+++ b/.SRCINFO
@@ -23,6 +23,7 @@ pkgbase = linux-cachyos
makedepends = python
options = !strip
options = !debug
+ options = !lto
source = https://cdn.kernel.org/pub/linux/kernel/v6.x/linux-6.9.1.tar.xz
source = config
source = auto-cpu-optimization.sh
diff --git a/PKGBUILD b/PKGBUILD
index e43a072f4e5c..5743d95861a3 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -136,6 +136,11 @@ _build_zfs=${_build_zfs-}
# This does replace the requirement of nvidia-dkms
_build_nvidia=${_build_nvidia-}
+# Builds the open nvidia module and package it into a own base
+# This does replace the requirement of nvidia-open-dkms
+# Use this only if you have Turing+ GPU
+_build_nvidia_open=${_build_nvidia_open-}
+
if [[ "$_use_llvm_lto" = "thin" || "$_use_llvm_lto" = "full" ]] && [ "$_use_lto_suffix" = "y" ]; then
pkgsuffix=cachyos-lto
pkgbase=linux-$pkgsuffix
@@ -160,7 +165,7 @@ _kernver=$pkgver-$pkgrel
arch=('x86_64' 'x86_64_v3')
url="https://github.com/CachyOS/linux-cachyos"
license=('GPL-2.0-only')
-options=('!strip' '!debug')
+options=('!strip' '!debug' '!lto')
makedepends=('bc' 'libelf' 'pahole' 'cpio' 'perl' 'tar' 'xz' 'zstd' 'gcc' 'gcc-libs' 'glibc' 'binutils' 'make' 'patch' 'python')
# LLVM makedepends
if [[ "$_use_llvm_lto" = "thin" || "$_use_llvm_lto" = "full" ]] || [ -n "$_use_kcfi" ]; then
@@ -176,6 +181,7 @@ fi
_patchsource="https://raw.githubusercontent.com/cachyos/kernel-patches/master/${_major}"
_nv_ver=550.78
_nv_pkg="NVIDIA-Linux-x86_64-${_nv_ver}"
+_nv_open_pkg="open-gpu-kernel-modules-${_nv_ver}"
source=(
"https://cdn.kernel.org/pub/linux/kernel/v${pkgver%%.*}.x/${_srcname}.tar.xz"
"config"
@@ -200,6 +206,13 @@ if [ -n "$_build_nvidia" ]; then
"${_patchsource}/misc/nvidia/0001-NVIDIA-take-modeset-ownership-early.patch")
fi
+if [ -n "$_build_nvidia_open" ]; then
+ source+=("nvidia-open-${_nv_ver}.tar.gz::https://github.com/NVIDIA/open-gpu-kernel-modules/archive/refs/tags/${_nv_ver}.tar.gz"
+ "${_patchsource}/misc/nvidia/make-modeset-fbdev-default.patch"
+ "${_patchsource}/misc/nvidia/0001-NVIDIA-take-modeset-ownership-early.patch"
+ "${_patchsource}/misc/nvidia/nvidia-open-gcc-ibt-sls.patch")
+fi
+
## List of CachyOS schedulers
case "$_cpusched" in
cachyos) # CachyOS Scheduler (Sched-ext + BORE + Cachy Sauce)
@@ -244,6 +257,7 @@ prepare() {
src="${src%.zst}"
[[ $src = make-modeset-fbdev-default.patch ]] && continue
[[ $src = 0001-NVIDIA-take-modeset-ownership-early.patch ]] && continue
+ [[ $src = nvidia-open-gcc-ibt-sls.patch ]] && continue
[[ $src = *.patch ]] || continue
echo "Applying patch $src..."
patch -Np1 < "../$src"
@@ -493,9 +507,17 @@ prepare() {
sh "${_nv_pkg}.run" --extract-only
# Use fbdev and modeset as default
- patch -Np1 -i "${srcdir}/make-modeset-fbdev-default.patch" -d "${srcdir}/${_nv_pkg}"
+ patch -Np1 -i "${srcdir}/make-modeset-fbdev-default.patch" -d "${srcdir}/${_nv_pkg}/kernel"
patch -Np2 --no-backup-if-mismatch -i "${srcdir}/0001-NVIDIA-take-modeset-ownership-early.patch" -d "${srcdir}/${_nv_pkg}/kernel"
fi
+
+ if [ -n "$_build_nvidia_open" ]; then
+ patch -Np1 -i "${srcdir}/make-modeset-fbdev-default.patch" -d "${srcdir}/${_nv_open_pkg}/kernel-open"
+ patch -Np2 --no-backup-if-mismatch -i "${srcdir}/0001-NVIDIA-take-modeset-ownership-early.patch" -d "${srcdir}/${_nv_open_pkg}/kernel-open"
+
+ # Fix for https://bugs.archlinux.org/task/74886
+ patch -Np1 --no-backup-if-mismatch -i "${srcdir}/nvidia-open-gcc-ibt-sls.patch" -d "${srcdir}/${_nv_open_pkg}"
+ fi
}
build() {
@@ -504,7 +526,6 @@ build() {
make -C tools/bpf/bpftool vmlinux.h feature-clang-bpf-co-re=1
if [ -n "$_build_nvidia" ]; then
- cd "${srcdir}/${_nv_pkg}/kernel"
local MODULE_FLAGS=(
KERNEL_UNAME="${pkgver}-${pkgsuffix}"
IGNORE_PREEMPT_RT_PRESENCE=1
@@ -512,7 +533,22 @@ build() {
SYSSRC="${srcdir}/${_srcname}"
SYSOUT="${srcdir}/${_srcname}"
)
+
+ cd "${srcdir}/${_nv_pkg}/kernel"
make ${BUILD_FLAGS[*]} ${MODULE_FLAGS[*]} -j$(nproc) modules
+
+ fi
+
+ if [ -n "$_build_nvidia_open" ]; then
+ cd "${srcdir}/${_nv_open_pkg}"
+ local MODULE_FLAGS=(
+ KERNEL_UNAME="${pkgver}-${pkgsuffix}"
+ IGNORE_PREEMPT_RT_PRESENCE=1
+ IGNORE_CC_MISMATCH=yes
+ SYSSRC="${srcdir}/${_srcname}"
+ SYSOUT="${srcdir}/${_srcname}"
+ )
+ CFLAGS= CXXFLAGS= LDFLAGS= make ${BUILD_FLAGS[*]} ${MODULE_FLAGS[*]} -j$(nproc) modules
fi
if [ -n "$_build_zfs" ]; then
@@ -649,6 +685,7 @@ _package-zfs(){
pkgdesc="zfs module for the $pkgdesc kernel"
depends=('pahole' $pkgbase=$_kernver)
provides=('ZFS-MODULE')
+ license=('CDDL')
cd ${srcdir}/"zfs"
install -dm755 "$pkgdir/usr/lib/modules/${_kernver}-${pkgsuffix}"
@@ -670,9 +707,24 @@ _package-nvidia(){
find "$pkgdir" -name '*.ko' -exec zstd --rm -10 {} +
}
+_package-nvidia-open(){
+ pkgdesc="nvidia open modules of ${_nv_ver} driver for the linux-$pkgsuffix kernel"
+ depends=("$pkgbase=$_kernver" "nvidia-utils=${_nv_ver}" "libglvnd")
+ provides=('NVIDIA-MODULE')
+ license=('GPL')
+
+ cd "${srcdir}/${_nv_open_pkg}"
+ install -dm755 "$pkgdir/usr/lib/modules/${_kernver}-${pkgsuffix}"
+ install -m644 kernel-open/*.ko "$pkgdir/usr/lib/modules/${_kernver}-${pkgsuffix}"
+ install -Dt "$pkgdir/usr/share/licenses/${pkgname}" -m644 COPYING
+
+ find "$pkgdir" -name '*.ko' -exec zstd --rm -10 {} +
+}
+
pkgname=("$pkgbase" "$pkgbase-headers")
[ -n "$_build_zfs" ] && pkgname+=("$pkgbase-zfs")
[ -n "$_build_nvidia" ] && pkgname+=("$pkgbase-nvidia")
+[ -n "$_build_nvidia_open" ] && pkgname+=("$pkgbase-nvidia-open")
for _p in "${pkgname[@]}"; do
eval "package_$_p() {
$(declare -f "_package${_p#$pkgbase}")