Files
main/kernel/drivers/module-nvidia390/actions.py
T
2025-07-25 18:19:04 +03:00

214 lines
8.5 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# -*- coding: utf-8 -*-
#
# Licensed under the GNU General Public License, version 3.
# See the file http://www.gnu.org/licenses/gpl.txt
from pisi.actionsapi import get
from pisi.actionsapi import autotools
from pisi.actionsapi import pisitools
from pisi.actionsapi import shelltools
from pisi.actionsapi import kerneltools
WorkDir = "."
KDIR = kerneltools.getKernelVersion()
NoStrip = ["/lib/modules"]
version = get.srcVERSION()
driver_dir_name = "nvidia390"
datadir = "/usr/share/%s" % driver_dir_name
libdir = "/usr/lib32" if get.buildTYPE() == 'emul32' else "/usr/lib"
arch = "x86" if get.buildTYPE() == 'emul32' else get.ARCH().replace("i6", "x")
nvlibdir = "%s/%s" % (libdir, driver_dir_name)
xorglibdir= "%s/xorg" % libdir
def setup():
shelltools.system("sh NVIDIA-Linux-%s-%s.run -x --target tmp"
% (arch, get.srcVERSION()))
shelltools.move("tmp/*", ".")
#5.5 patch
#shelltools.move("tmp/.manifest", ".")
#shelltools.system("patch -p1 < kernel-5.14-pdev.patch")
#shelltools.system("patch -p1 < kernel-5.14-state.patch")
#if get.buildTYPE() != 'emul32':
#shelltools.system("patch -p1 < linux-5.1.patch")
# Our libc is TLS enabled so use TLS library
#shelltools.unlink("*-tls.so*")
#shelltools.move("tls/*", ".")
# xorg-server provides libwfb.so
shelltools.unlink("libnvidia-wfb.so.*")
shelltools.echo("ld.so.conf", nvlibdir)
shelltools.echo("XvMCConfig", "%s/libXvMCNVIDIA.so" % nvlibdir)
# dkms
shelltools.copytree("kernel", "kernel-dkms")
shelltools.unlink("kernel-dkms/dkms.conf")
shelltools.move("dkms.conf", "kernel-dkms/")
pisitools.dosed("kernel-dkms/Makefile", "CC \?= cc", "CC = /usr/bin/cc")
pisitools.dosed("kernel-dkms/dkms.conf", "%VERSION%", version)
def build():
# We don't need kernel module for emul32 build
if get.buildTYPE() == 'emul32':
return
#kernel 5.6.4 32 bit patch hatası
elif get.ARCH() == "x86_64":
shelltools.system("patch -p1 < kernel-6.2.patch")
shelltools.system("patch -p1 < kernel-6.3.patch")
shelltools.system("patch -p1 < kernel-6.4.patch")
shelltools.system("patch -p1 < kernel-6.5.patch")
shelltools.system("patch -p1 < kernel-6.6.patch")
shelltools.system("patch -p1 < kernel-6.8.patch")
shelltools.system("patch -p1 < kernel-6.10.patch")
shelltools.system("patch -p1 < kernel-6.12.patch")
shelltools.export("SYSSRC", "/lib/modules/%s/build" % KDIR)
shelltools.cd("kernel")
autotools.make("module")
#shelltools.cd("uvm")
#autotools.make("module")
def install():
if not get.buildTYPE() == 'emul32':
# Kernel driver
pisitools.insinto("/lib/modules/%s/extra" % KDIR,
"kernel/nvidia.ko")
pisitools.insinto("/lib/modules/%s/extra" % KDIR,
"kernel/nvidia-uvm.ko")
pisitools.insinto("/lib/modules/%s/extra" % KDIR,
"kernel/nvidia-modeset.ko")
# Command line tools and their man pages
pisitools.dobin("nvidia-smi")
pisitools.doman("nvidia-smi.1.gz")
pisitools.dobin("nvidia-debugdump")
pisitools.dobin("nvidia-xconfig")
pisitools.doman("nvidia-xconfig.1.gz")
pisitools.dobin("nvidia-bug-report.sh")
pisitools.dobin("nvidia-cuda-mps-server")
pisitools.dobin("nvidia-cuda-mps-control")
pisitools.doman("nvidia-cuda-mps-control.1.gz")
pisitools.dobin("nvidia-modprobe")
pisitools.doman("nvidia-modprobe.1.gz")
pisitools.dobin("nvidia-persistenced")
pisitools.doman("nvidia-persistenced.1.gz")
# dkms
pisitools.insinto("/usr/src/nvidia-%s" % version, "kernel-dkms/*")
### Libraries
# OpenGl library
pisitools.dolib("libGL.so.%s" % version, nvlibdir)
# pisitools.dosym("libGL.so.%s" % version, "%s/libGL.so.1.2.0" % nvlibdir)
pisitools.dosym("libGL.so.%s" % version, "%s/libGL.so.1" % nvlibdir)
#pisitools.dolib("libGL.so.%s" % version, libdir)
pisitools.dolib("libEGL.so.1.1.0", nvlibdir)
pisitools.dosym("libEGL.so.1.1.0", "%s/libEGL.so.1" % nvlibdir)
pisitools.dolib("libEGL_nvidia.so.%s" % version, libdir)
pisitools.dolib("libGLESv1_CM_nvidia.so.%s" % version, libdir)
pisitools.dolib("libGLESv2_nvidia.so.%s" % version, libdir)
# OpenCL
pisitools.insinto("/etc/OpenCL/vendors", "nvidia.icd")
pisitools.dolib("libnvidia-compiler.so.%s" % version, libdir)
pisitools.dosym("libnvidia-compiler.so.%s" % version, "%s/libnvidia-compiler.so.1" % libdir)
#pisitools.dolib("libOpenCL.so.1.0.0", libdir)
#pisitools.dosym("libOpenCL.so.1.0.0", "%s/libOpenCL.so.1.0" % libdir)
#pisitools.dosym("libOpenCL.so.1.0", "%s/libOpenCL.so.1" % libdir)
pisitools.dolib("libnvidia-opencl.so.%s" % version, libdir)
pisitools.dosym("libnvidia-opencl.so.%s" % version, "%s/libnvidia-opencl.so.1" % libdir)
pisitools.dosym("libnvidia-opencl.so.1", "%s/libnvidia-opencl.so" % libdir)
# CUDA
pisitools.dolib("libcuda.so.%s" % version, libdir)
pisitools.dosym("libcuda.so.%s" % version, "%s/libcuda.so.1" % libdir)
pisitools.dosym("libcuda.so.1", "%s/libcuda.so" % libdir)
pisitools.dolib("libnvcuvid.so.%s" % version, libdir)
pisitools.dosym("libnvcuvid.so.%s" % version, "%s/libnvcuvid.so.1" % libdir)
pisitools.dosym("libnvcuvid.so.1", "%s/libnvcuvid.so" % libdir)
# NVML
# Provides programmatic access to static information and monitoring
# data for NVIDIA GPUs, as well as limited managment capabilities
pisitools.dolib("libnvidia-ml.so.%s" % version, libdir)
pisitools.dosym("libnvidia-ml.so.%s" % version, "%s/libnvidia-ml.so.1" % libdir)
pisitools.dolib("libnvidia-cfg.so.%s" % version, libdir)
pisitools.dosym("libnvidia-cfg.so.%s" % version, "%s/libnvidia-cfg.so.1" % libdir)
# OpenGL core library and others
for lib in ("glcore", "tls", "encode", "fbc", "glsi", "ifr", "eglcore"):
pisitools.dolib("libnvidia-%s.so.%s" % (lib, version), libdir)
pisitools.dosym("libnvidia-%s.so.%s" % (lib, version), "%s/libnvidia-%s.so.1" %(libdir, lib))
# VDPAU driver
pisitools.dolib("libvdpau_nvidia.so.%s" % version, "%s/vdpau" % libdir)
pisitools.dosym("libvdpau_nvidia.so.%s" % version, "%s/libvdpau_nvidia.so" % libdir)
# nvidia-tls library
pisitools.dolib("libnvidia-tls.so.%s" % version, libdir)
pisitools.dolib("tls/libnvidia-tls.so.%s" % version, "%s/tls" % libdir)
# X modules
pisitools.dolib("nvidia_drv.so", "%s/modules/drivers" % xorglibdir)
pisitools.dolib("libglx.so.%s" % version, "%s" % nvlibdir)
pisitools.dosym("libglx.so.%s" % version, "%s/libglx.so.1" % nvlibdir)
pisitools.dosym("libglx.so.%s" % version, "%s/libglx.so" % nvlibdir)
pisitools.dolib("libglx.so.%s" % version, "%s/modules/extensions" % xorglibdir)
pisitools.dosym("libglx.so.%s" % version, "%s/modules/extensions/libglx.so.1" % xorglibdir)
pisitools.dolib("libGLX_nvidia.so.%s" % version, libdir)
pisitools.dosym("libGLX_nvidia.so.%s" % version, "%s/libGLX_indirect.so.0" % libdir)
# PTX JIT Compiler (Parallel Thread Execution (PTX) is a pseudo-assembly language for CUDA)
pisitools.dolib("libnvidia-ptxjitcompiler.so.%s" % version, libdir)
# Fat (multiarchitecture) binary loader
pisitools.dolib("libnvidia-fatbinaryloader.so.%s" % version, libdir)
pisitools.insinto("/usr/share/X11/xorg.conf.d", "nvidia-drm-outputclass.conf")
# pisitools.insinto("/usr/share/nvidia", "nvidia-application-profiles-367.27-rc")
# pisitools.insinto("/usr/share/nvidia", "nvidia-application-profiles-367.27-key-documentation")
#pisitools.insinto("/usr/share/pixmaps", "nvidia-settings.png")
# Exit time for emul32 build
if get.buildTYPE() == 'emul32':
pisitools.insinto(datadir, "ld.so.conf", "32bit-ld.so.conf")
pisitools.insinto("/usr/share/pixmaps", "nvidia-settings.png", "nvidia.png")
return
pisitools.insinto(datadir, "ld.so.conf")
pisitools.insinto(datadir, "XvMCConfig")
# Documentation
docdir = "xorg-video-%s" % driver_dir_name
pisitools.dodoc("LICENSE", "NVIDIA_Changelog", "README.txt", destDir=docdir)
pisitools.dohtml("html/*", destDir=docdir)
### Note
# This package includes nvidia-setting and nvidia-xconfig binaries. However
# we have seperate packages for each of them. Nvidia provides tarballs for
# these binaries. Don't forget to update these package with each NVIDIA
# driver update.