actions.py 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314
  1. # -*- coding: utf-8 -*-
  2. #
  3. # Licensed under the GNU General Public License, version 3.
  4. # See the file http://www.gnu.org/licenses/gpl.txt
  5. from pisi.actionsapi import get
  6. from pisi.actionsapi import autotools
  7. from pisi.actionsapi import pisitools
  8. from pisi.actionsapi import shelltools
  9. from pisi.actionsapi import kerneltools
  10. WorkDir = "."
  11. KDIR = kerneltools.getKernelVersion()
  12. NoStrip = ["/lib/modules"]
  13. version = get.srcVERSION()
  14. driver_dir_name = "nvidia-current"
  15. datadir = "/usr/share/%s" % driver_dir_name
  16. libdir = "/usr/lib32" if get.buildTYPE() == 'emul32' else "/usr/lib"
  17. arch = "x86" if get.buildTYPE() == 'emul32' else get.ARCH().replace("i6", "x")
  18. nvlibdir = "%s/%s" % (libdir, driver_dir_name)
  19. xorglibdir= "%s/xorg" % libdir
  20. def setup():
  21. shelltools.system("sh NVIDIA-Linux-x86_64-%s.run -x --target tmp"
  22. % get.srcVERSION())
  23. shelltools.move("tmp/*", ".")
  24. #5.5 patch icin
  25. shelltools.move("tmp/.manifest", ".")
  26. #shelltools.system("patch -p1 < NVIDIA-Linux-x86_64-430.64-work-around-mga-bug-25890.patch")
  27. #shelltools.system("patch -p1 < NVIDIA-Linux-x86_64-430.64-kernel-5.5.patch")
  28. shelltools.echo("ld.so.conf", nvlibdir)
  29. shelltools.echo("XvMCConfig", "%s/libXvMCNVIDIA.so" % nvlibdir)
  30. # dkms
  31. shelltools.copytree("kernel", "kernel-dkms")
  32. shelltools.unlink("kernel-dkms/dkms.conf")
  33. shelltools.move("dkms.conf", "kernel-dkms/")
  34. pisitools.dosed("kernel-dkms/Makefile", "CC \?= cc", "CC = /usr/bin/cc")
  35. pisitools.dosed("kernel-dkms/dkms.conf", "%VERSION%", version)
  36. def build():
  37. # We don't need kernel module for emul32 build
  38. if get.buildTYPE() == 'emul32':
  39. return
  40. shelltools.export("SYSSRC", "/lib/modules/%s/build" % KDIR)
  41. shelltools.cd("kernel")
  42. autotools.make("module")
  43. def install():
  44. if not get.buildTYPE() == 'emul32':
  45. # Kernel driver
  46. pisitools.insinto("/lib/modules/%s/extra" % KDIR,
  47. "kernel/nvidia.ko")
  48. pisitools.insinto("/lib/modules/%s/extra" % KDIR,
  49. "kernel/nvidia-drm.ko")
  50. pisitools.insinto("/lib/modules/%s/extra" % KDIR,
  51. "kernel/nvidia-uvm.ko")
  52. pisitools.insinto("/lib/modules/%s/extra" % KDIR,
  53. "kernel/nvidia-modeset.ko")
  54. # Command line tools and their man pages
  55. pisitools.dobin("nvidia-smi")
  56. pisitools.doman("nvidia-smi.1.gz")
  57. pisitools.dobin("nvidia-debugdump")
  58. pisitools.dobin("nvidia-xconfig")
  59. pisitools.doman("nvidia-xconfig.1.gz")
  60. pisitools.dobin("nvidia-bug-report.sh")
  61. pisitools.dobin("nvidia-cuda-mps-server")
  62. pisitools.dobin("nvidia-cuda-mps-control")
  63. pisitools.doman("nvidia-cuda-mps-control.1.gz")
  64. pisitools.dobin("nvidia-modprobe")
  65. pisitools.doman("nvidia-modprobe.1.gz")
  66. pisitools.dobin("nvidia-persistenced")
  67. pisitools.doman("nvidia-persistenced.1.gz")
  68. pisitools.dobin("nvidia-settings")
  69. pisitools.doman("nvidia-settings.1.gz")
  70. # dkms
  71. pisitools.insinto("/usr/src/nvidia-%s" % version, "kernel-dkms/*")
  72. ### Libraries
  73. # 32-bit libraries
  74. if get.buildTYPE() == 'emul32':
  75. pisitools.dolib("32/libGL.so.1.7.0", nvlibdir)
  76. # pisitools.dosym("libGL.so.1.7.0", "%s/libGL.so.1.2.0" % nvlibdir)
  77. pisitools.dosym("libGL.so.1.7.0", "%s/libGL.so.1" % nvlibdir)
  78. pisitools.dosym("libGL.so.1.7.0", "%s/libGL.so" % nvlibdir)
  79. pisitools.dolib("32/libEGL.so.1.1.0", nvlibdir)
  80. #pisitools.dosym("%s/libEGL.so.1.1.0" % nvlibdir, "%s/libEGL.so.1.1.0" % libdir)
  81. #pisitools.dosym("%s/libEGL.so.1.1.0" % nvlibdir, "%s/libEGL.so.1.0.0" % nvlibdir)
  82. #pisitools.dosym("%s/libEGL.so.1.1.0" % nvlibdir, "%s/libEGL.so.1" % nvlibdir)
  83. #pisitools.dosym("%s/libEGL.so.1.1.0" % nvlibdir, "%s/libEGL.so" % nvlibdir)
  84. pisitools.dolib("32/libEGL_nvidia.so.%s" % version, libdir)
  85. pisitools.dosym("libEGL_nvidia.so.%s" % version, "%s/libEGL_nvidia.so.1" %libdir)
  86. pisitools.dosym("libEGL_nvidia.so.%s" % version, "%s/libEGL_nvidia.so" %libdir)
  87. pisitools.dolib("32/libGLESv1_CM_nvidia.so.%s" % version, libdir)
  88. pisitools.dosym("libGLESv1_CM_nvidia.so.%s" % version, "%s/libGLESv1_CM_nvidia.so.1" % libdir)
  89. pisitools.dosym("libGLESv1_CM_nvidia.so.%s" % version, "%s/libGLESv1_CM_nvidia.so" % libdir)
  90. pisitools.dolib("32/libGLESv2_nvidia.so.%s" % version, libdir)
  91. pisitools.dosym("libGLESv2_nvidia.so.%s" % version, "%s/libGLESv2_nvidia.so.2" % libdir)
  92. pisitools.dosym("libGLESv2_nvidia.so.%s" % version, "%s/libGLESv2_nvidia.so" % libdir)
  93. # pisitools.dolib("32/libnvidia-compiler.so.%s" % version, libdir)
  94. # pisitools.dosym("libnvidia-compiler.so.%s" % version, "%s/libnvidia-compiler.so.1" % libdir)
  95. # pisitools.dosym("libnvidia-compiler.so.%s" % version, "%s/libnvidia-compiler.so" % libdir)
  96. #pisitools.dolib("32/libOpenCL.so.1.0.0", libdir)
  97. #pisitools.dosym("libOpenCL.so.1.0", "%s/libOpenCL.so.1" % libdir)
  98. #pisitools.dosym("libOpenCL.so.1.0", "%s/libOpenCL.so" % libdir)
  99. pisitools.dolib("32/libnvidia-opencl.so.%s" % version, libdir)
  100. pisitools.dosym("libnvidia-opencl.so.%s" % version, "%s/libnvidia-opencl.so.1" % libdir)
  101. pisitools.dosym("libnvidia-opencl.so.1", "%s/libnvidia-opencl.so" % libdir)
  102. pisitools.dolib("32/libcuda.so.%s" % version, libdir)
  103. pisitools.dosym("libcuda.so.%s" % version, "%s/libcuda.so.1" % libdir)
  104. pisitools.dosym("libcuda.so.1", "%s/libcuda.so" % libdir)
  105. pisitools.dolib("32/libnvcuvid.so.%s" % version, libdir)
  106. pisitools.dosym("libnvcuvid.so.%s" % version, "%s/libnvcuvid.so.1" % libdir)
  107. pisitools.dosym("libnvcuvid.so.1", "%s/libnvcuvid.so" % libdir)
  108. pisitools.dolib("32/libnvidia-ml.so.%s" % version, libdir)
  109. pisitools.dosym("libnvidia-ml.so.%s" % version, "%s/libnvidia-ml.so.1" % libdir)
  110. for lib in ("eglcore", "encode", "fbc", "glcore", "glsi", \
  111. "glvkspirv", "opticalflow", "ptxjitcompiler", "tls", "allocator" ):
  112. pisitools.dolib("32/libnvidia-%s.so.%s" % (lib, version), libdir)
  113. pisitools.dosym("libnvidia-%s.so.%s" % (lib, version), "%s/libnvidia-%s.so.1" %(libdir, lib))
  114. pisitools.dosym("libnvidia-%s.so.%s" % (lib, version), "%s/libnvidia-%s.so" %(libdir, lib))
  115. pisitools.dolib("32/libvdpau_nvidia.so.%s" % version, "%s/vdpau" % libdir)
  116. pisitools.dosym("libvdpau_nvidia.so.%s" % version, "%s/libvdpau_nvidia.so" % libdir)
  117. pisitools.dolib("32/libGLX_nvidia.so.%s" % version, libdir)
  118. pisitools.dosym("libGLX_nvidia.so.%s" % version, "%s/libGLX_indirect.so.0" % libdir)
  119. pisitools.dosym("libGLX_nvidia.so.%s" % version, "%s/libGLX_indirect.so" % libdir)
  120. pisitools.dosym("libGLX_nvidia.so.%s" % version, "%s/libGLX_nvidia.so.0" % libdir)
  121. pisitools.dosym("libGLX_nvidia.so.%s" % version, "%s/libGLX_nvidia.so" % libdir)
  122. pisitools.dolib("32/libGLdispatch.so.0", libdir)
  123. pisitools.dosym("libGLdispatch.so.0", "%s/ibGLdispatch.so" % libdir)
  124. pisitools.dolib("32/libGLX.so.0", libdir)
  125. pisitools.dosym("libGLX.so.0", "%s/libGLX.so" % libdir)
  126. pisitools.dolib("32/libOpenGL.so.0", libdir)
  127. pisitools.dosym("libOpenGL.so.0", "%s/libOpenGL.so" % libdir)
  128. else:
  129. # OpenGl library
  130. pisitools.dolib("libGL.so.1.7.0", nvlibdir)
  131. # pisitools.dosym("libGL.so.1.7.0", "%s/libGL.so.1.2.0" % nvlibdir)
  132. pisitools.dosym("libGL.so.1.7.0", "%s/libGL.so.1" % nvlibdir)
  133. pisitools.dosym("libGL.so.1.7.0", "%s/libGL.so" % nvlibdir)
  134. pisitools.dolib("libEGL.so.1.1.0", nvlibdir)
  135. #pisitools.dosym("%s/libEGL.so.1.1.0" % nvlibdir, "%s/libEGL.so.1.1.0" % libdir)
  136. #pisitools.dosym("%s/libEGL.so.1.1.0" % nvlibdir, "%s/libEGL.so.1.0.0" % nvlibdir)
  137. #pisitools.dosym("%s/libEGL.so.1.1.0" % nvlibdir, "%s/libEGL.so.1" % nvlibdir)
  138. #pisitools.dosym("%s/libEGL.so.1.1.0" % nvlibdir, "%s/libEGL.so" % nvlibdir)
  139. pisitools.dolib("libEGL_nvidia.so.%s" % version, libdir)
  140. pisitools.dolib("libEGL.so.%s" % version, libdir)
  141. pisitools.dolib("libGLESv1_CM_nvidia.so.%s" % version, libdir)
  142. pisitools.dolib("libGLESv2_nvidia.so.%s" % version, libdir)
  143. pisitools.dosym("libGLESv2_nvidia.so.%s" % version, "%s/libGLESv2_nvidia.so.2" % libdir)
  144. pisitools.dosym("libGLESv2_nvidia.so.%s" % version, "%s/libGLESv2_nvidia.so" % libdir)
  145. pisitools.dolib("libnvidia-gpucomp.so.%s" % version, libdir)
  146. pisitools.dosym("libnvidia-gpucomp.so.%s" % version, "%s/libnvidia-gpucomp.so" % libdir)
  147. pisitools.dolib("libnvidia-pkcs11.so.%s" % version, libdir)
  148. pisitools.dosym("libnvidia-pkcs11.so.%s" % version, "%s/libnvidia-pkcs11.so" % libdir)
  149. pisitools.dolib("libnvidia-pkcs11-openssl3.so.%s" % version, libdir)
  150. pisitools.dosym("libnvidia-pkcs11-openssl3.so.%s" % version, "%s/libnvidia-pkcs11-openssl3.so" % libdir)
  151. # OpenCL
  152. pisitools.insinto("/etc/OpenCL/vendors", "nvidia.icd")
  153. # pisitools.dolib("libnvidia-compiler.so.%s" % version, libdir)
  154. # pisitools.dosym("libnvidia-compiler.so.%s" % version, "%s/libnvidia-compiler.so.1" % libdir)
  155. # pisitools.dosym("libnvidia-compiler.so.%s" % version, "%s/libnvidia-compiler.so" % libdir)
  156. pisitools.dolib("libnvidia-api.so.1", libdir)
  157. #pisitools.dolib("libOpenCL.so.1.0.0", libdir)
  158. #pisitools.dosym("libOpenCL.so.1.0.0", "%s/libOpenCL.so.1.0" % libdir)
  159. #pisitools.dosym("libOpenCL.so.1.0", "%s/libOpenCL.so.1" % libdir)
  160. #pisitools.dosym("libOpenCL.so.1.0", "%s/libOpenCL.so" % libdir)
  161. pisitools.dolib("libnvidia-opencl.so.%s" % version, libdir)
  162. pisitools.dosym("libnvidia-opencl.so.%s" % version, "%s/libnvidia-opencl.so.1" % libdir)
  163. pisitools.dosym("libnvidia-opencl.so.1", "%s/libnvidia-opencl.so" % libdir)
  164. # CUDA
  165. pisitools.dolib("libcuda.so.%s" % version, libdir)
  166. pisitools.dosym("libcuda.so.%s" % version, "%s/libcuda.so.1" % libdir)
  167. pisitools.dosym("libcuda.so.1", "%s/libcuda.so" % libdir)
  168. pisitools.dolib("libcudadebugger.so.%s" % version, libdir)
  169. pisitools.dosym("libcudadebugger.so.%s" % version, "%s/libcudadebugger.so.1" % libdir)
  170. pisitools.dosym("libcudadebugger.so.%s" % version, "%s/libcudadebugger.so" % libdir)
  171. pisitools.dolib("libnvcuvid.so.%s" % version, libdir)
  172. pisitools.dosym("libnvcuvid.so.%s" % version, "%s/libnvcuvid.so.1" % libdir)
  173. pisitools.dosym("libnvcuvid.so.1", "%s/libnvcuvid.so" % libdir)
  174. # NVML
  175. # Provides programmatic access to static information and monitoring
  176. # data for NVIDIA GPUs, as well as limited managment capabilities
  177. pisitools.dolib("libnvidia-ml.so.%s" % version, libdir)
  178. pisitools.dosym("libnvidia-ml.so.%s" % version, "%s/libnvidia-ml.so.1" % libdir)
  179. pisitools.dolib("libnvidia-cfg.so.%s" % version, libdir)
  180. pisitools.dosym("libnvidia-cfg.so.%s" % version, "%s/libnvidia-cfg.so.1" % libdir)
  181. pisitools.dolib("libnvoptix.so.%s" % version, libdir)
  182. pisitools.dosym("libnvoptix.so.%s" % version, "%s/libnvoptix.so.1" % libdir)
  183. pisitools.dosym("libnvoptix.so.%s" % version, "%s/libnvoptix.so" % libdir)
  184. pisitools.dolib("libnvidia-nvvm.so.%s" % version, libdir)
  185. pisitools.dosym("libnvidia-nvvm.so.%s" % version, "%s/libnvidia-nvvm.so.1" % libdir)
  186. pisitools.dosym("libnvidia-nvvm.so.%s" % version, "%s/libnvidia-nvvm.so" % libdir)
  187. pisitools.dolib("libnvidia-egl-wayland.so.1.1.17", libdir)
  188. pisitools.dosym("libnvidia-egl-wayland.so.1.1.17", "%s/libnvidia-egl-wayland.so.1" % libdir)
  189. pisitools.dosym("libnvidia-egl-wayland.so.1.1.17", "%s/libnvidia-egl-wayland.so" % libdir)
  190. pisitools.dolib("libnvidia-egl-gbm.so.1.1.2", libdir)
  191. pisitools.dosym("libnvidia-egl-gbm.so.1.1.2", "%s/libnvidia-egl-gbm.so.1" % libdir)
  192. pisitools.dosym("libnvidia-egl-gbm.so.1.1.2", "%s/libnvidia-egl-gbm.so" % libdir)
  193. pisitools.dolib("libnvidia-wayland-client.so.%s" % version, libdir)
  194. # pisitools.dolib("libnvidia-vulkan-producer.so.%s" % version, libdir)
  195. # pisitools.dosym("libnvidia-vulkan-producer.so.%s" % version, "%s/libnvidia-vulkan-producer.so.1" % libdir)
  196. # pisitools.dosym("libnvidia-vulkan-producer.so.%s" % version, "%s/libnvidia-vulkan-producer.so" % libdir)
  197. # OpenGL core library and others
  198. for lib in ("allocator", "eglcore", "encode", "ngx", "fbc", "glcore", "glsi", \
  199. "glvkspirv", "opticalflow", "ptxjitcompiler", "rtcore", "tls" ):
  200. pisitools.dolib("libnvidia-%s.so.%s" % (lib, version), libdir)
  201. pisitools.dosym("libnvidia-%s.so.%s" % (lib, version), "%s/libnvidia-%s.so.1" %(libdir, lib))
  202. pisitools.dosym("libnvidia-%s.so.%s" % (lib, version), "%s/libnvidia-%s.so" %(libdir, lib))
  203. # VDPAU driver
  204. pisitools.dolib("libvdpau_nvidia.so.%s" % version, "%s/vdpau" % libdir)
  205. pisitools.dosym("libvdpau_nvidia.so.%s" % version, "%s/libvdpau_nvidia.so" % libdir)
  206. # X modules
  207. pisitools.dolib("nvidia_drv.so", "%s/modules/drivers" % xorglibdir)
  208. pisitools.dolib("libglxserver_nvidia.so.%s" % version, "%s/xorg/extensions" % nvlibdir)
  209. pisitools.dosym("libglxserver_nvidia.so.%s" % version, "%s/xorg/extensions/libglx.so.1" % nvlibdir)
  210. pisitools.dosym("libglxserver_nvidia.so.%s" % version, "%s/xorg/extensions/libglx.so" % nvlibdir)
  211. pisitools.dolib("libglxserver_nvidia.so.%s" % version, "%s/modules/extensions" % xorglibdir)
  212. pisitools.dosym("libglxserver_nvidia.so.%s" % version, "%s/modules/extensions/libglx.so.1" % xorglibdir)
  213. # Vulkan driver
  214. pisitools.dolib("libGLX_nvidia.so.%s" % version, libdir)
  215. pisitools.dosym("libGLX_nvidia.so.%s" % version, "%s/libGLX_indirect.so.0" % libdir)
  216. pisitools.dosym("libGLX_nvidia.so.%s" % version, "%s/libGLX_indirect.so" % libdir)
  217. pisitools.dosym("libGLX_nvidia.so.%s" % version, "%s/libGLX_nvidia.so.0" % libdir)
  218. pisitools.dosym("libGLX_nvidia.so.%s" % version, "%s/libGLX_nvidia.so" % libdir)
  219. pisitools.insinto("/etc/vulkan/icd.d", "nvidia_icd.json")
  220. pisitools.insinto("/etc/vulkan/icd.d", "nvidia_layers.json")
  221. pisitools.insinto("/usr/share/glvnd/egl_vendor.d", "10_nvidia.json")
  222. #pisitools.insinto("/usr/share/X11/xorg.conf.d", "nvidia-drm-outputclass.conf")
  223. #pisitools.insinto("/usr/share/nvidia", "nvidia-application-profiles-367.27-rc")
  224. #pisitools.insinto("/usr/share/nvidia", "nvidia-application-profiles-367.27-key-documentation")
  225. pisitools.insinto("/usr/share/pixmaps", "nvidia-settings.png")
  226. pisitools.dolib("libnvidia-gtk2.so.%s" % version, libdir)
  227. pisitools.dolib("libnvidia-gtk3.so.%s" % version, libdir)
  228. # Exit time for emul32 build
  229. #if get.buildTYPE() == 'emul32':
  230. #pisitools.insinto(datadir, "ld.so.conf", "32bit-ld.so.conf")
  231. #return
  232. pisitools.insinto(datadir, "ld.so.conf")
  233. pisitools.insinto(datadir, "XvMCConfig")
  234. pisitools.insinto("/usr/share/dbus-1/system.d", "nvidia-dbus.conf")
  235. # Documentation
  236. docdir = "xorg-video-%s" % driver_dir_name
  237. pisitools.dodoc("LICENSE", "NVIDIA_Changelog", "README.txt", destDir=docdir)
  238. pisitools.dohtml("html/*", destDir=docdir)
  239. ### Note
  240. # This package includes nvidia-setting and nvidia-xconfig binaries. However
  241. # we have seperate packages for each of them. Nvidia provides tarballs for
  242. # these binaries. Don't forget to update these package with each NVIDIA
  243. # driver update.