actions.py 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  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 pythonmodules
  10. from pisi.actionsapi import kerneltools
  11. VBoxLibDir = "/usr/lib/virtualbox"
  12. VBoxDataDir = "/usr/share/virtualbox"
  13. KDIR = kerneltools.getKernelVersion()
  14. def setup():
  15. pisitools.dosed("LocalConfig.kmk", "__VBOXLIBDIR__", VBoxLibDir)
  16. pisitools.dosed("LocalConfig.kmk", "__VBOXDATADIR__", VBoxDataDir)
  17. shelltools.echo("vbox.cfg", "INSTALL_DIR=%s" % VBoxLibDir)
  18. # TODO: Enable web service when we have soapcpp2
  19. autotools.rawConfigure("\
  20. --with-makeself=/bin/echo \
  21. --disable-docs \
  22. --enable-vde \
  23. --enable-vnc \
  24. --enable-webservice \
  25. --with-linux=/usr/src/linux-headers-%s \
  26. --with-gcc=%s \
  27. --with-g++=%s \
  28. " % (KDIR, get.CC(), get.CXX()))
  29. def build():
  30. shelltools.system("source %s/env.sh && kmk" % get.curDIR())
  31. def install():
  32. shelltools.system("awk '$1 ~ /Version:/ { print gensub(/([0-9]+)\.([0-9]+).*/, \"\\\\1\\\\2\", \"g\", $2) }' /usr/lib/pkgconfig/xorg-server.pc > XorgVersion")
  33. with open("XorgVersion", "r") as f:
  34. XorgVersion = f.readline().strip()
  35. pisitools.insinto("/etc/vbox", "vbox.cfg")
  36. shelltools.chmod("src/VBox/Additions/x11/Installer/98vboxadd-xclient", 0755)
  37. pisitools.insinto("/usr/bin", "src/VBox/Additions/x11/Installer/98vboxadd-xclient", "VBoxClient-all")
  38. #pisitools.insinto("/lib/udev/rules.d", "src/VBox/Additions/linux/installer/70-xorg-vboxmouse.rules")
  39. pisitools.insinto("/usr/share/X11/pci", "src/VBox/Additions/x11/Installer/vboxvideo.ids")
  40. #pisitools.insinto("/usr/share/X11/xorg.conf.d", "src/VBox/Additions/x11/Installer/50-vboxmouse.conf")
  41. arch = "amd64" if get.ARCH() == "x86_64" else "x86"
  42. shelltools.cd("out/linux.%s/release/bin" % arch)
  43. # libraries installation. The files below are unnecessary files.
  44. # TODO: change loop and make it more discrete (i.e copying each single file)
  45. exclude = ("additions", "icons", "nls", "scm", "sdk", "src", "SUP", "vboxkeyboard",
  46. "VBox.sh", "VBoxSysInfo.sh", "VBoxCreateUSBNode.sh", "VBoxTunctl", "testcase", "tst", "xpidl")
  47. for _file in shelltools.ls("."):
  48. if _file.startswith(exclude):
  49. continue
  50. print "Installing %s ..." % _file
  51. pisitools.insinto(VBoxLibDir, _file)
  52. pisitools.dobin("VBox*.sh", VBoxDataDir)
  53. pisitools.insinto(VBoxDataDir, "nls")
  54. # TODO: Add vboxwebsrv when ready
  55. # Binaries and Wrapper with Launchers
  56. apps = ("VBoxHeadless", "VBoxManage", "VBoxSDL", "VBoxVRDP", "VirtualBox", "VBoxBalloonCtrl")
  57. for link in apps:
  58. pisitools.dosym("../share/virtualbox/VBox.sh", "/usr/bin/%s" % link)
  59. pisitools.dobin("VBoxTunctl")
  60. # Desktop file, mimetype file for xml and icon
  61. pisitools.domove("%s/*.desktop" % VBoxLibDir, "/usr/share/applications")
  62. pisitools.domove("%s/*.png" % VBoxLibDir, "/usr/share/pixmaps")
  63. pisitools.domove("%s/*.xml" % VBoxLibDir, "/usr/share/mime/packages")
  64. # Mimetypes icons
  65. for size in ["16", "20", "24", "32", "48", "64", "72", "96", "128", "256"]:
  66. pisitools.insinto("/usr/share/icons/hicolor/%sx%s/mimetypes" % (size, size),
  67. "icons/%sx%s/*.png" % (size, size))
  68. # Guest additions
  69. pisitools.dobin("additions/VBoxClient")
  70. pisitools.dobin("additions/VBoxControl")
  71. pisitools.dosbin("additions/VBoxService")
  72. pisitools.dosbin("additions/mount.vboxsf", "/sbin")
  73. pisitools.insinto("/lib/security", "additions/pam_vbox.so")
  74. pisitools.dolib("additions/VBoxOGL*")
  75. pisitools.dosym("../../../VBoxOGL.so", "/usr/lib/xorg/modules/dri/vboxvideo_dri.so")
  76. #pisitools.insinto("/usr/lib/xorg/modules/drivers", "additions/vboxvideo_drv_system.so", "vboxvideo.so")
  77. #pisitools.insinto("/usr/lib/xorg/modules/input", "additions/vboxmouse_drv_%s.so" % XorgVersion, "vboxmouse_drv.so")
  78. # Python bindings
  79. pisitools.insinto("%s/sdk/bindings/xpcom" % VBoxLibDir, "sdk/bindings/xpcom/python")
  80. shelltools.cd("sdk/installer")
  81. shelltools.copy("vboxapisetup.py", "setup.py")
  82. shelltools.export("VBOX_INSTALL_PATH", VBoxLibDir)
  83. pythonmodules.install()
  84. shelltools.cd("../..")
  85. mvb_name = "module-virtualbox-%s" % get.srcVERSION()
  86. mvbg_name = "module-virtualbox-guest-%s" % get.srcVERSION()
  87. shelltools.copy("src", "%s/%s" % (get.workDIR(), mvb_name))
  88. shelltools.copy("additions/src", "%s/%s" % (get.workDIR(), mvbg_name))
  89. shelltools.cd(get.workDIR())
  90. shelltools.system("tar c %s | xz -9 > %s.tar.xz" % ((mvb_name, )*2))
  91. shelltools.unlinkDir(mvb_name)
  92. shelltools.system("tar c %s | xz -9 > %s.tar.xz" % ((mvbg_name, )*2))
  93. shelltools.unlinkDir(mvbg_name)