actions.py 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172
  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 pisitools
  8. from pisi.actionsapi import get
  9. WorkDir = "./"
  10. KDIR = kerneltools.getKernelVersion()
  11. NoStrip = ["/lib/modules"]
  12. BuildDir = "common/lib/modules/fglrx/build_mod"
  13. if get.buildTYPE() == 'emul32':
  14. Target = "x86"
  15. Libdir = "/usr/lib32"
  16. else:
  17. Target = get.ARCH().replace("i686", "x86")
  18. Libdir = "/usr/lib"
  19. XDir = "xpic" + ("_64a" if Target == "x86_64" else "")
  20. def setup():
  21. shelltools.makedirs("%s/common" % get.workDIR())
  22. shelltools.move("lib", "%s/common/" % get.workDIR())
  23. shelltools.move("usr", "%s/common/" % get.workDIR())
  24. shelltools.move("etc", "%s/common/" % get.workDIR())
  25. #shelltools.export("SETUP_NOCHECK", "1")
  26. #shelltools.system("sh amd-driver-installer-*-x86.x86_64.run --extract .")
  27. if get.buildTYPE() == "emul32":
  28. return
  29. # Needed during kernel module compiling
  30. shelltools.sym("../../../../../arch/%s/lib/modules/fglrx/build_mod/libfglrx_ip.a" % Target, "%s/libfglrx_ip.a" % BuildDir)
  31. pisitools.dosed("%s/make.sh" % BuildDir, r"^linuxincludes=.*", "linuxincludes=/lib/modules/%s/build/include" % KDIR)
  32. pisitools.dosed("%s/make.sh" % BuildDir, r"^uname_r=.*", "uname_r=%s" % KDIR)
  33. pisitools.dosed("common/etc/ati/authatieventsd.sh", "/var/lib/xdm/authdir/authfiles", "/var/run/xauth")
  34. shelltools.system("patch -p1 < desktop-files.patch")
  35. #shelltools.system("patch -p1 < fglrx_gpl_symbol.patch")
  36. #shelltools.system("patch -p1 < kolasa_4.0-cr4-strn.patch")
  37. #shelltools.system("patch -p1 < lano1106_fglrx_intel_iommu.patch")
  38. #shelltools.system("patch -p1 < lano1106_kcl_agp_13_4.patch")
  39. shelltools.system("patch -p1 < makefile_compat.patch")
  40. #shelltools.system("patch -p1 < 4.4-manjaro-xstate.patch")
  41. def build():
  42. shelltools.export("SHELL", "/bin/sh")
  43. if get.buildTYPE() == "emul32":
  44. return
  45. shelltools.cd(BuildDir)
  46. shelltools.system("sh ./make.sh")
  47. def install():
  48. # Controlcenter binaries
  49. if not get.buildTYPE() == 'emul32':
  50. pisitools.dobin("arch/%s/usr/X11R6/bin/*" % Target)
  51. pisitools.dobin("common/usr/X11R6/bin/*")
  52. pisitools.dosbin("arch/%s/usr/sbin/*" % Target)
  53. pisitools.dobin("arch/%s/usr/bin/*" % Target)
  54. pisitools.dosbin("common/usr/sbin/*")
  55. # Controlcenter libraries
  56. # The other files under /usr/share are common files like icon,man,doc ,etc ..
  57. DIRS = {
  58. "common/usr/share/doc/fglrx/examples/etc/acpi/events": "/etc/acpi",
  59. "common/etc/*": "/etc",
  60. "arch/%s/etc/OpenCL/*" % Target: "/etc/OpenCL",
  61. "arch/%s/usr/X11R6/lib*/*" % Target: Libdir,
  62. "arch/%s/usr/lib*/*" % Target: Libdir,
  63. "common/usr/share/*": "/usr/share"
  64. }
  65. # Emul32 package don't need files that belongs to /usr/share
  66. if get.buildTYPE() == "emul32":
  67. del DIRS["common/usr/share/*"]
  68. del DIRS["common/etc/*"]
  69. del DIRS["common/usr/share/doc/fglrx/examples/etc/acpi/events"]
  70. for source, target in DIRS.items():
  71. pisitools.insinto(target, source)
  72. # pisitools.insinto("usr/share/ati/lib64", "arch/%s/usr/share/ati/lib*/*" % Target)
  73. # X.org drivers
  74. pisitools.domove("%s/modules" % Libdir, "%s/fglrx" % Libdir)
  75. pisitools.insinto("%s/fglrx/modules" % Libdir, "%s/usr/X11R6/lib*/modules/*" % XDir)
  76. pisitools.insinto("%s/xorg/modules" % Libdir, "%s/usr/X11R6/lib*/modules/*" % XDir)
  77. # libGl library name changed to fglrx-libGl since 1.15
  78. pisitools.domove("%s/fglrx/fglrx-libGL.so.1.2" % Libdir, "%s/fglrx" % Libdir, "libGL.so.1.2.0")
  79. pisitools.domove("%s/fglrx/modules/dri" % Libdir, "%s/xorg/modules/" % Libdir)
  80. pisitools.domove("%s/fglrx/modules/extensions/fglrx/fglrx-libglx.so" % Libdir,
  81. "%s/fglrx/modules/extensions" % Libdir, "libglx.so")
  82. # Necessary symlinks
  83. pisitools.dosym("%s/xorg/modules/dri/fglrx_dri.so" % Libdir, "%s/dri/fglrx_dri.so" % Libdir)
  84. pisitools.dosym("libatiuki.so.1.0", "%s/libatiuki.so.1" % Libdir)
  85. pisitools.dosym("libatiuki.so.1", "%s/libatiuki.so" % Libdir)
  86. pisitools.dosym("libfglrx_dm.so.1.0", "%s/libfglrx_dm.so.1" % Libdir)
  87. pisitools.dosym("libfglrx_dm.so.1", "%s/libfglrx_dm.so" % Libdir)
  88. pisitools.dosym("libAMDXvBA.so.1.0", "%s/libAMDXvBA.so.1" % Libdir)
  89. pisitools.dosym("libAMDXvBA.so.1", "%s/libAMDXvBA.so" % Libdir)
  90. pisitools.dosym("libXvBAW.so.1.0", "%s/libXvBAW.so.1" % Libdir)
  91. pisitools.dosym("libXvBAW.so.1", "%s/libXvBAW.so" % Libdir)
  92. # remove static libs
  93. pisitools.remove("%s/*.a" % Libdir)
  94. if shelltools.isFile("%s%s/fglrx/modules/esut.a" % (get.installDIR(), Libdir)):
  95. pisitools.remove("%s/fglrx/modules/esut.a" % Libdir)
  96. # compatibility links
  97. pisitools.dosym("xorg/modules", "%s/modules" % Libdir)
  98. # OK, That's the end of emul32 build, it's time to exit.
  99. if get.buildTYPE() == "emul32":
  100. return
  101. # Another compatibility link
  102. pisitools.dosym("/usr", "/usr/X11R6")
  103. pisitools.dosym("../security/console.apps/amdcccle-su", "/etc/pam.d/amdcccle-su")
  104. # copy compiled kernel module
  105. pisitools.insinto("/lib/modules/%s/extra/fglrx" % KDIR, "common/lib/modules/fglrx/fglrx.%s.ko" % KDIR, "fglrx.ko")
  106. pisitools.insinto("/lib/modules/%s/kernel/drivers/char/drm" % KDIR, "common/lib/modules/fglrx/fglrx.%s.ko" % KDIR, "fglrx.ko")
  107. # control script for ACPI lid state and AC adapter state
  108. pisitools.insinto("/etc/acpi", "common/usr/share/doc/fglrx/examples/etc/acpi/ati-powermode.sh")
  109. # not needed as xdg-utils package provides xdg-su
  110. pisitools.remove("/usr/bin/amdxdg-su")
  111. pisitools.domove("/usr/share/icons/ccc_large.xpm", "/usr/share/pixmaps", "amdcccle.xpm")
  112. pisitools.removeDir("/usr/share/icons")
  113. #LICENSE information
  114. pisitools.dodoc("LICENSE.TXT")
  115. # Fix file permissions
  116. exec_file_suffixes = (".sh", ".so", ".so.1.2.0")
  117. exec_dir_suffixes = ("/bin", "/sbin", "/lib")
  118. import os
  119. for root, dirs, files in os.walk(get.installDIR()):
  120. for name in files:
  121. filePath = os.path.join(root, name)
  122. if os.path.islink(filePath):
  123. continue
  124. if root.endswith(exec_dir_suffixes) \
  125. or name.endswith(exec_file_suffixes):
  126. shelltools.chmod(filePath, 0755)
  127. else:
  128. shelltools.chmod(filePath, 0644)