Files
main/hardware/virtualization/virtualbox/actions.py
T
2018-04-02 16:20:00 +03:00

120 lines
5.1 KiB
Python

# -*- coding: utf-8 -*-
#
# Licensed under the GNU General Public License, version 3.
# See the file http://www.gnu.org/licenses/gpl.txt
from pisi.actionsapi import get
from pisi.actionsapi import autotools
from pisi.actionsapi import pisitools
from pisi.actionsapi import shelltools
from pisi.actionsapi import pythonmodules
from pisi.actionsapi import kerneltools
VBoxLibDir = "/usr/lib/virtualbox"
VBoxDataDir = "/usr/share/virtualbox"
KDIR = kerneltools.getKernelVersion()
def setup():
pisitools.dosed("LocalConfig.kmk", "__VBOXLIBDIR__", VBoxLibDir)
pisitools.dosed("LocalConfig.kmk", "__VBOXDATADIR__", VBoxDataDir)
shelltools.echo("vbox.cfg", "INSTALL_DIR=%s" % VBoxLibDir)
# TODO: Enable web service when we have soapcpp2
autotools.rawConfigure("\
--with-makeself=/bin/echo \
--disable-docs \
--enable-vde \
--enable-vnc \
--enable-webservice \
--with-linux=/usr/src/linux-headers-%s \
--with-gcc=%s \
--with-g++=%s \
" % (KDIR, get.CC(), get.CXX()))
def build():
shelltools.system("source %s/env.sh && kmk" % get.curDIR())
def install():
shelltools.system("awk '$1 ~ /Version:/ { print gensub(/([0-9]+)\.([0-9]+).*/, \"\\\\1\\\\2\", \"g\", $2) }' /usr/lib/pkgconfig/xorg-server.pc > XorgVersion")
with open("XorgVersion", "r") as f:
XorgVersion = f.readline().strip()
pisitools.insinto("/etc/vbox", "vbox.cfg")
shelltools.chmod("src/VBox/Additions/x11/Installer/98vboxadd-xclient", 0755)
pisitools.insinto("/usr/bin", "src/VBox/Additions/x11/Installer/98vboxadd-xclient", "VBoxClient-all")
#pisitools.insinto("/etc/xdg/autostart", "src/VBox/Additions/x11/Installer/vboxclient.desktop")
#pisitools.insinto("/lib/udev/rules.d", "src/VBox/Additions/linux/installer/70-xorg-vboxmouse.rules")
pisitools.insinto("/usr/share/X11/pci", "src/VBox/Additions/x11/Installer/vboxvideo.ids")
#pisitools.insinto("/usr/share/X11/xorg.conf.d", "src/VBox/Additions/x11/Installer/50-vboxmouse.conf")
arch = "amd64" if get.ARCH() == "x86_64" else "x86"
shelltools.cd("out/linux.%s/release/bin" % arch)
# libraries installation. The files below are unnecessary files.
# TODO: change loop and make it more discrete (i.e copying each single file)
exclude = ("additions", "icons", "nls", "scm", "sdk", "src", "SUP", "vboxkeyboard",
"VBox.sh", "VBoxSysInfo.sh", "VBoxCreateUSBNode.sh", "VBoxTunctl", "testcase", "tst", "xpidl")
for _file in shelltools.ls("."):
if _file.startswith(exclude):
continue
print "Installing %s ..." % _file
pisitools.insinto(VBoxLibDir, _file)
pisitools.dobin("VBox*.sh", VBoxDataDir)
pisitools.insinto(VBoxDataDir, "nls")
# TODO: Add vboxwebsrv when ready
# Binaries and Wrapper with Launchers
apps = ("VBoxHeadless", "VBoxManage", "VBoxSDL", "VBoxVRDP", "VirtualBox", "VBoxBalloonCtrl")
for link in apps:
pisitools.dosym("../share/virtualbox/VBox.sh", "/usr/bin/%s" % link)
pisitools.dobin("VBoxTunctl")
# Desktop file, mimetype file for xml and icon
pisitools.domove("%s/*.desktop" % VBoxLibDir, "/usr/share/applications")
pisitools.domove("%s/*.png" % VBoxLibDir, "/usr/share/pixmaps")
pisitools.domove("%s/*.xml" % VBoxLibDir, "/usr/share/mime/packages")
# Mimetypes icons
for size in ["16", "20", "24", "32", "48", "64", "72", "96", "128", "256"]:
pisitools.insinto("/usr/share/icons/hicolor/%sx%s/mimetypes" % (size, size),
"icons/%sx%s/*.png" % (size, size))
# Guest additions
pisitools.dobin("additions/VBoxClient")
pisitools.dobin("additions/VBoxControl")
pisitools.dosbin("additions/VBoxService")
pisitools.dosbin("additions/mount.vboxsf", "/sbin")
pisitools.insinto("/lib/security", "additions/pam_vbox.so")
pisitools.dolib("additions/VBoxOGL*")
pisitools.dosym("../../../VBoxOGL.so", "/usr/lib/xorg/modules/dri/vboxvideo_dri.so")
#pisitools.insinto("/usr/lib/xorg/modules/drivers", "additions/vboxvideo_drv_system.so", "vboxvideo.so")
#pisitools.insinto("/usr/lib/xorg/modules/input", "additions/vboxmouse_drv_%s.so" % XorgVersion, "vboxmouse_drv.so")
# Python bindings
pisitools.insinto("%s/sdk/bindings/xpcom" % VBoxLibDir, "sdk/bindings/xpcom/python")
shelltools.cd("sdk/installer")
shelltools.copy("vboxapisetup.py", "setup.py")
shelltools.export("VBOX_INSTALL_PATH", VBoxLibDir)
pythonmodules.install()
shelltools.cd("../..")
mvb_name = "module-virtualbox-%s" % get.srcVERSION()
mvbg_name = "module-virtualbox-guest-%s" % get.srcVERSION()
shelltools.copy("src", "%s/%s" % (get.workDIR(), mvb_name))
shelltools.copy("additions/src", "%s/%s" % (get.workDIR(), mvbg_name))
shelltools.cd(get.workDIR())
shelltools.system("tar c %s | xz -9 > %s.tar.xz" % ((mvb_name, )*2))
shelltools.unlinkDir(mvb_name)
shelltools.system("tar c %s | xz -9 > %s.tar.xz" % ((mvbg_name, )*2))
shelltools.unlinkDir(mvbg_name)