actions.py 7.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180
  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-%s-%s.run -x --target tmp"
  22. % (arch, get.srcVERSION()))
  23. shelltools.move("tmp/*", ".")
  24. # Our libc is TLS enabled so use TLS library
  25. #shelltools.unlink("*-tls.so*")
  26. #shelltools.move("tls/*", ".")
  27. # xorg-server provides libwfb.so
  28. shelltools.unlink("libnvidia-wfb.so.*")
  29. shelltools.echo("ld.so.conf", nvlibdir)
  30. shelltools.echo("XvMCConfig", "%s/libXvMCNVIDIA.so" % nvlibdir)
  31. def build():
  32. # We don't need kernel module for emul32 build
  33. if get.buildTYPE() == 'emul32':
  34. return
  35. shelltools.export("SYSSRC", "/lib/modules/%s/build" % KDIR)
  36. shelltools.cd("kernel")
  37. autotools.make("module")
  38. #shelltools.cd("uvm")
  39. #autotools.make("module")
  40. def install():
  41. if not get.buildTYPE() == 'emul32':
  42. # Kernel driver
  43. pisitools.insinto("/lib/modules/%s/extra" % KDIR,
  44. "kernel/nvidia.ko")
  45. pisitools.insinto("/lib/modules/%s/extra" % KDIR,
  46. "kernel/nvidia-uvm.ko")
  47. pisitools.insinto("/lib/modules/%s/extra" % KDIR,
  48. "kernel/nvidia-modeset.ko")
  49. # Command line tools and their man pages
  50. pisitools.dobin("nvidia-smi")
  51. pisitools.doman("nvidia-smi.1.gz")
  52. pisitools.dobin("nvidia-debugdump")
  53. pisitools.dobin("nvidia-xconfig")
  54. pisitools.doman("nvidia-xconfig.1.gz")
  55. pisitools.dobin("nvidia-bug-report.sh")
  56. pisitools.dobin("nvidia-cuda-mps-server")
  57. pisitools.dobin("nvidia-cuda-mps-control")
  58. pisitools.doman("nvidia-cuda-mps-control.1.gz")
  59. pisitools.dobin("nvidia-modprobe")
  60. pisitools.doman("nvidia-modprobe.1.gz")
  61. pisitools.dobin("nvidia-persistenced")
  62. pisitools.doman("nvidia-persistenced.1.gz")
  63. pisitools.dobin("nvidia-settings")
  64. pisitools.doman("nvidia-settings.1.gz")
  65. ### Libraries
  66. # OpenGl library
  67. pisitools.dolib("libGL.so.%s" % version, nvlibdir)
  68. pisitools.dosym("libGL.so.%s" % version, "%s/libGL.so.1.2.0" % nvlibdir)
  69. pisitools.dolib("libGL.so.%s" % version, libdir)
  70. pisitools.dolib("libEGL.so.1", nvlibdir)
  71. pisitools.dolib("libEGL_nvidia.so.%s" % version, libdir)
  72. pisitools.dolib("libGLESv1_CM_nvidia.so.%s" % version, libdir)
  73. pisitools.dolib("libGLESv2_nvidia.so.%s" % version, libdir)
  74. # OpenCL
  75. pisitools.insinto("/etc/OpenCL/vendors", "nvidia.icd")
  76. pisitools.dolib("libnvidia-compiler.so.%s" % version, libdir)
  77. pisitools.dosym("libnvidia-compiler.so.%s" % version, "%s/libnvidia-compiler.so.1" % libdir)
  78. pisitools.dolib("libOpenCL.so.1.0.0", libdir)
  79. pisitools.dosym("libOpenCL.so.1.0.0", "%s/libOpenCL.so.1.0" % libdir)
  80. pisitools.dosym("libOpenCL.so.1.0", "%s/libOpenCL.so.1" % libdir)
  81. pisitools.dolib("libnvidia-opencl.so.%s" % version, libdir)
  82. pisitools.dosym("libnvidia-opencl.so.%s" % version, "%s/libnvidia-opencl.so.1" % libdir)
  83. pisitools.dosym("libnvidia-opencl.so.1", "%s/libnvidia-opencl.so" % libdir)
  84. # CUDA
  85. pisitools.dolib("libcuda.so.%s" % version, libdir)
  86. pisitools.dosym("libcuda.so.%s" % version, "%s/libcuda.so.1" % libdir)
  87. pisitools.dosym("libcuda.so.1", "%s/libcuda.so" % libdir)
  88. pisitools.dolib("libnvcuvid.so.%s" % version, libdir)
  89. pisitools.dosym("libnvcuvid.so.%s" % version, "%s/libnvcuvid.so.1" % libdir)
  90. pisitools.dosym("libnvcuvid.so.1", "%s/libnvcuvid.so" % libdir)
  91. # NVML
  92. # Provides programmatic access to static information and monitoring
  93. # data for NVIDIA GPUs, as well as limited managment capabilities
  94. pisitools.dolib("libnvidia-ml.so.%s" % version, libdir)
  95. pisitools.dosym("libnvidia-ml.so.%s" % version, "%s/libnvidia-ml.so.1" % libdir)
  96. pisitools.dolib("libnvidia-cfg.so.%s" % version, libdir)
  97. pisitools.dosym("libnvidia-cfg.so.%s" % version, "%s/libnvidia-cfg.so.1" % libdir)
  98. # OpenGL core library and others
  99. for lib in ("glcore", "tls", "encode", "fbc", "glsi", "ifr", "eglcore"):
  100. pisitools.dolib("libnvidia-%s.so.%s" % (lib, version), libdir)
  101. pisitools.dosym("libnvidia-%s.so.%s" % (lib, version), "%s/libnvidia-%s.so.1" %(libdir, lib))
  102. # VDPAU driver
  103. pisitools.dolib("libvdpau_nvidia.so.%s" % version, "%s/vdpau" % libdir)
  104. pisitools.dosym("libvdpau_nvidia.so.%s" % version, "%s/libvdpau_nvidia.so" % libdir)
  105. # nvidia-tls library
  106. pisitools.dolib("libnvidia-tls.so.%s" % version, libdir)
  107. pisitools.dolib("tls/libnvidia-tls.so.%s" % version, "%s/tls" % libdir)
  108. # X modules
  109. pisitools.dolib("nvidia_drv.so", "%s/modules/drivers" % xorglibdir)
  110. pisitools.dolib("libglx.so.%s" % version, "%s/modules/extensions" % xorglibdir)
  111. pisitools.dosym("libglx.so.%s" % version, "%s/modules/extensions/libglx.so.1" % xorglibdir)
  112. pisitools.dolib("libGLX_nvidia.so.%s" % version, libdir)
  113. pisitools.dosym("libGLX_nvidia.so.%s" % version, "%s/libGLX_indirect.so.0" % libdir)
  114. # PTX JIT Compiler (Parallel Thread Execution (PTX) is a pseudo-assembly language for CUDA)
  115. pisitools.dolib("libnvidia-ptxjitcompiler.so.%s" % version, libdir)
  116. # Fat (multiarchitecture) binary loader
  117. pisitools.dolib("libnvidia-fatbinaryloader.so.%s" % version, libdir)
  118. pisitools.insinto("/usr/share/X11/xorg.conf.d", "nvidia-drm-outputclass.conf")
  119. # pisitools.insinto("/usr/share/nvidia", "nvidia-application-profiles-367.27-rc")
  120. # pisitools.insinto("/usr/share/nvidia", "nvidia-application-profiles-367.27-key-documentation")
  121. pisitools.insinto("/usr/share/pixmaps", "nvidia-settings.png")
  122. pisitools.dolib("libnvidia-gtk2.so.%s" % version, libdir)
  123. pisitools.dolib("libnvidia-gtk3.so.%s" % version, libdir)
  124. # Exit time for emul32 build
  125. if get.buildTYPE() == 'emul32':
  126. pisitools.insinto(datadir, "ld.so.conf", "32bit-ld.so.conf")
  127. return
  128. pisitools.insinto(datadir, "ld.so.conf")
  129. pisitools.insinto(datadir, "XvMCConfig")
  130. # Documentation
  131. docdir = "xorg-video-%s" % driver_dir_name
  132. pisitools.dodoc("LICENSE", "NVIDIA_Changelog", "README.txt", destDir=docdir)
  133. pisitools.dohtml("html/*", destDir=docdir)
  134. ### Note
  135. # This package includes nvidia-setting and nvidia-xconfig binaries. However
  136. # we have seperate packages for each of them. Nvidia provides tarballs for
  137. # these binaries. Don't forget to update these package with each NVIDIA
  138. # driver update.