actions.py 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137
  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 kerneltools
  6. from pisi.actionsapi import shelltools
  7. from pisi.actionsapi import autotools
  8. from pisi.actionsapi import pisitools
  9. from pisi.actionsapi import get
  10. WorkDir = "."
  11. KDIR = kerneltools.getKernelVersion()
  12. NoStrip = ["/lib/modules"]
  13. version = get.srcVERSION()
  14. driver_dir_name = "nvidia304"
  15. datadir = "/usr/share/%s" % driver_dir_name
  16. if get.buildTYPE() == 'emul32':
  17. arch = "x86"
  18. nvlibdir = "/usr/lib32/%s" % driver_dir_name
  19. libdir = "/usr/lib32"
  20. else:
  21. arch = get.ARCH().replace("i686", "x86")
  22. nvlibdir = "/usr/lib/%s" % driver_dir_name
  23. libdir = "/usr/lib"
  24. def setup():
  25. shelltools.system("sh NVIDIA-Linux-%s-%s.run -x --target tmp"
  26. % (arch, get.srcVERSION()))
  27. shelltools.move("tmp/*", ".")
  28. #shelltools.system("patch -p1 < linux-4.6.patch")
  29. #shelltools.system("patch -p0 < nv-drm.patch")
  30. # Our libc is TLS enabled so use TLS library
  31. shelltools.unlink("*-tls.so*")
  32. shelltools.move("tls/*", ".")
  33. # xorg-server provides libwfb.so
  34. shelltools.unlink("libnvidia-wfb.so.*")
  35. shelltools.echo("ld.so.conf", nvlibdir)
  36. shelltools.echo("XvMCConfig", "%s/libXvMCNVIDIA.so" % nvlibdir)
  37. def build():
  38. # We don't need kernel module for emul32 build
  39. if get.buildTYPE() == 'emul32':
  40. return
  41. shelltools.export("SYSSRC", "/lib/modules/%s/build" % KDIR)
  42. shelltools.cd("kernel")
  43. autotools.make("module")
  44. def install():
  45. if not get.buildTYPE() == 'emul32':
  46. # Kernel driver
  47. pisitools.insinto("/lib/modules/%s/extra/nvidia" % KDIR,
  48. "kernel/nvidia.ko")
  49. # Command line tools and their man pages
  50. pisitools.dobin("nvidia-smi")
  51. pisitools.doman("nvidia-smi.1.gz")
  52. ### Libraries
  53. # OpenGl library
  54. pisitools.dolib("libGL.so.%s" % version, nvlibdir)
  55. pisitools.dosym("libGL.so.%s" % version, "%s/libGL.so.1.2.0" % nvlibdir)
  56. # OpenCL
  57. pisitools.dolib("libOpenCL.so.1.0.0", libdir)
  58. pisitools.dosym("libOpenCL.so.1.0.0", "%s/libOpenCL.so.1.0" % libdir)
  59. pisitools.dosym("libOpenCL.so.1.0", "%s/libOpenCL.so.1" % libdir)
  60. # CUDA
  61. pisitools.dolib("libcuda.so.%s" % version, libdir)
  62. pisitools.dosym("libcuda.so.%s" % version, "%s/libcuda.so.1" % libdir)
  63. pisitools.dosym("libcuda.so.1", "%s/libcuda.so" % libdir)
  64. pisitools.dolib("libnvcuvid.so.%s" % version, libdir)
  65. pisitools.dosym("libnvcuvid.so.%s" % version, "%s/libnvcuvid.so.1" % libdir)
  66. pisitools.dosym("libnvcuvid.so.1", "%s/libnvcuvid.so" % libdir)
  67. # NVML
  68. # Provides programmatic access to static information and monitoring
  69. # data for NVIDIA GPUs, as well as limited managment capabilities
  70. pisitools.dolib("libnvidia-ml.so.%s" % version, libdir)
  71. pisitools.dosym("libnvidia-ml.so.%s" % version, "%s/libnvidia-ml.so.1" % libdir)
  72. pisitools.dolib("libnvidia-cfg.so.%s" % version, libdir)
  73. pisitools.dosym("libnvidia-cfg.so.%s" % version, "%s/libnvidia-cfg.so.1" % libdir)
  74. pisitools.dolib("libnvidia-compiler.so.%s" % version, libdir)
  75. pisitools.dosym("libnvidia-compiler.so.%s" % version, "%s/libnvidia-compiler.so.1" % libdir)
  76. # OpenGL cpre library
  77. for lib in ("glcore", "tls"):
  78. pisitools.dolib("libnvidia-%s.so.%s" % (lib, version), libdir)
  79. # VDPAU driver
  80. pisitools.dolib("libvdpau_nvidia.so.%s" % version, "%s/vdpau" % nvlibdir)
  81. pisitools.dosym("../nvidia-current/vdpau/libvdpau_nvidia.so.%s" % version, "%s/vdpau/libvdpau_nvidia.so.1" % nvlibdir.strip(driver_dir_name))
  82. # X modules
  83. pisitools.dolib("nvidia_drv.so", "%s/modules/drivers" % nvlibdir)
  84. pisitools.dolib("libglx.so.%s" % version, "%s/modules/extensions" % nvlibdir)
  85. pisitools.dosym("libglx.so.%s" % version, "%s/modules/extensions/libglx.so" % nvlibdir)
  86. # Exit time for emul32 build
  87. if get.buildTYPE() == 'emul32':
  88. pisitools.insinto(datadir, "ld.so.conf", "32bit-ld.so.conf")
  89. return
  90. pisitools.insinto("/etc/OpenCL/vendors", "nvidia.icd")
  91. pisitools.insinto(datadir, "ld.so.conf")
  92. pisitools.insinto(datadir, "XvMCConfig")
  93. # Documentation
  94. docdir = "xorg-video-%s" % driver_dir_name
  95. pisitools.dodoc("LICENSE", "NVIDIA_Changelog", "README.txt", destDir=docdir)
  96. pisitools.dohtml("html/*", destDir=docdir)
  97. ### Note
  98. # This package includes nvidia-setting and nvidia-xconfig binaries. However
  99. # we have seperate packages for each of them. Nvidia provides tarballs for
  100. # these binaries. Don't forget to update these package with each NVIDIA
  101. # driver update.
  102. # Nvidia-bug-report
  103. # Comes with our own nvidia-xcfonig package
  104. # pisitools.dobin("nvidia-bug-report.sh")