From 91ab8ea8b23a50f4438573f3e315dc2dca6bb1ed Mon Sep 17 00:00:00 2001 From: Sergei Reznikov Date: Sun, 22 Jan 2017 10:49:43 +0000 Subject: [PATCH] VirtualBox Guest Additions: add recipe and patch for version 5.1.14 * build fails on x86_64 at the very end with the following error: undefined reference to `__dso_handle' * TODO: use proper KBUILD_PATH --- ...virtualbox_guest_additions-5.1.14.patchset | 303 ++++++++++++++++++ ...rtualbox_guest_additions-4.3.53_svn.recipe | 2 +- .../virtualbox_guest_additions-5.1.14.recipe | 108 +++++++ 3 files changed, 412 insertions(+), 1 deletion(-) create mode 100644 app-emulation/virtualbox-guest-additions/patches/virtualbox_guest_additions-5.1.14.patchset create mode 100644 app-emulation/virtualbox-guest-additions/virtualbox_guest_additions-5.1.14.recipe diff --git a/app-emulation/virtualbox-guest-additions/patches/virtualbox_guest_additions-5.1.14.patchset b/app-emulation/virtualbox-guest-additions/patches/virtualbox_guest_additions-5.1.14.patchset new file mode 100644 index 000000000..76e66b48a --- /dev/null +++ b/app-emulation/virtualbox-guest-additions/patches/virtualbox_guest_additions-5.1.14.patchset @@ -0,0 +1,303 @@ +From c4b6e70754a3318ca4708fd2efc862b257231a64 Mon Sep 17 00:00:00 2001 +From: Segey Reznikov +Date: Wed, 18 Jan 2017 00:26:11 +0000 +Subject: Haiku fixes + + +diff --git a/Config.kmk b/Config.kmk +index 8637671..7c25b92 100644 +--- a/Config.kmk ++++ b/Config.kmk +@@ -2746,8 +2746,8 @@ if $(KBUILD_TARGET) == "linux" \ + VBOX_GCC_WARN_PEDANTIC += $(VBOX_GCC_WARN_MASOCHISTIC) + endif + +-VBOX_GCC_PEDANTIC_CXX ?= -pedantic $(VBOX_GCC_WARN_PEDANTIC) $(VBOX_GCC_Wno-return-type-c-linkage) $(VBOX_GCC_Wno-overloaded-virtual) +-VBOX_GCC_PEDANTIC_C ?= -pedantic $(VBOX_GCC_WARN_PEDANTIC) -Wmissing-prototypes -Wstrict-prototypes -Wmissing-declarations -Werror-implicit-function-declaration ++VBOX_GCC_PEDANTIC_CXX ?= $(VBOX_GCC_WARN_PEDANTIC) $(VBOX_GCC_Wno-return-type-c-linkage) $(VBOX_GCC_Wno-overloaded-virtual) ++VBOX_GCC_PEDANTIC_C ?= $(VBOX_GCC_WARN_PEDANTIC) -Wmissing-prototypes -Wstrict-prototypes -Wmissing-declarations -Werror-implicit-function-declaration + + VBOX_GCC_NON_PEDANTIC_CXX ?= -Wno-sign-compare + VBOX_GCC_NON_PEDANTIC_C ?= -Wno-sign-compare -Werror-implicit-function-declaration +@@ -4474,8 +4474,8 @@ TEMPLATE_VBOXR0DRV_LDTOOL = $(VBOX_GCC_TOOL) + TEMPLATE_VBOXR0DRV_DEFS = _KERNEL_MODE=1 _STRICT_STDC IN_RING0 IN_RT_R0 + TEMPLATE_VBOXR0DRV_INCS = $(VBOX_HAIKU_SYS_INCS) + #TODO: sort this out +-TEMPLATE_VBOXR0DRV_LDFLAGS = -shared -no-undefined -dc -dy -lroot -rpath-link /boot/system/develop/lib/x86 --no-add-needed /boot/system/develop/lib/_KERNEL_ --no-add-needed /boot/system/develop/lib/haiku_version_glue.o +-TEMPLATE_VBOXR0DRV_CFLAGS = -fno-PIC \ ++TEMPLATE_VBOXR0DRV_LDFLAGS = -shared -no-undefined -dc -dy -lstdc++ -lsupc++ -lroot -rpath-link /system/develop/lib --no-add-needed /system/develop/lib/_KERNEL_ --no-add-needed /system/develop/lib/haiku_version_glue.o ++TEMPLATE_VBOXR0DRV_CFLAGS = -fPIC \ + $(VBOX_GCC_WARN) -Wstrict-prototypes $(VBOX_GCC_Wno-pointer-sign) -Wno-sign-compare \ + $(VBOX_GCC_fno-stack-protector) $(VBOX_GCC_R0_OPT) $(VBOX_GCC_R0_FP) -fno-strict-aliasing -fno-common -Werror-implicit-function-declaration + TEMPLATE_VBOXR0DRV_CFLAGS.x86 = -mno-sse -mno-mmx -mno-sse2 -mno-3dnow +@@ -4483,7 +4483,7 @@ TEMPLATE_VBOXR0DRV_CFLAGS.x86 = -m32 -mno-sse -mno-mmx -mno-sse2 -mno-3 + TEMPLATE_VBOXR0DRV_CFLAGS.amd64 = -m64 -mno-sse -mno-mmx -mno-sse2 -mno-3dnow \ + -fno-reorder-blocks -ffreestanding -fno-asynchronous-unwind-tables -funit-at-a-time \ + -Wno-sign-compare +-TEMPLATE_VBOXR0DRV_CXXFLAGS = -fno-PIC -Wpointer-arith \ ++TEMPLATE_VBOXR0DRV_CXXFLAGS = -fPIC -Wpointer-arith \ + -Wshadow -Wuninitialized -Wunused-function -Wunused-label -Wunused-value -Wunused-variable \ + -Wformat \ + -O2 -nodefaultlibs -fno-omit-frame-pointer -fno-strict-aliasing -fno-common -fno-exceptions -fno-rtti +@@ -4664,9 +4664,9 @@ TEMPLATE_VBOXR3EXE_LIBS = network iconv stdc++ supc++ + TEMPLATE_VBOXR3EXE_LIBPATH += \ + /boot/common/lib + # Haiku uses PIC by default... +-TEMPLATE_VBOXR3EXE_CFLAGS += -fno-pic +-TEMPLATE_VBOXR3EXE_CXXFLAGS += -fno-pic +-TEMPLATE_VBOXR3EXE_LDFLAGS += -fno-pic ++TEMPLATE_VBOXR3EXE_CFLAGS += -fPIC ++TEMPLATE_VBOXR3EXE_CXXFLAGS += -fPIC ++TEMPLATE_VBOXR3EXE_LDFLAGS += -fPIC + else if1of ($(KBUILD_TARGET), freebsd openbsd) + TEMPLATE_VBOXR3EXE_TOOL = GXX3 + TEMPLATE_VBOXR3EXE_LIBS = pthread +@@ -4724,9 +4724,9 @@ ifn1of ($(KBUILD_TARGET), darwin win os2) + endif + ifeq ($(KBUILD_TARGET),haiku) + # Haiku uses PIC by default... +- TEMPLATE_VBOXR3_CFLAGS = $(TEMPLATE_VBOXR3EXE_CFLAGS) -fno-pic +- TEMPLATE_VBOXR3_CXXFLAGS = $(TEMPLATE_VBOXR3EXE_CXXFLAGS) -fno-pic +- TEMPLATE_VBOXR3_LDFLAGS = $(TEMPLATE_VBOXR3EXE_LDFLAGS) -fno-pic ++ TEMPLATE_VBOXR3_CFLAGS = $(TEMPLATE_VBOXR3EXE_CFLAGS) -fPIC ++ TEMPLATE_VBOXR3_CXXFLAGS = $(TEMPLATE_VBOXR3EXE_CXXFLAGS) -fPIC ++ TEMPLATE_VBOXR3_LDFLAGS = $(TEMPLATE_VBOXR3EXE_LDFLAGS) -fPIC + endif + + # +diff --git a/src/VBox/Additions/common/VBoxGuest/VBoxDev-haiku.c b/src/VBox/Additions/common/VBoxGuest/VBoxDev-haiku.c +index b56e972..375f845 100644 +--- a/src/VBox/Additions/common/VBoxGuest/VBoxDev-haiku.c ++++ b/src/VBox/Additions/common/VBoxGuest/VBoxDev-haiku.c +@@ -104,7 +104,7 @@ static status_t vgdrvHaikuOpen(const char *name, uint32 flags, void **cookie) + return B_OK; + } + +- LogRel((DRIVER_NAME ":vgdrvHaikuOpen: failed. rc=%d\n", rc)); ++ Log((DRIVER_NAME ":vgdrvHaikuOpen: failed. rc=%d\n", rc)); + return RTErrConvertToErrno(rc); + } + +@@ -176,7 +176,7 @@ static status_t vgdrvHaikuIOCtl(void *cookie, uint32 op, void *data, size_t len) + { + PVBOXGUESTSESSION pSession = (PVBOXGUESTSESSION)cookie; + int rc; +- Log(("vgdrvHaikuIOCtl: cookie=%p op=0x%08x data=%p len=%lu)\n", cookie, op, data, len)); ++ LogFlow(("vgdrvHaikuIOCtl: cookie=%p op=0x%08x data=%p len=%lu)\n", cookie, op, data, len)); + + /* + * Validate the input. +@@ -211,7 +211,7 @@ static status_t vgdrvHaikuIOCtl(void *cookie, uint32 op, void *data, size_t len) + pvBuf = RTMemTmpAlloc(len); + if (RT_UNLIKELY(!pvBuf)) + { +- LogRel((DRIVER_NAME ":vgdrvHaikuIOCtl: RTMemTmpAlloc failed to alloc %d bytes.\n", len)); ++ Log((DRIVER_NAME ":vgdrvHaikuIOCtl: RTMemTmpAlloc failed to alloc %d bytes.\n", len)); + return ENOMEM; + } + +@@ -220,13 +220,13 @@ static status_t vgdrvHaikuIOCtl(void *cookie, uint32 op, void *data, size_t len) + if (RT_UNLIKELY(rc < 0)) + { + RTMemTmpFree(pvBuf); +- LogRel((DRIVER_NAME ":vgdrvHaikuIOCtl: user_memcpy failed; pvBuf=%p data=%p op=%d. rc=%d\n", pvBuf, data, op, rc)); ++ Log((DRIVER_NAME ":vgdrvHaikuIOCtl: user_memcpy failed; pvBuf=%p data=%p op=%d. rc=%d\n", pvBuf, data, op, rc)); + return EFAULT; + } + if (RT_UNLIKELY(!VALID_PTR(pvBuf))) + { + RTMemTmpFree(pvBuf); +- LogRel((DRIVER_NAME ":vgdrvHaikuIOCtl: pvBuf invalid pointer %p\n", pvBuf)); ++ Log((DRIVER_NAME ":vgdrvHaikuIOCtl: pvBuf invalid pointer %p\n", pvBuf)); + return EINVAL; + } + } +diff --git a/src/VBox/Additions/common/VBoxGuest/VBoxGuest-haiku-stubs.c b/src/VBox/Additions/common/VBoxGuest/VBoxGuest-haiku-stubs.c +index b013db2..c454e32 100644 +--- a/src/VBox/Additions/common/VBoxGuest/VBoxGuest-haiku-stubs.c ++++ b/src/VBox/Additions/common/VBoxGuest/VBoxGuest-haiku-stubs.c +@@ -338,10 +338,6 @@ RTDECL(PRTLOGGER) RTLogRelGetDefaultInstance(void) + { + return g_VBoxGuest->_RTLogRelGetDefaultInstance(); + } +-RTDECL(PRTLOGGER) RTLogRelGetDefaultInstance(uint32_t fFlags, uint32_t iGroup) +-{ +- return g_VBoxGuest->_RTLogRelGetDefaultInstanceEx(fFlags, iGroup); +-} + RTDECL(int) RTErrConvertToErrno(int iErr) + { + return g_VBoxGuest->_RTErrConvertToErrno(iErr); +diff --git a/src/VBox/Additions/common/VBoxGuest/VBoxGuest-haiku.c b/src/VBox/Additions/common/VBoxGuest/VBoxGuest-haiku.c +index 72bc988..37e0912 100644 +--- a/src/VBox/Additions/common/VBoxGuest/VBoxGuest-haiku.c ++++ b/src/VBox/Additions/common/VBoxGuest/VBoxGuest-haiku.c +@@ -186,9 +186,6 @@ static struct vboxguest_module_info g_VBoxGuest = + VGDrvCommonIoCtl, + VGDrvCommonCreateUserSession, + VGDrvCommonCloseSession, +- VBoxGuestIDCOpen, +- VBoxGuestIDCClose, +- VBoxGuestIDCCall, + RTAssertMsg1Weak, + RTAssertMsg2Weak, + RTAssertMsg2WeakV, +diff --git a/src/VBox/Additions/common/VBoxGuestLib/Init.cpp b/src/VBox/Additions/common/VBoxGuestLib/Init.cpp +index e8c985e..041ac23 100644 +--- a/src/VBox/Additions/common/VBoxGuestLib/Init.cpp ++++ b/src/VBox/Additions/common/VBoxGuestLib/Init.cpp +@@ -167,7 +167,7 @@ int vbglInitCommon (void) + } + else + { +- LogRel(("vbglInitCommon: VbglPhysHeapInit failed. rc=%Rrc\n", rc)); ++ Log(("vbglInitCommon: VbglPhysHeapInit failed. rc=%Rrc\n", rc)); + g_vbgldata.status = VbglStatusNotInitialized; + } + +diff --git a/src/VBox/Additions/common/VBoxGuestLib/PhysHeap.cpp b/src/VBox/Additions/common/VBoxGuestLib/PhysHeap.cpp +index 7ba42a4..8722647 100644 +--- a/src/VBox/Additions/common/VBoxGuestLib/PhysHeap.cpp ++++ b/src/VBox/Additions/common/VBoxGuestLib/PhysHeap.cpp +@@ -314,7 +314,7 @@ static VBGLPHYSHEAPBLOCK *vbglPhysHeapChunkAlloc (uint32_t cbSize) + + if (!pChunk) + { +- LogRel(("vbglPhysHeapChunkAlloc: failed to alloc %u contiguous bytes.\n", cbSize)); ++ Log(("vbglPhysHeapChunkAlloc: failed to alloc %u contiguous bytes.\n", cbSize)); + return NULL; + } + +diff --git a/src/VBox/Additions/common/VBoxGuestLib/VBoxGuestR3Lib.cpp b/src/VBox/Additions/common/VBoxGuestLib/VBoxGuestR3Lib.cpp +index 9510688..12ceb20 100644 +--- a/src/VBox/Additions/common/VBoxGuestLib/VBoxGuestR3Lib.cpp ++++ b/src/VBox/Additions/common/VBoxGuestLib/VBoxGuestR3Lib.cpp +@@ -426,7 +426,7 @@ int vbglR3DoIOCtl(unsigned iFunction, void *pvData, size_t cbData) + # elif defined(RT_OS_HAIKU) + /* The ioctl hook in Haiku does take the len parameter when specified, + * so just use it. */ +- int rc = ioctl((int)g_File, iFunction, pvData, cbData); ++ int rc = ioctl(RTFileToNative(g_File), iFunction, pvData, cbData); + # else + # error Port me! + # endif +diff --git a/src/VBox/Additions/haiku/SharedFolders/lock.h b/src/VBox/Additions/haiku/SharedFolders/lock.h +index 07c9e61..6badd17 100644 +--- a/src/VBox/Additions/haiku/SharedFolders/lock.h ++++ b/src/VBox/Additions/haiku/SharedFolders/lock.h +@@ -64,7 +64,7 @@ typedef struct rw_lock { + const char* name; + struct rw_lock_waiter* waiters; + thread_id holder; +- vint32 count; ++ int32 count; + int32 owner_count; + int16 active_readers; + // Only > 0 while a writer is waiting: number +diff --git a/src/VBox/Additions/haiku/SharedFolders/vnode_cache.cpp b/src/VBox/Additions/haiku/SharedFolders/vnode_cache.cpp +index 92bee8f..fc1ebc2 100644 +--- a/src/VBox/Additions/haiku/SharedFolders/vnode_cache.cpp ++++ b/src/VBox/Additions/haiku/SharedFolders/vnode_cache.cpp +@@ -77,7 +77,7 @@ static ino_t g_nextVnid = 1; + mutex g_vnodeCacheLock; + + +-extern "C" status_t vboxsf_new_vnode(PVBSFMAP map, PSHFLSTRING path, PSHFLSTRING name, vboxsf_vnode** p) ++extern "C" status_t vboxsf_new_vnode(PVBGLSFMAP map, PSHFLSTRING path, PSHFLSTRING name, vboxsf_vnode** p) + { + vboxsf_vnode* vn = (vboxsf_vnode*)malloc(sizeof(vboxsf_vnode)); + if (vn == NULL) +diff --git a/src/VBox/Additions/haiku/VBoxTray/VBoxClipboard.cpp b/src/VBox/Additions/haiku/VBoxTray/VBoxClipboard.cpp +index 13467b2..733ea5a 100644 +--- a/src/VBox/Additions/haiku/VBoxTray/VBoxClipboard.cpp ++++ b/src/VBox/Additions/haiku/VBoxTray/VBoxClipboard.cpp +@@ -255,7 +255,7 @@ void VBoxClipboardService::MessageReceived(BMessage *message) + if (formats & VBOX_SHARED_CLIPBOARD_FMT_UNICODETEXT) + { + const char *text; +- int32 textLen; ++ ssize_t textLen; + if (clip->FindData("text/plain", B_MIME_TYPE, (const void **)&text, &textLen) == B_OK) + { + // usually doesn't include the \0 so be safe +@@ -314,7 +314,7 @@ void VBoxClipboardService::MessageReceived(BMessage *message) + { + printf("B_CLIPBOARD_CHANGED\n"); + const void *data; +- int32 dataLen; ++ ssize_t dataLen; + if (!be_clipboard->Lock()) + break; + +diff --git a/src/VBox/Additions/haiku/VBoxTray/VBoxGuestApplication.cpp b/src/VBox/Additions/haiku/VBoxTray/VBoxGuestApplication.cpp +index 37c229a..f59489c 100644 +--- a/src/VBox/Additions/haiku/VBoxTray/VBoxGuestApplication.cpp ++++ b/src/VBox/Additions/haiku/VBoxTray/VBoxGuestApplication.cpp +@@ -51,7 +51,6 @@ + #include + + #include +-#include + #include + #include + #include +diff --git a/src/VBox/Additions/haiku/VBoxVideo/driver/driver.cpp b/src/VBox/Additions/haiku/VBoxVideo/driver/driver.cpp +index b15afdb..4b3797e 100644 +--- a/src/VBox/Additions/haiku/VBoxVideo/driver/driver.cpp ++++ b/src/VBox/Additions/haiku/VBoxVideo/driver/driver.cpp +@@ -171,10 +171,10 @@ status_t init_hardware() + if (err == B_OK) + return B_OK; + +- LogRel((DRIVER_NAME ":_init_hardware() get_module(%s) failed. err=%08lx\n", B_PCI_MODULE_NAME)); ++ Log((DRIVER_NAME ":_init_hardware() get_module(%s) failed. err=%08lx\n", B_PCI_MODULE_NAME)); + } + else +- LogRel((DRIVER_NAME ":_init_hardware() get_module(%s) failed. err=%08lx\n", VBOXGUEST_MODULE_NAME, err)); ++ Log((DRIVER_NAME ":_init_hardware() get_module(%s) failed. err=%08lx\n", VBOXGUEST_MODULE_NAME, err)); + return B_ERROR; + } + +diff --git a/src/VBox/Runtime/r3/posix/process-creation-posix.cpp b/src/VBox/Runtime/r3/posix/process-creation-posix.cpp +index 7fc3a43..2d3b957 100644 +--- a/src/VBox/Runtime/r3/posix/process-creation-posix.cpp ++++ b/src/VBox/Runtime/r3/posix/process-creation-posix.cpp +@@ -71,6 +71,11 @@ + # include + #endif + ++#ifdef RT_OS_HAIKU ++#define _BSD_SOURCE ++# include ++#endif ++ + #ifndef RT_OS_SOLARIS + # include + #else +diff --git a/src/libs/kStuff/kStuff/include/k/kDefs.h b/src/libs/kStuff/kStuff/include/k/kDefs.h +index f805cc3..3207d50 100644 +--- a/src/libs/kStuff/kStuff/include/k/kDefs.h ++++ b/src/libs/kStuff/kStuff/include/k/kDefs.h +@@ -60,8 +60,10 @@ + #define K_OS_SOLARIS 9 + /** Windows. */ + #define K_OS_WINDOWS 10 ++/** Haiku. */ ++#define K_OS_HAIKU 11 + /** The max K_OS_* value (exclusive). */ +-#define K_OS_MAX 11 ++#define K_OS_MAX 12 + /** @} */ + + /** @def K_OS +@@ -94,6 +96,8 @@ + # define K_OS K_OS_SOLARIS + # elif defined(_WIN32) || defined(_WIN64) + # define K_OS K_OS_WINDOWS ++# elif defined(__HAIKU__) ++# define K_OS K_OS_HAIKU + # else + # error "Port Me" + # endif +-- +2.11.0 + diff --git a/app-emulation/virtualbox-guest-additions/virtualbox_guest_additions-4.3.53_svn.recipe b/app-emulation/virtualbox-guest-additions/virtualbox_guest_additions-4.3.53_svn.recipe index dd7c42c06..8d3460e25 100644 --- a/app-emulation/virtualbox-guest-additions/virtualbox_guest_additions-4.3.53_svn.recipe +++ b/app-emulation/virtualbox-guest-additions/virtualbox_guest_additions-4.3.53_svn.recipe @@ -15,7 +15,7 @@ REVISION="5" SOURCE_URI="svn+http://www.virtualbox.org/svn/vbox/trunk#53373" PATCHES="virtualbox_guest_additions-$portVersion.patchset" -ARCHITECTURES="x86_gcc2 x86 x86_64" +ARCHITECTURES="x86_gcc2 x86 !x86_64" PROVIDES=" virtualbox_guest_additions$secondaryArchSuffix = $portVersion diff --git a/app-emulation/virtualbox-guest-additions/virtualbox_guest_additions-5.1.14.recipe b/app-emulation/virtualbox-guest-additions/virtualbox_guest_additions-5.1.14.recipe new file mode 100644 index 000000000..086deeb37 --- /dev/null +++ b/app-emulation/virtualbox-guest-additions/virtualbox_guest_additions-5.1.14.recipe @@ -0,0 +1,108 @@ +SUMMARY="VirtualBox kernel modules and user-space tools for Haiku guests" +DESCRIPTION="VirtualBox is a free x86 virtualization solution allowing a wide \ +range of x86 operating systems such as Windows, DOS, BSD or Linux to run on a \ +Linux system. + +This package contains the VirtualBox kernel modules and user-space \ +tools for Haiku guests." +HOMEPAGE="https://www.virtualbox.org/" +COPYRIGHT="2003-2017 Oracle Corporation" +LICENSE=" + GNU GPL v2 + CDDL v1 + " +REVISION="1" +SOURCE_URI="http://download.virtualbox.org/virtualbox/$portVersion/VirtualBox-$portVersion.tar.bz2" +CHECKSUM_SHA256="8267bb026717c6e55237eb798210767d9c703cfcdf01224d9bc26f7dac9f228a" +SOURCE_DIR="VirtualBox-$portVersion" +PATCHES="virtualbox_guest_additions-$portVersion.patchset" + +ARCHITECTURES="!x86_gcc2 ?x86 !x86_64" + +PROVIDES=" + virtualbox_guest_additions$secondaryArchSuffix = $portVersion + cmd:VBoxControl$secondaryArchSuffix = $portVersion + cmd:VBoxService$secondaryArchSuffix = $portVersion + cmd:VBoxTray$secondaryArchSuffix = $portVersion + " +REQUIRES=" + haiku$secondaryArchSuffix + lib:libiconv$secondaryArchSuffix + lib:libz$secondaryArchSuffix + lib:libpng$secondaryArchSuffix + lib:libcurl$secondaryArchSuffix + " + +BUILD_REQUIRES=" + haiku${secondaryArchSuffix}_devel + devel:libiconv$secondaryArchSuffix + devel:libz$secondaryArchSuffix + devel:libpng$secondaryArchSuffix + devel:libcurl$secondaryArchSuffix + " +BUILD_PREREQUIRES=" + cmd:gcc$secondaryArchSuffix + cmd:grep + cmd:kmk$secondaryArchSuffix + cmd:ld$secondaryArchSuffix + cmd:mkisofs + cmd:sed + cmd:which + cmd:xres + cmd:yasm + " + +BUILD() +{ + export USER=user + export KBUILD_PATH=/system/package-links/kbuild-0.1.9998svn~git-1/.self/data +# ./configure --build-headless --disable-python --disable-java --nofatal + ./configure --only-additions + source env.sh + kmk VBOX_ONLY_ADDITIONS=1 VBOX_WITH_ADDITION_DRIVERS=1 BUILD_TYPE=strict all +} + +INSTALL() +{ + cd out/haiku.x86/strict/bin/additions + mkdir -p $addOnsDir/kernel/{generic,drivers/bin,drivers/dev/misc} + + cp vboxguest $addOnsDir/kernel/generic + cp vboxdev $addOnsDir/kernel/drivers/bin + ln -fs ../../bin/vboxdev $addOnsDir/kernel/drivers/dev/misc + + mkdir -p $addOnsDir/kernel/file_systems + cp vboxsf $addOnsDir/kernel/file_systems + +# mkdir -p $addOnsDir/{input_server/filters,input_server/devices} +# cp VBoxMouseFilter $addOnsDir/input_server/filters +# cp VBoxMouse $addOnsDir/input_server/devices + +# mkdir -p $addOnsDir/{accelerants,kernel/drivers/dev/graphics} +# cp vboxvideo $addOnsDir/kernel/drivers/bin +# ln -fs ../../bin/vboxvideo $addOnsDir/kernel/drivers/dev/graphics +# cp vboxvideo.accelerant $addOnsDir/accelerants + + mkdir -p $binDir + + xres -o file.tmp VBoxControl ; strip -S VBoxControl ; xres -o VBoxControl file.tmp + xres -o file.tmp VBoxService ; strip -S VBoxService ; xres -o VBoxService file.tmp + xres -o file.tmp VBoxTray ; strip -S VBoxTray ; xres -o VBoxTray file.tmp + + cp VBoxControl VBoxService VBoxTray $binDir + + + # install VBoxTray replicant +# mkdir -p $prefix/boot/post-install +# cat <<'EOF' > $prefix/boot/post-install/install-VBoxTray-replicant.sh +#!/bin/sh +#/bin/VBoxTray +#EOF +# chmod a+x $prefix/boot/post-install/install-VBoxTray-replicant.sh + + + # Add a symlink to the Desktop applets directory in Deskbar + desktopAppletsDir="$dataDir/deskbar/menu/Desktop applets" + mkdir -p $desktopAppletsDir + ln -s $binDir/VBoxTray $desktopAppletsDir +}