Config.kmk | 18 +- configure | 27 +- include/VBox/ostypes.h | 2 + .../Additions/common/VBoxGuestLib/Makefile.kmk | 4 +- src/VBox/Additions/common/crOpenGL/Makefile.kmk | 14 +- .../Additions/linux/installer/vboxadd-service.sh | 261 +--------- src/VBox/Additions/linux/installer/vboxadd.sh | 527 +++----------------- src/VBox/Additions/x11/Installer/98vboxadd-xclient | 8 +- src/VBox/Additions/x11/Makefile.kmk | 4 + src/VBox/Additions/x11/vboxmouse/Makefile.kmk | 19 +- src/VBox/Additions/x11/vboxvideo/Makefile.kmk | 45 +- src/VBox/Devices/Makefile.kmk | 6 +- src/VBox/Devices/testcase/Makefile.kmk | 4 + src/VBox/Frontends/VBoxBFE/Makefile.kmk | 1 + src/VBox/Frontends/VBoxFB/Makefile.kmk | 1 + src/VBox/Frontends/VBoxManage/Makefile.kmk | 1 + src/VBox/Frontends/VBoxSDL/Makefile.kmk | 1 + src/VBox/Frontends/VirtualBox/Makefile.kmk | 1 + src/VBox/Frontends/VirtualBox/VirtualBox2.qrc | 2 + .../VirtualBox/src/globals/VBoxGlobal.cpp | 2 + .../src/widgets/VBoxOSTypeSelectorWidget.cpp | 7 +- .../VirtualBox/src/wizards/newvm/UINewVMWzd.cpp | 2 + src/VBox/Installer/common/virtualbox.desktop.in | 2 + src/VBox/Main/Makefile.kmk | 5 + src/VBox/Main/src-all/Global.cpp | 8 + src/VBox/Main/src-server/ApplianceImpl.cpp | 2 + src/VBox/Main/webservice/Makefile.kmk | 1 + src/VBox/Main/xml/Settings.cpp | 1 + src/VBox/Main/xml/SettingsConverter.xsl | 1 + src/VBox/Main/xml/VirtualBox-settings-common.xsd | 2 + src/VBox/Runtime/Makefile.kmk | 14 +- src/VBox/Runtime/common/misc/thread.cpp | 26 - src/VBox/Runtime/common/misc/threadbasic.cpp | 63 +++ src/VBox/Runtime/r0drv/linux/the-linux-kernel.h | 16 +- src/VBox/Runtime/r3/linux/semevent-linux.cpp | 2 +- src/VBox/VMM/Makefile.kmk | 2 +- src/VBox/VMM/testcase/Makefile.kmk | 10 +- src/libs/xpcom18a4/Makefile.kmk | 12 +- src/libs/xpcom18a4/python/__init__.py | 2 +- src/libs/xpcom18a4/python/components.py | 2 +- 40 files changed, 334 insertions(+), 794 deletions(-) diff --git a/Config.kmk b/Config.kmk index 54b4fd5..1c996c4 100644 --- a/Config.kmk +++ b/Config.kmk @@ -62,6 +62,9 @@ PROPS_DLLS_ACCUMULATE_L += INTERMEDIATES PROPS_SYSMODS_ACCUMULATE_L += INTERMEDIATES PROPS_MISCBINS_ACCUMULATE_L += INTERMEDIATES +# path to the units +KBUILD_UNIT_PATHS = $(PWD)/kBuild/units + # Misc names used bye the install paths below. VBOX_PUEL_MANGLED_NAME := Oracle_VM_VirtualBox_Extension_Pack @@ -1629,7 +1632,7 @@ VBOX_PATH_MAKECAB ?= $(VBOX_PATH_CABSDK)/BIN/MAKECAB.EXE # We need to export YASM for OSE, but since it was converted to .zip we need to # allow for the location used by the zip to be properly cleaned up first. -if1of ($(KBUILD_HOST).$(KBUILD_HOST_ARCH), linux.x86 solaris.x86 win.x86) +if1of ($(KBUILD_HOST).$(KBUILD_HOST_ARCH), linux.x86 linux.amd64 solaris.x86 win.x86) PATH_TOOL_YASM ?= $(PATH_DEVTOOLS_BLD)/bin endif @@ -2392,7 +2395,14 @@ if1of ($(KBUILD_TARGET), linux) ifneq ($(kernelpath),) VBOX_LINUX_INCS += $(VBOX_LINUX_SRC)/include2 $(kernelpath)/include else - kernelpath := $(VBOX_LINUX_SRC) + # 2.6.25 format for splitted sources + kernelsrc := $(shell $(SED_EXT) -ne 's+^MAKEARGS := -C++p' $(VBOX_LINUX_SRC)/Makefile) + ifneq ($(kernelsrc),) + kernelpath := $(realpath $(VBOX_LINUX_SRC)/$(kernelsrc)) + VBOX_LINUX_INCS += $(VBOX_LINUX_SRC)/include2 $(kernelpath)/include + else + kernelpath := $(VBOX_LINUX_SRC) + endif endif VBOX_LINUX_INCS += $(kernelpath)/include/asm-i386/mach-default \ $(kernelpath)/include/asm-x86/mach-default \ @@ -4089,7 +4099,7 @@ TEMPLATE_VBOXBLDPROG_LDFLAGS.sparc32 = -m32 TEMPLATE_VBOXBLDPROG_LDFLAGS.amd64 = -m64 TEMPLATE_VBOXBLDPROG_LDFLAGS.sparc64 = -m64 ifeq ($(KBUILD_HOST),linux) -TEMPLATE_VBOXBLDPROG_LIBS = pthread m rt dl +TEMPLATE_VBOXBLDPROG_LIBS = pthread m rt dl crypt else ifeq ($(KBUILD_HOST),os2) TEMPLATE_VBOXBLDPROG_TOOL = GXX3OMF TEMPLATE_VBOXBLDPROG_LIBS = socket iconv @@ -4742,7 +4752,7 @@ else /usr/lib/jvm/java-6-openjdk \ \ /usr/lib/jvm/sun-jdk-1.6 \ - ) /usr/lib/jvm/java-6-sun) + ) /usr/lib/jvm/java-1.6.0-sun) endif endif diff --git a/configure b/configure index 02ce9fa..a692467 100755 --- a/configure +++ b/configure @@ -90,6 +90,8 @@ WITH_HARDENING=1 WITH_VDE=0 WITH_VNC=0 WITH_DOCS=1 +WITH_ISO=0 +WITH_RUNINST=0 BUILD_LIBXML2= BUILD_LIBXSLT= BUILD_LIBCURL= @@ -120,7 +122,7 @@ LIBXCURSOR="-lXcursor" LIBXMU="-lXmu" LIBXINERAMA="-lXinerama" LIBXRANDR="-lXrandr" -MAKESELF="makeself" +MAKESELF="makeself.sh" MESA="-lGL" INCZ="" LIBZ="-lz" @@ -1852,10 +1854,8 @@ EOF echo "$CC -m32 -O -Wall -o $ODIR.tmp_out $ODIR.tmp_src.c" >> $LOG $CC -m32 -O -Wall -o $ODIR.tmp_out $ODIR.tmp_src.c >> $LOG 2>&1 if [ $? -ne 0 ]; then - echo - echo " Cannot compile 32-bit applications (missing headers and/or libraries)!" - echo " Check the file $LOG for detailed error information." - fail + cnf_append "VBOX_WITHOUT_BIARCH" "1" + log_success "no" else echo "executing the binary" >> $LOG $ODIR.tmp_out 2> $ODIR.test_execute.log @@ -1869,7 +1869,6 @@ EOF return 1 fi fi - log_success "" } @@ -2161,6 +2160,8 @@ EOF [ $WITH_GSOAP -eq 0 ] && echo " --enable-webservice enable the webservice stuff" [ $OSE -eq 1 ] && echo " --enable-vnc enable the VNC server" [ $WITH_DOCS -eq 1 ] && echo " --disable-docs don't build the documentation" +[ $WITH_ISO -eq 0 ] && echo " --enable-addtitions-iso generate guest additions iso image" +[ $WITH_RUNINST -eq 0 ] && echo " --enable-run-installer generate guest additions run installer" [ "$OS" = "linux" -o "$OS" = "freebsd" ] && echo " --enable-vde enable VDE networking" cat << EOF --disable-hardening don't be strict about /dev/vboxdrv access @@ -2334,6 +2335,12 @@ for option in $*; do --disable-docs) WITH_DOCS=0 ;; + --enable-addtitions-iso) + WITH_ISO=1 + ;; + --enable-run-installer) + WITH_RUNINST=1 + ;; --enable-hardening) WITH_HARDENING=2 ;; @@ -2504,6 +2511,10 @@ fi [ $WITH_HARDENING -eq 0 ] && cnf_append "VBOX_WITHOUT_HARDENING" "1" [ $WITH_HARDENING -eq 2 ] && cnf_append "VBOX_WITH_HARDENING" "2" [ $WITH_VMMRAW -eq 0 ] && cnf_append "VBOX_WITH_RAW_MODE" "" +[ $WITH_ISO -eq 0 ] && cnf_append "VBOX_WITHOUT_ADDITIONS_ISO" "1" +[ $WITH_ISO -eq 1 ] && cnf_append "VBOX_WITHOUT_ADDITIONS_ISO" "" +[ $WITH_RUNINST -eq 0 ] && cnf_append "VBOX_NO_LINUX_RUN_INSTALLER" "1" +[ $WITH_RUNINST -eq 1 ] && cnf_append "VBOX_NO_LINUX_RUN_INSTALLER" "" # Darwin-specific if [ "$OS" = "darwin" ]; then @@ -2517,7 +2528,7 @@ check_gcc # don't check for yasm for the time beeing as 0.40 and 0.50 both have known bugs # [ "$OS" != "darwin" ] && check_yasm [ "$OS" != "darwin" ] && check_xsltproc -[ "$OS" != "darwin" ] && check_mkisofs +[ "$OS" != "darwin" -a "$WITH_ISO" -eq 1 ] && check_mkisofs # the libraries [ "$OS" != "darwin" ] && check_pthread @@ -2575,7 +2586,7 @@ if [ "$OS" = "linux" ]; then check_compiler_h [ "$BUILD_MACHINE" = "amd64" -a $WITH_VMMRAW -eq 1 ] && check_32bit # tools/common/makeself* - [ $OSE -ge 1 ] && check_makeself + [ $OSE -ge 1 -a $WITH_RUNINST -eq 1 ] && check_makeself fi [ -n "$SETUP_WINE" ] && setup_wine diff --git a/include/VBox/ostypes.h b/include/VBox/ostypes.h index 658ae8c..5a32327 100644 --- a/include/VBox/ostypes.h +++ b/include/VBox/ostypes.h @@ -96,6 +96,8 @@ typedef enum VBOXOSTYPE VBOXOSTYPE_Xandros_x64 = 0x5D100, VBOXOSTYPE_Oracle = 0x5E000, VBOXOSTYPE_Oracle_x64 = 0x5E100, + VBOXOSTYPE_ALTLinux = 0x5F000, + VBOXOSTYPE_ALTLinux_x64 = 0x5F100, VBOXOSTYPE_FreeBSD = 0x60000, VBOXOSTYPE_FreeBSD_x64 = 0x60100, VBOXOSTYPE_OpenBSD = 0x61000, diff --git a/src/VBox/Additions/common/VBoxGuestLib/Makefile.kmk b/src/VBox/Additions/common/VBoxGuestLib/Makefile.kmk index 242aeb5..324636b 100644 --- a/src/VBox/Additions/common/VBoxGuestLib/Makefile.kmk +++ b/src/VBox/Additions/common/VBoxGuestLib/Makefile.kmk @@ -40,8 +40,8 @@ LIBRARIES += \ VBoxGuestR3LibShared ifndef VBOX_ONLY_TESTSUITE if1of ($(KBUILD_TARGET), freebsd linux netbsd openbsd) - LIBRARIES += \ - VBoxGuestR3LibXFree86 +# LIBRARIES += \ +# VBoxGuestR3LibXFree86 endif endif LIBRARIES.win.amd64 += VBoxGuestR3Lib-x86 VBoxGuestR3LibShared-x86 diff --git a/src/VBox/Additions/common/crOpenGL/Makefile.kmk b/src/VBox/Additions/common/crOpenGL/Makefile.kmk index e4f3092..97505de 100644 --- a/src/VBox/Additions/common/crOpenGL/Makefile.kmk +++ b/src/VBox/Additions/common/crOpenGL/Makefile.kmk @@ -63,16 +63,12 @@ VBoxOGL_TEMPLATE = VBOXCROGLR3GUESTDLL VBoxOGL_INCS = . if1of ($(KBUILD_TARGET), linux solaris freebsd) VBoxOGL_INCS += \ - $(VBOX_PATH_X11_ROOT)/libXdamage-1.1 \ - $(VBOX_PATH_X11_ROOT)/libXcomposite-0.4.0 \ - $(VBOX_PATH_X11_ROOT)/libXfixes-4.0.3 \ - $(VBOX_PATH_X11_ROOT)/damageproto-1.1.0 \ - $(VBOX_PATH_X11_ROOT)/compositeproto-0.4 \ - $(VBOX_PATH_X11_ROOT)/fixesproto-4.0 \ - $(VBOX_PATH_X11_ROOT)/libx11-1.1.5-other \ - $(VBOX_PATH_X11_ROOT)/1.3/xorg \ + /usr/include/X11 \ + /usr/include/xorg \ + /usr/include/pixman-1 \ $(VBOX_MESA_INCS) \ - $(PATH_ROOT)/src/VBox/Additions/x11/x11include/libdrm-2.4.13 + /usr/include/drm \ + /usr/include/libdrm VBoxOGL_DEFS += VBOX_NO_NATIVEGL endif diff --git a/src/VBox/Additions/linux/installer/vboxadd-service.sh b/src/VBox/Additions/linux/installer/vboxadd-service.sh index 02016ee..cefc029 100755 --- a/src/VBox/Additions/linux/installer/vboxadd-service.sh +++ b/src/VBox/Additions/linux/installer/vboxadd-service.sh @@ -25,253 +25,41 @@ # Description: VirtualBox Additions Service ### END INIT INFO -PATH=$PATH:/bin:/sbin:/usr/sbin +# Do not load RH compatibility interface. +WITHOUT_RC_COMPAT=1 -system=unknown -if [ -f /etc/redhat-release ]; then - system=redhat - PIDFILE="/var/lock/subsys/vboxadd-service" -elif [ -f /etc/SuSE-release ]; then - system=suse - PIDFILE="/var/lock/subsys/vboxadd-service" -elif [ -f /etc/debian_version ]; then - system=debian - PIDFILE="/var/run/vboxadd-service" -elif [ -f /etc/gentoo-release ]; then - system=gentoo - PIDFILE="/var/run/vboxadd-service" -elif [ -f /etc/arch-release ]; then - system=arch - PIDFILE="/var/run/vboxadd-service" -elif [ -f /etc/slackware-version ]; then - system=slackware - PIDFILE="/var/run/vboxadd-service" -elif [ -f /etc/lfs-release ]; then - system=lfs - PIDFILE="/var/run/vboxadd-service.pid" -else - system=other - if [ -d /var/run -a -w /var/run ]; then - PIDFILE="/var/run/vboxadd-service" - fi -fi - -if [ "$system" = "redhat" ]; then - . /etc/init.d/functions - fail_msg() { - echo_failure - echo - } - - succ_msg() { - echo_success - echo - } - - begin() { - echo -n "$1" - } -fi - -if [ "$system" = "suse" ]; then - . /etc/rc.status - daemon() { - startproc ${1+"$@"} - } - - fail_msg() { - rc_failed 1 - rc_status -v - } - - succ_msg() { - rc_reset - rc_status -v - } - - begin() { - echo -n "$1" - } -fi - -if [ "$system" = "debian" ]; then - daemon() { - start-stop-daemon --start --exec $1 -- $2 - } - - killproc() { - start-stop-daemon --stop --retry 2 --exec $@ - } - - fail_msg() { - echo " ...fail!" - } - - succ_msg() { - echo " ...done." - } - - begin() { - echo -n "$1" - } -fi - -if [ "$system" = "gentoo" ]; then - . /sbin/functions.sh - daemon() { - start-stop-daemon --start --exec $1 -- $2 - } - - killproc() { - start-stop-daemon --stop --retry 2 --exec $@ - } - - fail_msg() { - echo " ...fail!" - } - - succ_msg() { - echo " ...done." - } - - begin() { - echo -n "$1" - } - - if [ "`which $0`" = "/sbin/rc" ]; then - shift - fi -fi - -if [ "$system" = "arch" ]; then - USECOLOR=yes - . /etc/rc.d/functions - daemon() { - $@ - test $? -eq 0 && add_daemon rc.`basename $1` - } - - killproc() { - killall $@ - rm_daemon `basename $@` - } - - fail_msg() { - stat_fail - } - - succ_msg() { - stat_done - } +# Source function library. +. /etc/init.d/functions - begin() { - stat_busy "$1" - } +LOCKFILE="/var/lock/subsys/vboxadd-service" +PIDFILE="/var/run/vboxadd-service" +RETVAL=0 -fi +# Source ntpd configuration. +VBOXADD_SERVICE_ARGS="" +SourceIfNotEmpty /etc/sysconfig/vboxadd-service -if [ "$system" = "slackware" ]; then - daemon() { - $1 $2 - } - - killproc() { - killall $1 - rm -f $PIDFILE - } - - fail_msg() { - echo " ...fail!" - } - - succ_msg() { - echo " ...done." - } - - begin() { - echo -n "$1" - } - -fi - -if [ "$system" = "lfs" ]; then - . /etc/rc.d/init.d/functions - daemon() { - loadproc $1 $2 - } - - fail_msg() { - echo_failure - } - - succ_msg() { - echo_ok - } - - begin() { - echo $1 - } - - status() { - statusproc $1 - } -fi - -if [ "$system" = "other" ]; then - fail_msg() { - echo " ...fail!" - } - - succ_msg() { - echo " ...done." - } - - begin() { - echo -n "$1" - } -fi - -binary=/usr/sbin/VBoxService - -testbinary() { - test -x "$binary" || { - echo "Cannot run $binary" - exit 1 - } -} +binary=VBoxService vboxaddrunning() { lsmod | grep -q "vboxguest[^_-]" } start() { - if ! test -f $PIDFILE; then - begin "Starting VirtualBox Guest Addition service "; - vboxaddrunning || { - echo "VirtualBox Additions module not loaded!" - exit 1 - } - testbinary - daemon $binary > /dev/null + if vboxaddrunning; then + start_daemon --displayname "VirtualBox Guest Addition" \ + --make-pidfile --pidfile "$PIDFILE" --lockfile "$LOCKFILE" -- $binary -f $VBOXADD_SERVICE_ARGS RETVAL=$? - test $RETVAL -eq 0 && echo `pidof VBoxService` > $PIDFILE - succ_msg + else + echo "VirtualBox Additions module not loaded!" + RETVAL=2 fi return $RETVAL } stop() { - if test -f $PIDFILE; then - begin "Stopping VirtualBox Guest Addition service "; - killproc $binary - RETVAL=$? - if ! pidof VBoxService > /dev/null 2>&1; then - rm -f $PIDFILE - succ_msg - else - fail_msg - fi - fi + stop_daemon --displayname "VirtualBox Guest Addition" --pidfile "$PIDFILE" --lockfile "$LOCKFILE" -- $binary + RETVAL=$? return $RETVAL } @@ -279,15 +67,6 @@ restart() { stop && start } -status() { - echo -n "Checking for VBoxService" - if [ -f $PIDFILE ]; then - echo " ...running" - else - echo " ...not running" - fi -} - case "$1" in start) start @@ -299,7 +78,7 @@ restart) restart ;; status) - status + status --displayname "VirtualBox Guest Addition service" --pidfile "$PIDFILE" -- $binary ;; setup) ;; diff --git a/src/VBox/Additions/linux/installer/vboxadd.sh b/src/VBox/Additions/linux/installer/vboxadd.sh index 4f02c64..1dc31de 100755 --- a/src/VBox/Additions/linux/installer/vboxadd.sh +++ b/src/VBox/Additions/linux/installer/vboxadd.sh @@ -1,4 +1,4 @@ -#! /bin/sh +#!/bin/sh # # Linux Additions kernel module init script ($Revision: 71770 $) # @@ -16,7 +16,7 @@ # -# chkconfig: 357 30 70 +# chkconfig: 35 30 70 # description: VirtualBox Linux Additions kernel modules # ### BEGIN INIT INFO @@ -28,13 +28,12 @@ # Description: VirtualBox Linux Additions kernel modules ### END INIT INFO -PATH=$PATH:/bin:/sbin:/usr/sbin -PACKAGE=VBoxGuestAdditions -BUILDVBOXGUEST=`/bin/ls /usr/src/vboxguest*/vboxguest/build_in_tmp 2>/dev/null|cut -d' ' -f1` -BUILDVBOXSF=`/bin/ls /usr/src/vboxguest*/vboxsf/build_in_tmp 2>/dev/null|cut -d' ' -f1` -BUILDVBOXVIDEO=`/bin/ls /usr/src/vboxguest*/vboxvideo/build_in_tmp 2>/dev/null|cut -d' ' -f1` -DODKMS=`/bin/ls /usr/src/vboxguest*/do_dkms 2>/dev/null|cut -d' ' -f1` -LOG="/var/log/vboxadd-install.log" +# Do not load RH compatibility interface. +WITHOUT_RC_COMPAT=1 + +# Source function library. +. /etc/init.d/functions + MODPROBE=/sbin/modprobe if $MODPROBE -c | grep -q '^allow_unsupported_modules *0'; then @@ -58,489 +57,121 @@ case "$cpu" in ;; esac -if [ -f /etc/arch-release ]; then - system=arch -elif [ -f /etc/redhat-release ]; then - system=redhat -elif [ -f /etc/SuSE-release ]; then - system=suse -elif [ -f /etc/gentoo-release ]; then - system=gentoo -elif [ -f /etc/lfs-release -a -d /etc/rc.d/init.d ]; then - system=lfs -else - system=other -fi - -if [ "$system" = "arch" ]; then - USECOLOR=yes - . /etc/rc.d/functions - fail_msg() { - stat_fail - } - - succ_msg() { - stat_done - } - - begin() { - stat_busy "$1" - } -fi - -if [ "$system" = "redhat" ]; then - . /etc/init.d/functions - fail_msg() { - echo_failure - echo - } - succ_msg() { - echo_success - echo - } - begin() { - echo -n "$1" - } -fi - -if [ "$system" = "suse" ]; then - . /etc/rc.status - fail_msg() { - rc_failed 1 - rc_status -v - } - succ_msg() { - rc_reset - rc_status -v - } - begin() { - echo -n "$1" - } -fi - -if [ "$system" = "gentoo" ]; then - if [ -f /sbin/functions.sh ]; then - . /sbin/functions.sh - elif [ -f /etc/init.d/functions.sh ]; then - . /etc/init.d/functions.sh - fi - fail_msg() { - eend 1 - } - succ_msg() { - eend $? - } - begin() { - ebegin $1 - } - if [ "`which $0`" = "/sbin/rc" ]; then - shift - fi -fi - -if [ "$system" = "lfs" ]; then - . /etc/rc.d/init.d/functions - fail_msg() { - echo_failure - } - succ_msg() { - echo_ok - } - begin() { - echo $1 - } -fi - -if [ "$system" = "other" ]; then - fail_msg() { - echo " ...fail!" - } - succ_msg() { - echo " ...done." - } - begin() { - echo -n $1 - } -fi - -dev=/dev/vboxguest -userdev=/dev/vboxuser -owner=vboxadd -group=1 - -test_for_gcc_and_make() -{ - which make > /dev/null 2>&1 || printf "\nThe make utility was not found. If the following module compilation fails then\nthis could be the reason and you should try installing it.\n" - which gcc > /dev/null 2>&1 || printf "\nThe gcc utility was not found. If the following module compilation fails then\nthis could be the reason and you should try installing it.\n" -} +# Source function library. +. /etc/init.d/functions -test_sane_kernel_dir() -{ - KERN_VER=`uname -r` - KERN_DIR="/lib/modules/$KERN_VER/build" - if [ -d "$KERN_DIR" ]; then - KERN_REL=`make -sC $KERN_DIR --no-print-directory kernelrelease 2>/dev/null || true` - if [ -z "$KERN_REL" -o "x$KERN_REL" = "x$KERN_VER" ]; then - return 0 - fi - fi - printf "\nThe headers for the current running kernel were not found. If the following\nmodule compilation fails then this could be the reason.\n" - if [ "$system" = "redhat" ]; then - printf "The missing package can be probably installed with\nyum install kernel-devel-$KERN_VER\n" - elif [ "$system" = "suse" ]; then - printf "The missing package can be probably installed with\nzypper install kernel-$KERN_VER\n" - elif [ "$system" = "debian" ]; then - printf "The missing package can be probably installed with\napt-get install linux-headers-$KERN_VER\n" - fi -} - -fail() -{ - if [ "$system" = "gentoo" ]; then - eerror $1 - exit 1 - fi - fail_msg - echo "($1)" - exit 1 -} +LOCKFILE=/var/lock/subsys/virtualbox-addition +RETVAL=0 running_vboxguest() { lsmod | grep -q "vboxguest[^_-]" } -running_vboxadd() -{ - lsmod | grep -q "vboxadd[^_-]" -} - running_vboxsf() { lsmod | grep -q "vboxsf[^_-]" } -do_vboxguest_non_udev() +running_vboxvideo() { - if [ ! -c $dev ]; then - maj=`sed -n 's;\([0-9]\+\) vboxguest;\1;p' /proc/devices` - if [ ! -z "$maj" ]; then - min=0 - else - min=`sed -n 's;\([0-9]\+\) vboxguest;\1;p' /proc/misc` - if [ ! -z "$min" ]; then - maj=10 - fi - fi - test -z "$maj" && { - rmmod vboxguest 2>/dev/null - fail "Cannot locate the VirtualBox device" - } - - mknod -m 0664 $dev c $maj $min || { - rmmod vboxguest 2>/dev/null - fail "Cannot create device $dev with major $maj and minor $min" - } - fi - chown $owner:$group $dev 2>/dev/null || { - rm -f $dev 2>/dev/null - rm -f $userdev 2>/dev/null - rmmod vboxguest 2>/dev/null - fail "Cannot change owner $owner:$group for device $dev" - } - - if [ ! -c $userdev ]; then - maj=10 - min=`sed -n 's;\([0-9]\+\) vboxuser;\1;p' /proc/misc` - if [ ! -z "$min" ]; then - mknod -m 0666 $userdev c $maj $min || { - rm -f $dev 2>/dev/null - rmmod vboxguest 2>/dev/null - fail "Cannot create device $userdev with major $maj and minor $min" - } - chown $owner:$group $userdev 2>/dev/null || { - rm -f $dev 2>/dev/null - rm -f $userdev 2>/dev/null - rmmod vboxguest 2>/dev/null - fail "Cannot change owner $owner:$group for device $userdev" - } - fi - fi + lsmod | grep -q "vboxvideo[^_-]" } start() { - begin "Starting the VirtualBox Guest Additions "; - which udevd >/dev/null 2>&1 || no_udev=1 - running_vboxguest || { - rm -f $dev || { - fail "Cannot remove $dev" - } - - rm -f $userdev || { - fail "Cannot remove $userdev" - } - - $MODPROBE vboxguest >/dev/null 2>&1 || { - fail "modprobe vboxguest failed" - } - case "$no_udev" in 1) - sleep .5;; - esac - } - case "$no_udev" in 1) - do_vboxguest_non_udev;; - esac - - if [ -n "$BUILDVBOXSF" ]; then - running_vboxsf || { - $MODPROBE vboxsf > /dev/null 2>&1 || { - if dmesg | grep "vboxConnect failed" > /dev/null 2>&1; then - fail_msg - echo "Unable to start shared folders support. Make sure that your VirtualBox build" - echo "supports this feature." - exit 1 - fi - fail "modprobe vboxsf failed" - } - } + action "Loading VirtualBox module (vboxguest):" modprobe vboxguest + RETVAL=$? + if [ $RETVAL = 0 ]; then + action "Loading VirtualBox module (vboxsf):" modprobe vboxsf + RETVAL=$? + if [ $RETVAL = 0 ]; then + action "Mount VirtualBox Share Folders:" mount -a -t vboxsf + action "Loading VirtualBox module (vboxvideo):" modprobe vboxvideo + RETVAL=$? + fi fi - - # Mount all shared folders from /etc/fstab. Normally this is done by some - # other startup script but this requires the vboxdrv kernel module loaded. + [ $RETVAL = 0 ] && touch "$LOCKFILE" ||: + return $RETVAL # This isn't necessary anymore as the vboxsf module is autoloaded. # mount -a -t vboxsf - - succ_msg - return 0 } stop() { - begin "Stopping VirtualBox Additions "; - if ! umount -a -t vboxsf 2>/dev/null; then - fail "Cannot unmount vboxsf folders" - fi - if [ -n "$BUILDVBOXSF" ]; then - if running_vboxsf; then - rmmod vboxsf 2>/dev/null || fail "Cannot unload module vboxsf" - fi - fi - if running_vboxguest; then - rmmod vboxguest 2>/dev/null || fail "Cannot unload module vboxguest" - rm -f $userdev || fail "Cannot unlink $userdev" - rm -f $dev || fail "Cannot unlink $dev" - fi - succ_msg - return 0 + local RETVAL1=0 RETVAL2=0 RETVAL3=0 + action "Unmount VirtualBox Share Folders:" umount -a -t vboxsf + action "Unloading VirtualBox module (vboxvideo):" modprobe -r vboxvideo || RETVAL3=$? + action "Unloading VirtualBox module (vboxsf):" modprobe -r vboxsf || RETVAL2=$? + action "Unloading VirtualBox module (vboxguest):" modprobe -r vboxguest || RETVAL1=$? + [ $RETVAL3 = 0 ] || RETVAL=$RETVAL3 + [ $RETVAL2 = 0 ] || RETVAL=$RETVAL2 + [ $RETVAL1 = 0 ] || RETVAL=$RETVAL1 + [ $RETVAL = 0 ] && rm -f "$LOCKFILE" ||: + return $RETVAL } restart() { stop && start - return 0 -} - -# Remove any existing VirtualBox guest kernel modules from the disk, but not -# from the kernel as they may still be in use -cleanup_modules() -{ - begin "Removing existing VirtualBox DKMS kernel modules" - $DODKMS uninstall > $LOG - succ_msg - begin "Removing existing VirtualBox non-DKMS kernel modules" - find /lib/modules -name vboxadd\* | xargs rm 2>/dev/null - find /lib/modules -name vboxguest\* | xargs rm 2>/dev/null - find /lib/modules -name vboxvfs\* | xargs rm 2>/dev/null - find /lib/modules -name vboxsf\* | xargs rm 2>/dev/null - find /lib/modules -name vboxvideo\* | xargs rm 2>/dev/null - succ_msg -} - -# Build and install the VirtualBox guest kernel modules -setup_modules() -{ - # don't stop the old modules here -- they might be in use - cleanup_modules - begin "Building the VirtualBox Guest Additions kernel modules" - - # Short cut out if a dkms build succeeds - if $DODKMS install >> $LOG 2>&1; then - succ_msg - return 0 - fi - - test_for_gcc_and_make - test_sane_kernel_dir - - if ! sh /usr/share/$PACKAGE/test/build_in_tmp \ - --no-print-directory >> $LOG 2>&1; then - fail_msg - printf "Your system does not seem to be set up to build kernel modules.\nLook at $LOG to find out what went wrong.\nOnce you have corrected it, you can run\n\n /etc/init.d/vboxadd setup\n\nto build them.\n\n" - return 1 - else - if ! sh /usr/share/$PACKAGE/test_drm/build_in_tmp \ - --no-print-directory >> $LOG 2>&1; then - printf "\nYour guest system does not seem to have sufficient OpenGL support to enable\naccelerated 3D effects (this requires Linux 2.6.27 or later in the guest\nsystem). This Guest Additions feature will be disabled.\n\n" - BUILDVBOXVIDEO="" - fi - fi - echo - if [ -n "$BUILDVBOXGUEST" ]; then - begin "Building the main Guest Additions module" - if ! $BUILDVBOXGUEST \ - --save-module-symvers /tmp/vboxguest-Module.symvers \ - --no-print-directory install >> $LOG 2>&1; then - fail "Look at $LOG to find out what went wrong" - fi - succ_msg - fi - if [ -n "$BUILDVBOXSF" ]; then - begin "Building the shared folder support module" - if ! $BUILDVBOXSF \ - --use-module-symvers /tmp/vboxguest-Module.symvers \ - --no-print-directory install >> $LOG 2>&1; then - fail "Look at $LOG to find out what went wrong" - fi - succ_msg - fi - if [ -n "$BUILDVBOXVIDEO" ]; then - begin "Building the OpenGL support module" - if ! $BUILDVBOXVIDEO \ - --use-module-symvers /tmp/vboxguest-Module.symvers \ - --no-print-directory install >> $LOG 2>&1; then - fail "Look at $LOG to find out what went wrong" - fi - succ_msg - fi - depmod - return 0 -} - -# Do non-kernel bits needed for the kernel modules to work properly (user -# creation, udev, mount helper...) -extra_setup() -{ - begin "Doing non-kernel setup of the Guest Additions" - echo "Creating user for the Guest Additions." >> $LOG - # This is the LSB version of useradd and should work on recent - # distributions - useradd -d /var/run/vboxadd -g 1 -r -s /bin/false vboxadd >/dev/null 2>&1 - # And for the others, we choose a UID ourselves - useradd -d /var/run/vboxadd -g 1 -u 501 -o -s /bin/false vboxadd >/dev/null 2>&1 - - # Add a group "vboxsf" for Shared Folders access - # All users which want to access the auto-mounted Shared Folders have to - # be added to this group. - groupadd -f vboxsf >/dev/null 2>&1 - - # Create udev description file - if [ -d /etc/udev/rules.d ]; then - echo "Creating udev rule for the Guest Additions kernel module." >> $LOG - udev_call="" - udev_app=`which udevadm 2> /dev/null` - if [ $? -eq 0 ]; then - udev_call="${udev_app} version 2> /dev/null" - else - udev_app=`which udevinfo 2> /dev/null` - if [ $? -eq 0 ]; then - udev_call="${udev_app} -V 2> /dev/null" - fi - fi - udev_fix="=" - if [ "${udev_call}" != "" ]; then - udev_out=`${udev_call}` - udev_ver=`expr "$udev_out" : '[^0-9]*\([0-9]*\)'` - if [ "$udev_ver" = "" -o "$udev_ver" -lt 55 ]; then - udev_fix="" - fi - fi - ## @todo 60-vboxadd.rules -> 60-vboxguest.rules ? - echo "KERNEL=${udev_fix}\"vboxguest\", NAME=\"vboxguest\", OWNER=\"vboxadd\", MODE=\"0660\"" > /etc/udev/rules.d/60-vboxadd.rules - echo "KERNEL=${udev_fix}\"vboxuser\", NAME=\"vboxuser\", OWNER=\"vboxadd\", MODE=\"0666\"" >> /etc/udev/rules.d/60-vboxadd.rules - fi - - # Put mount.vboxsf in the right place - ln -sf "$lib_path/$PACKAGE/mount.vboxsf" /sbin # At least Fedora 11 and Fedora 12 require the correct security context when # executing this command from service scripts. Shouldn't hurt for other # distributions. - chcon -u system_u -t mount_exec_t "$lib_path/$PACKAGE/mount.vboxsf" > /dev/null 2>&1 + #chcon -u system_u -t mount_exec_t "$lib_path/$PACKAGE/mount.vboxsf" > /dev/null 2>&1 # And at least Fedora 15 needs this for the acceleration support check to # work - redhat_release=`cat /etc/redhat-release 2> /dev/null` - case "$redhat_release" in Fedora\ release\ 15* ) - for i in "$lib_path"/*.so - do - restorecon "$i" >/dev/null - done - ;; - esac - - succ_msg -} - -# setup_script -setup() -{ - setup_modules - mod_succ="$?" - extra_setup - if [ "$mod_succ" -eq "0" ]; then - if running_vboxguest || running_vboxadd; then - printf "You should restart your guest to make sure the new modules are actually used\n\n" - else - start - fi - fi -} + #redhat_release=`cat /etc/redhat-release 2> /dev/null` + #case "$redhat_release" in Fedora\ release\ 15* ) + # for i in "$lib_path"/*.so + # do + # restorecon "$i" >/dev/null + # done + # ;; + #esac -# cleanup_script -cleanup() -{ - # Delete old versions of VBox modules. - cleanup_modules - depmod - - # Remove old module sources - rm -rf /usr/src/vboxadd-* /usr/src/vboxguest-* /usr/src/vboxvfs-* /usr/src/vboxsf-* /usr/src/vboxvideo-* - - # Remove other files - rm /sbin/mount.vboxsf 2>/dev/null - rm /etc/udev/rules.d/60-vboxadd.rules 2>/dev/null + return 0 } -dmnstatus() +status() { if running_vboxguest; then + echo "vboxguest module is loaded" + running_vboxsf && echo "vboxsf module is loaded" + running_vboxvideo && echo "vboxvideo module is loaded" echo "The VirtualBox Additions are currently running." + elif [ -f "$LOCKFILE" ]; then + echo "The VirtualBox Additions module is not loaded, but subsystem is locked" + RETVAL=2 else - echo "The VirtualBox Additions are not currently running." + echo "The VirtualBox Additions are not currently running" fi } +# See how we were called. case "$1" in -start) - start - ;; -stop) - stop - ;; -restart) - restart - ;; -setup) - setup - ;; -cleanup) - cleanup - ;; -status) - dmnstatus - ;; -*) - echo "Usage: $0 {start|stop|restart|status}" - exit 1 + start) + start + ;; + stop) + stop + ;; + restart) + restart + ;; + condstop) + if [ -e "$LOCKFILE" ]; then + stop + fi + ;; + condrestart) + # Do nothing on package upgrade + ;; + status) + status + ;; + *) + msg_usage "${0##*/} {start|stop|restart|condstop|condrestart|status}" + RETVAL=1 esac -exit +exit $RETVAL diff --git a/src/VBox/Additions/x11/Installer/98vboxadd-xclient b/src/VBox/Additions/x11/Installer/98vboxadd-xclient index f359422..f22f5d1 100755 --- a/src/VBox/Additions/x11/Installer/98vboxadd-xclient +++ b/src/VBox/Additions/x11/Installer/98vboxadd-xclient @@ -40,9 +40,9 @@ then no_display=1 fi -/usr/bin/VBoxClient --clipboard -/usr/bin/VBoxClient --checkhostversion +/usr/bin/VBoxClient --clipboard || true +/usr/bin/VBoxClient --checkhostversion || true test -z "$no_display" && - /usr/bin/VBoxClient --display + /usr/bin/VBoxClient --display || true test -z "$no_display" && - /usr/bin/VBoxClient --seamless + /usr/bin/VBoxClient --seamless || true diff --git a/src/VBox/Additions/x11/Makefile.kmk b/src/VBox/Additions/x11/Makefile.kmk index c810f32..3cacbad 100644 --- a/src/VBox/Additions/x11/Makefile.kmk +++ b/src/VBox/Additions/x11/Makefile.kmk @@ -17,6 +17,10 @@ SUB_DEPTH = ../../../.. include $(KBUILD_PATH)/subheader.kmk +ifn1of ($(XSERVER_VERSION), 13 14 15 16 17 18 19 110) + XSERVER_VERSION := 110 +endif + # Include sub-makefiles. if1of ($(KBUILD_TARGET), freebsd linux netbsd openbsd solaris) include $(PATH_SUB_CURRENT)/VBoxClient/Makefile.kmk diff --git a/src/VBox/Additions/x11/vboxmouse/Makefile.kmk b/src/VBox/Additions/x11/vboxmouse/Makefile.kmk index 5a3183f..2178ff5 100644 --- a/src/VBox/Additions/x11/vboxmouse/Makefile.kmk +++ b/src/VBox/Additions/x11/vboxmouse/Makefile.kmk @@ -23,7 +23,6 @@ include $(KBUILD_PATH)/subheader.kmk # vboxmouse_drv # if1of ($(KBUILD_TARGET), linux) - SYSMODS += vboxmouse_drv vboxmouse_drv_TEMPLATE = VBOXGUESTR3XF86MOD vboxmouse_drv_DEFS.linux = linux vboxmouse_drv_DEFS.x86 += __i386__ @@ -59,7 +58,6 @@ endif # # vboxmouse_drv_70 # -DLLS += vboxmouse_drv_70 vboxmouse_drv_70_TEMPLATE = VBOXGUESTR3XORGMOD vboxmouse_drv_70_DEFS = \ XFree86Server IN_MODULE XFree86Module XFree86LOADER XINPUT XORG_7X IN_XF86_MODULE @@ -80,7 +78,6 @@ vboxmouse_drv_70_SOURCES = \ # # vboxmouse_drv_71 # -DLLS += vboxmouse_drv_71 vboxmouse_drv_71_TEMPLATE = VBOXGUESTR3XORGMOD vboxmouse_drv_71_DEFS := $(vboxmouse_drv_70_DEFS) vboxmouse_drv_71_INCS := \ @@ -97,7 +94,6 @@ vboxmouse_drv_71_SOURCES = \ # # vboxmouse_drv_13 # -DLLS += vboxmouse_drv_13 vboxmouse_drv_13_TEMPLATE = VBOXGUESTR3XORGMOD vboxmouse_drv_13_DEFS := $(vboxmouse_drv_70_DEFS) NO_ANSIC vboxmouse_drv_13_INCS := \ @@ -112,7 +108,6 @@ vboxmouse_drv_13_SOURCES = \ # # vboxmouse_drv_14 # -DLLS += vboxmouse_drv_14 vboxmouse_drv_14_TEMPLATE = VBOXGUESTR3XORGMOD vboxmouse_drv_14_DEFS := $(vboxmouse_drv_70_DEFS) NO_ANSIC vboxmouse_drv_14_INCS := \ @@ -126,7 +121,6 @@ vboxmouse_drv_14_SOURCES = \ # # vboxmouse_drv_15 # -DLLS += vboxmouse_drv_15 vboxmouse_drv_15_TEMPLATE = VBOXGUESTR3XORGMOD vboxmouse_drv_15_DEFS := $(vboxmouse_drv_70_DEFS) NO_ANSIC vboxmouse_drv_15_INCS := \ @@ -141,7 +135,6 @@ vboxmouse_drv_15_SOURCES = \ # # vboxmouse_drv_16 # -DLLS += vboxmouse_drv_16 vboxmouse_drv_16_TEMPLATE = VBOXGUESTR3XORGMOD vboxmouse_drv_16_DEFS := $(vboxmouse_drv_70_DEFS) NO_ANSIC vboxmouse_drv_16_INCS := \ @@ -157,7 +150,6 @@ vboxmouse_drv_16_SOURCES = \ # # vboxmouse_drv_17 # -DLLS += vboxmouse_drv_17 vboxmouse_drv_17_TEMPLATE = VBOXGUESTR3XORGMOD vboxmouse_drv_17_DEFS := $(vboxmouse_drv_70_DEFS) NO_ANSIC ## @todo replace $(VBOX_PATH_X11_ROOT)/xorg-server-1.6.0-local @@ -177,7 +169,6 @@ vboxmouse_drv_17_SOURCES = \ # # vboxmouse_drv_18 # -DLLS += vboxmouse_drv_18 vboxmouse_drv_18_TEMPLATE = VBOXGUESTR3XORGMOD vboxmouse_drv_18_DEFS := $(vboxmouse_drv_70_DEFS) NO_ANSIC ## @todo replace $(VBOX_PATH_X11_ROOT)/xorg-server-1.6.0-local @@ -197,7 +188,6 @@ vboxmouse_drv_18_SOURCES = \ # # vboxmouse_drv_19 # -DLLS += vboxmouse_drv_19 vboxmouse_drv_19_TEMPLATE = VBOXGUESTR3XORGMOD vboxmouse_drv_19_DEFS := $(vboxmouse_drv_70_DEFS) NO_ANSIC ## @todo replace $(VBOX_PATH_X11_ROOT)/xorg-server-1.6.0-local @@ -217,7 +207,6 @@ vboxmouse_drv_19_SOURCES = \ # # vboxmouse_drv_110 # -DLLS += vboxmouse_drv_110 vboxmouse_drv_110_TEMPLATE = VBOXGUESTR3XORGMOD vboxmouse_drv_110_DEFS := $(vboxmouse_drv_70_DEFS) NO_ANSIC ## @todo replace $(VBOX_PATH_X11_ROOT)/xorg-server-1.6.0-local @@ -234,6 +223,14 @@ vboxmouse_drv_110_SOURCES = \ vboxmouse_15.c +vboxmouse_drv_$(XSERVER_VERSION)_NAME := vboxmouse_drv +vboxmouse_drv_$(XSERVER_VERSION)_INCS := \ + /usr/include/X11 \ + /usr/include/xorg \ + /usr/include/pixman-1 +DLLS += vboxmouse_drv_$(XSERVER_VERSION) + + # Check the undefined symbols in the X.Org modules against lists of allowed # symbols. Not very elegant, but it will catch problems early. ifdef VBOX_WITH_TESTCASES diff --git a/src/VBox/Additions/x11/vboxvideo/Makefile.kmk b/src/VBox/Additions/x11/vboxvideo/Makefile.kmk index 7d77346..a446716 100644 --- a/src/VBox/Additions/x11/vboxvideo/Makefile.kmk +++ b/src/VBox/Additions/x11/vboxvideo/Makefile.kmk @@ -22,7 +22,6 @@ include $(KBUILD_PATH)/subheader.kmk # vboxvideo_drv # if1of ($(KBUILD_TARGET), linux) - SYSMODS += vboxvideo_drv endif # target linux vboxvideo_drv_TEMPLATE = VBOXGUESTR3XF86MOD vboxvideo_drv_DEFS.linux = linux @@ -89,7 +88,6 @@ vboxvideo_drv_SOURCES = \ # base keywords instead of using .solaris or .linux. # Also it is *important* to use := and not = when deriving a property. # -DLLS += vboxvideo_drv_70 vboxvideo_drv_70_TEMPLATE = VBOXGUESTR3XORGMOD if1of ($(KBUILD_TARGET), linux) vboxvideo_drv_70_CFLAGS += \ @@ -112,7 +110,6 @@ vboxvideo_drv_70_SOURCES = $(vboxvideo_drv_SOURCES) # # vboxvideo_drv_71 # -DLLS += vboxvideo_drv_71 vboxvideo_drv_71_TEMPLATE = VBOXGUESTR3XORGMOD vboxvideo_drv_71_CFLAGS := $(vboxvideo_drv_70_CFLAGS) vboxvideo_drv_71_DEFS := $(vboxvideo_drv_70_DEFS) @@ -127,7 +124,6 @@ vboxvideo_drv_71_SOURCES = $(vboxvideo_drv_SOURCES) # # vboxvideo_drv_13 # -DLLS += vboxvideo_drv_13 vboxvideo_drv_13_TEMPLATE = VBOXGUESTR3XORGMOD vboxvideo_drv_13_CFLAGS := $(vboxvideo_drv_70_CFLAGS) vboxvideo_drv_13_DEFS := $(vboxvideo_drv_70_DEFS) VBOXVIDEO_13 @@ -146,7 +142,6 @@ vboxvideo_drv_13_SOURCES = $(vboxvideo_drv_SOURCES) edid.c # # vboxvideo_drv_14 # -DLLS += vboxvideo_drv_14 vboxvideo_drv_14_TEMPLATE = VBOXGUESTR3XORGMOD vboxvideo_drv_14_CFLAGS := $(vboxvideo_drv_70_CFLAGS) vboxvideo_drv_14_DEFS := $(vboxvideo_drv_13_DEFS) @@ -165,7 +160,6 @@ vboxvideo_drv_14_SOURCES = $(vboxvideo_drv_13_SOURCES) # # vboxvideo_drv_15 # -DLLS += vboxvideo_drv_15 vboxvideo_drv_15_TEMPLATE = VBOXGUESTR3XORGMOD vboxvideo_drv_15_CFLAGS := $(vboxvideo_drv_70_CFLAGS) vboxvideo_drv_15_DEFS := $(vboxvideo_drv_13_DEFS) NO_ANSIC PCIACCESS \ @@ -192,7 +186,6 @@ endif # # vboxvideo_drv_16 # -DLLS += vboxvideo_drv_16 vboxvideo_drv_16_TEMPLATE = VBOXGUESTR3XORGMOD vboxvideo_drv_16_CFLAGS := $(vboxvideo_drv_70_CFLAGS) vboxvideo_drv_16_DEFS := $(vboxvideo_drv_15_DEFS) @@ -212,7 +205,6 @@ vboxvideo_drv_16_SOURCES := $(vboxvideo_drv_15_SOURCES) # # vboxvideo_drv_17 # -DLLS += vboxvideo_drv_17 vboxvideo_drv_17_TEMPLATE = VBOXGUESTR3XORGMOD vboxvideo_drv_17_CFLAGS := $(vboxvideo_drv_70_CFLAGS) vboxvideo_drv_17_DEFS := $(vboxvideo_drv_15_DEFS) @@ -239,7 +231,6 @@ vboxvideo_drv_17_SOURCES := $(vboxvideo_drv_15_SOURCES) # # vboxvideo_drv_18 # -DLLS += vboxvideo_drv_18 vboxvideo_drv_18_TEMPLATE = VBOXGUESTR3XORGMOD vboxvideo_drv_18_CFLAGS := $(vboxvideo_drv_70_CFLAGS) vboxvideo_drv_18_DEFS := $(vboxvideo_drv_15_DEFS) @@ -266,7 +257,6 @@ vboxvideo_drv_18_SOURCES := $(vboxvideo_drv_15_SOURCES) # # vboxvideo_drv_19 # -DLLS += vboxvideo_drv_19 vboxvideo_drv_19_TEMPLATE = VBOXGUESTR3XORGMOD vboxvideo_drv_19_CFLAGS := $(vboxvideo_drv_70_CFLAGS) vboxvideo_drv_19_DEFS := $(vboxvideo_drv_15_DEFS) @@ -293,7 +283,6 @@ vboxvideo_drv_19_SOURCES := $(vboxvideo_drv_15_SOURCES) # # vboxvideo_drv_110 # -DLLS += vboxvideo_drv_110 vboxvideo_drv_110_TEMPLATE = VBOXGUESTR3XORGMOD vboxvideo_drv_110_CFLAGS := $(vboxvideo_drv_70_CFLAGS) vboxvideo_drv_110_DEFS := $(vboxvideo_drv_15_DEFS) @@ -317,6 +306,23 @@ vboxvideo_drv_110_INCS += $(PATH_ROOT)/src/VBox/Runtime/include vboxvideo_drv_110_SOURCES := $(vboxvideo_drv_15_SOURCES) +vboxvideo_drv_$(XSERVER_VERSION)_NAME := vboxvideo_drv +vboxvideo_drv_$(XSERVER_VERSION)_INCS := \ + /usr/include/X11 \ + /usr/include/xorg \ + /usr/include/pixman-1 \ + /usr/include/X11/dri \ + /usr/include/drm \ + /usr/include/libdrm +vboxvideo_drv_$(XSERVER_VERSION)_INCS += $(PATH_ROOT)/src/VBox/Runtime/include +DLLS += vboxvideo_drv_$(XSERVER_VERSION) + +# required for lenny backports +ifeq ($(XSERVER_VERSION),14) + vboxvideo_drv_$(XSERVER_VERSION)_INCS += $(VBOX_PATH_X11_XORG_1_4)/xorg +endif + + # Check the undefined symbols in the X.Org modules against lists of allowed # symbols. Not very elegant, but it will catch problems early. ifdef VBOX_WITH_TESTCASES @@ -326,15 +332,14 @@ ifdef VBOX_WITH_TESTCASES ifndef VBOX_ONLY_SDK VBOXVIDEO_SRC_PATH := $(PATH_SUB_CURRENT) - ifeq ($(KBUILD_TARGET),linux) - TESTING += $(vboxvideo_drv_0_OUTDIR)/tstvboxvideo68.run - OTHERS += $(vboxvideo_drv_0_OUTDIR)/tstvboxvideo68.run -$$(vboxvideo_drv_0_OUTDIR)/tstvboxvideo68.run: $$(INSTARGET_vboxvideo_drv) - $(QUIET)$(call MSG_L1,Checking for unresolved symbols in $<) - $(QUIET)/bin/sh $(PATH_ROOT)/src/bldprogs/checkUndefined.sh $(KBUILD_TARGET) \ - $(INSTARGET_vboxvideo_drv) $(VBOXVIDEO_SRC_PATH)/undefined_68 --static - $(QUIET)$(APPEND) -t "$@" "done" - endif +# ifeq ($(KBUILD_TARGET),linux) +# TESTING += $(vboxvideo_drv_0_OUTDIR)/tstvboxvideo68.run +# OTHERS += $(vboxvideo_drv_0_OUTDIR)/tstvboxvideo68.run +#$$(vboxvideo_drv_0_OUTDIR)/tstvboxvideo68.run: $$(INSTARGET_vboxvideo_drv) +# $(QUIET)$(call MSG_L1,Checking for unresolved symbols in $<) +# $(INSTARGET_vboxvideo_drv) $(OUR_PATH_VBOXVIDEO)/undefined_68 --static +# $(QUIET)$(APPEND) -t "$@" "done" +# endif TESTING += $(vboxvideo_drv_70_0_OUTDIR)/tstvboxvideo70.run OTHERS += $(vboxvideo_drv_70_0_OUTDIR)/tstvboxvideo70.run diff --git a/src/VBox/Devices/Makefile.kmk b/src/VBox/Devices/Makefile.kmk index 8246073..8ef14f4 100644 --- a/src/VBox/Devices/Makefile.kmk +++ b/src/VBox/Devices/Makefile.kmk @@ -96,7 +96,7 @@ if !defined(VBOX_ONLY_EXTPACKS) # Goes on almost to the end of the file. endif endif - VBoxDDU_LDFLAGS.linux = -Wl,--no-undefined + VBoxDDU_LDFLAGS.linux = -Wl,-rpath,$(VBOXDIR) VBoxDDU_LDFLAGS.l4 = -Wl,--no-undefined # @@ -215,7 +215,7 @@ if !defined(VBOX_ONLY_EXTPACKS) # Goes on almost to the end of the file. -framework IOKit \ -framework Carbon \ -framework DiskArbitration - VBoxDD_LDFLAGS.linux = -Wl,--no-undefined + VBoxDD_LDFLAGS.linux = -Wl,-rpath,$(VBOXDIR) VBoxDD_LDFLAGS.l4 = -Wl,--no-undefined @@ -244,7 +244,7 @@ if !defined(VBOX_ONLY_EXTPACKS) # Goes on almost to the end of the file. endif VBoxDD2_LIBS.darwin += $(LIB_REM) VBoxDD2_LDFLAGS.darwin = -install_name $(VBOX_DYLD_EXECUTABLE_PATH)/VBoxDD2.dylib - VBoxDD2_LDFLAGS.linux = -Wl,--no-undefined + VBoxDD2_LDFLAGS.linux = -Wl,-rpath,$(VBOXDIR) VBoxDD2_LDFLAGS.l4 = -Wl,--no-undefined ifdef VBOX_WITH_PXE_ROM diff --git a/src/VBox/Devices/testcase/Makefile.kmk b/src/VBox/Devices/testcase/Makefile.kmk index 1e81d40..d950a62 100644 --- a/src/VBox/Devices/testcase/Makefile.kmk +++ b/src/VBox/Devices/testcase/Makefile.kmk @@ -60,9 +60,11 @@ ifdef VBOX_WITH_RAW_MODE # # The testcase generator. # +ifndef VBOX_WITHOUT_BIARCH PROGRAMS += tstDeviceStructSizeRC tstDeviceStructSizeRC_TEMPLATE = VBoxRcExe tstDeviceStructSizeRC_DEFS = $(VBOX_DEVICES_TESTS_FEATURES) +endif tstDeviceStructSizeRC_SOURCES = tstDeviceStructSizeRC.cpp tstDeviceStructSizeRC_INCS = \ $(VBOX_PATH_DEVICES_SRC)/build \ @@ -73,7 +75,9 @@ endif # VBOX_WITH_RAW_MODE # # The testcase it self. # +ifndef VBOX_WITHOUT_BIARCH PROGRAMS += tstDeviceStructSize +endif tstDeviceStructSize_TEMPLATE = VBOXR3AUTOTST tstDeviceStructSize_DEFS = $(VBOX_DEVICES_TESTS_FEATURES) tstDeviceStructSize_INCS = \ diff --git a/src/VBox/Frontends/VBoxBFE/Makefile.kmk b/src/VBox/Frontends/VBoxBFE/Makefile.kmk index 6e95827..147d80c 100644 --- a/src/VBox/Frontends/VBoxBFE/Makefile.kmk +++ b/src/VBox/Frontends/VBoxBFE/Makefile.kmk @@ -148,6 +148,7 @@ VBoxBFE_LIBS.l4 = \ VBoxBFE_LIBS.darwin = \ $(LIB_SDK_LIBSDL_SDLMAIN) VBoxBFE_LDFLAGS.darwin = -framework Foundation -framework AppKit +VBoxBFE_LDFLAGS.linux = -Wl,-rpath,$(VBOXDIR) VBoxBFE_CXXFLAGS.l4 += -fno-rtti -nostdinc -Wno-non-virtual-dtor \ $(addprefix -I,$(VBOX_L4_GCC3_INCS) $(L4_INCDIR)) diff --git a/src/VBox/Frontends/VBoxFB/Makefile.kmk b/src/VBox/Frontends/VBoxFB/Makefile.kmk index cc5d5d7..91c5825 100644 --- a/src/VBox/Frontends/VBoxFB/Makefile.kmk +++ b/src/VBox/Frontends/VBoxFB/Makefile.kmk @@ -36,6 +36,7 @@ VBoxFB_INCS = $(VBOX_XPCOM_INCS) /usr/include/directfb VBoxFB_LIBPATH = $(LIBPATH_XPCOM) VBoxFB_LIBS = $(LIB_XPCOM) $(LIB_RUNTIME) directfb VBoxFB_DEPS = $(VBOX_PATH_SDK)/bindings/xpcom/include/VirtualBox_XPCOM.h +VBoxFB_LDFLAGS.linux = -Wl,-rpath,$(VBOXDIR) # generate rules. include $(KBUILD_PATH)/subfooter.kmk diff --git a/src/VBox/Frontends/VBoxManage/Makefile.kmk b/src/VBox/Frontends/VBoxManage/Makefile.kmk index bcb9a66..ca57ac8 100644 --- a/src/VBox/Frontends/VBoxManage/Makefile.kmk +++ b/src/VBox/Frontends/VBoxManage/Makefile.kmk @@ -86,6 +86,7 @@ endif ifndef VBOX_ONLY_DOCS VBoxManage_LIBS += $(LIB_DDU) endif # !VBOX_ONLY_DOCS +VBoxManage_LDFLAGS.linux = -Wl,-rpath,$(VBOXDIR) include $(KBUILD_PATH)/subfooter.kmk diff --git a/src/VBox/Frontends/VBoxSDL/Makefile.kmk b/src/VBox/Frontends/VBoxSDL/Makefile.kmk index 4972975..281feb6 100644 --- a/src/VBox/Frontends/VBoxSDL/Makefile.kmk +++ b/src/VBox/Frontends/VBoxSDL/Makefile.kmk @@ -93,6 +93,7 @@ endif VBoxSDL_LDFLAGS.darwin = \ -framework Foundation -framework AppKit +VBoxSDL_LDFLAGS.linux = -Wl,-rpath,$(VBOXDIR) VBoxSDL_CLEAN = $(VBoxSDL_0_OUTDIR)/Ico64x01.h VBoxSDL_INTERMEDIATES = $(VBoxSDL_0_OUTDIR)/Ico64x01.h diff --git a/src/VBox/Frontends/VirtualBox/Makefile.kmk b/src/VBox/Frontends/VirtualBox/Makefile.kmk index a2d0d49..a66974b 100644 --- a/src/VBox/Frontends/VirtualBox/Makefile.kmk +++ b/src/VBox/Frontends/VirtualBox/Makefile.kmk @@ -618,6 +618,7 @@ endif # Import QDesigner UI sources and translations from VBoxUI.pro. ifndef VBOX_WITH_REGISTRATION FORMS := $(filter-out src/wizards/registration/UIRegistrationWzdPage1.ui,$(FORMS)) +VirtualBox_LDFLAGS.linux = -Wl,-rpath,$(VBOXDIR) endif $(eval VirtualBox_SOURCES += $(FORMS)) diff --git a/src/VBox/Frontends/VirtualBox/VirtualBox2.qrc b/src/VBox/Frontends/VirtualBox/VirtualBox2.qrc index ca9dcc6..f8d9294 100644 --- a/src/VBox/Frontends/VirtualBox/VirtualBox2.qrc +++ b/src/VBox/Frontends/VirtualBox/VirtualBox2.qrc @@ -1,5 +1,7 @@ + images/os_altlinux.png + images/os_altlinux_64.png images/os_archlinux.png images/os_archlinux_64.png images/os_debian.png diff --git a/src/VBox/Frontends/VirtualBox/src/globals/VBoxGlobal.cpp b/src/VBox/Frontends/VirtualBox/src/globals/VBoxGlobal.cpp index 201139f..91eaf91 100644 --- a/src/VBox/Frontends/VirtualBox/src/globals/VBoxGlobal.cpp +++ b/src/VBox/Frontends/VirtualBox/src/globals/VBoxGlobal.cpp @@ -4904,6 +4904,8 @@ void VBoxGlobal::init() {"Linux24_64", ":/os_linux24_64.png"}, {"Linux26", ":/os_linux26.png"}, {"Linux26_64", ":/os_linux26_64.png"}, + {"ALTLinux", ":/os_altlinux.png"}, + {"ALTLinux_64", ":/os_altlinux_64.png"}, {"ArchLinux", ":/os_archlinux.png"}, {"ArchLinux_64", ":/os_archlinux_64.png"}, {"Debian", ":/os_debian.png"}, diff --git a/src/VBox/Frontends/VirtualBox/src/widgets/VBoxOSTypeSelectorWidget.cpp b/src/VBox/Frontends/VirtualBox/src/widgets/VBoxOSTypeSelectorWidget.cpp index 7d453c8..3bcb77b 100644 --- a/src/VBox/Frontends/VirtualBox/src/widgets/VBoxOSTypeSelectorWidget.cpp +++ b/src/VBox/Frontends/VirtualBox/src/widgets/VBoxOSTypeSelectorWidget.cpp @@ -79,6 +79,9 @@ VBoxOSTypeSelectorWidget::VBoxOSTypeSelectorWidget (QWidget *aParent) } } mCbFamily->setCurrentIndex (0); + int liIndex = mCbFamily->findData ("Linux", RoleTypeID); + if (liIndex != -1) + mCbFamily->setCurrentIndex (liIndex); onFamilyChanged (mCbFamily->currentIndex()); /* Set the minimum size for OS Type & Family selectors. */ @@ -199,10 +202,10 @@ void VBoxOSTypeSelectorWidget::onFamilyChanged (int aIndex) if (xpIndex != -1) mCbType->setCurrentIndex (xpIndex); } - /* Or select Ubuntu item for Linux family as default */ + /* Or select ALTLinux item for Linux family as default */ else if (familyId == "Linux") { - int ubIndex = mCbType->findData ("Ubuntu", RoleTypeID); + int ubIndex = mCbType->findData ("ALTLinux", RoleTypeID); if (ubIndex != -1) mCbType->setCurrentIndex (ubIndex); } diff --git a/src/VBox/Frontends/VirtualBox/src/wizards/newvm/UINewVMWzd.cpp b/src/VBox/Frontends/VirtualBox/src/wizards/newvm/UINewVMWzd.cpp index 0cf29f7..74e82c2 100644 --- a/src/VBox/Frontends/VirtualBox/src/wizards/newvm/UINewVMWzd.cpp +++ b/src/VBox/Frontends/VirtualBox/src/wizards/newvm/UINewVMWzd.cpp @@ -83,6 +83,8 @@ static const osTypePattern gs_OSTypePattern[] = { QRegExp("(moonshine)|(werewolf)|(sulphur)|(cambridge)|(leonidas)|(constantine)|(goddard)|(laughlin)", Qt::CaseInsensitive), "Fedora" }, /* Regular names of Linux distributions */ + { QRegExp("ALT.*64", Qt::CaseInsensitive), "ALTLinux_64" }, + { QRegExp("ALT", Qt::CaseInsensitive), "ALTLinux" }, { QRegExp("Arc.*64", Qt::CaseInsensitive), "ArchLinux_64" }, { QRegExp("Arc", Qt::CaseInsensitive), "ArchLinux" }, { QRegExp("De.*64", Qt::CaseInsensitive), "Debian_64" }, diff --git a/src/VBox/Installer/common/virtualbox.desktop.in b/src/VBox/Installer/common/virtualbox.desktop.in index e87bb7f..f85f3d2 100644 --- a/src/VBox/Installer/common/virtualbox.desktop.in +++ b/src/VBox/Installer/common/virtualbox.desktop.in @@ -2,6 +2,7 @@ Encoding=UTF-8 Version=1.0 Name=@VBOX_PRODUCT@ +Name[ru]=Виртуализатор VirtualBox GenericName=Virtual Machine Type=Application Exec=VirtualBox %U @@ -14,5 +15,6 @@ Comment=Run several virtual systems on a single host computer Comment[de]=Mehrere virtuelle Maschinen auf einem einzigen Rechner ausführen Comment[it]=Esegui più macchine virtuali su un singolo computer Comment[pl]=Uruchamianie wielu systemów wirtualnych na jednym komputerze gospodarza +Comment[ru]=Позволяет запускать несколько виртуальных систем на одном компьютере Comment[sv]=Kör flera virtuella system på en enda värddator Comment[ko]=가상 머신 diff --git a/src/VBox/Main/Makefile.kmk b/src/VBox/Main/Makefile.kmk index 6a21ecc..4de800a 100644 --- a/src/VBox/Main/Makefile.kmk +++ b/src/VBox/Main/Makefile.kmk @@ -258,6 +258,7 @@ endif VBoxSVC_LIBS += \ $(PATH_LIB)/SSMStandalone$(VBOX_SUFF_LIB) \ + $(LIB_RUNTIME) \ $(LIB_DDU) VBoxSVC_SDKS = VBOX_LIBPNG VBOX_ZLIB VBoxSVC_LIBS.solaris = \ @@ -384,6 +385,7 @@ ifdef VBOX_WITH_NETFLT endif endif VBoxSVC_LDFLAGS.darwin = -framework IOKit -framework SystemConfiguration +VBoxSVC_LDFLAGS.linux = -Wl,-rpath,$(VBOXDIR) ifdef VBOX_WITH_CROGL VBoxSVC_LDFLAGS.darwin += -framework OpenGL @@ -541,6 +543,7 @@ VBoxSVCM_SOURCES = \ VBoxSVCM_LDFLAGS.darwin = \ -install_name $(VBOX_DYLD_EXECUTABLE_PATH)/components/VBoxSVCM.dylib \ -exported_symbols_list $(VBoxSVCM_0_OUTDIR)/VBoxSVCM.def +VBoxSVCM_LDFLAGS.linux = -Wl,-rpath,$(VBOXDIR) ifeq ($(KBUILD_TARGET),darwin) VBoxSVCM_ORDERDEPS += $(VBoxSVCM_0_OUTDIR)/VBoxSVCM.def VBoxSVCM_CLEAN += $(VBoxSVCM_0_OUTDIR)/VBoxSVCM.def @@ -677,6 +680,8 @@ VBoxC_SOURCES += \ src-client/RemoteUSBBackend.cpp endif +VBoxC_LDFLAGS.linux = -Wl,-rpath,$(VBOXDIR) + ifeq ($(KBUILD_TARGET),darwin) VBoxC_ORDERDEPS += $(VBoxC_0_OUTDIR)/VBoxC.def VBoxC_CLEAN += $(VBoxC_0_OUTDIR)/VBoxC.def diff --git a/src/VBox/Main/src-all/Global.cpp b/src/VBox/Main/src-all/Global.cpp index 2483d60..644a9d2 100644 --- a/src/VBox/Main/src-all/Global.cpp +++ b/src/VBox/Main/src-all/Global.cpp @@ -123,6 +123,14 @@ const Global::OSType Global::sOSTypes[SchemaDefs::OSTypeId_COUNT] = VBOXOSTYPE_Linux26_x64, VBOXOSHINT_64BIT | VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_RTCUTC | VBOXOSHINT_USBTABLET, 256, 4, 8 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE, StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_AC97 }, + { "Linux", "Linux", SchemaDefs_OSTypeId_ALTLinux, "ALT Linux", + VBOXOSTYPE_ALTLinux, VBOXOSHINT_RTCUTC | VBOXOSHINT_USBTABLET, + 512, 12, 8 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE, + StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_AC97 }, + { "Linux", "Linux", SchemaDefs_OSTypeId_ALTLinux_64, "ALT Linux (64 bit)", + VBOXOSTYPE_ALTLinux_x64, VBOXOSHINT_64BIT | VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_RTCUTC | VBOXOSHINT_USBTABLET, + 512, 12, 8 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE, + StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_AC97 }, { "Linux", "Linux", SchemaDefs_OSTypeId_ArchLinux, "Arch Linux", VBOXOSTYPE_ArchLinux, VBOXOSHINT_RTCUTC | VBOXOSHINT_USBTABLET, 256, 12, 8 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE, diff --git a/src/VBox/Main/src-server/ApplianceImpl.cpp b/src/VBox/Main/src-server/ApplianceImpl.cpp index 25e4ff3..9ef4860 100644 --- a/src/VBox/Main/src-server/ApplianceImpl.cpp +++ b/src/VBox/Main/src-server/ApplianceImpl.cpp @@ -110,6 +110,8 @@ g_osTypes[] = { ovf::CIMOSType_CIMOS_Linux_64, SchemaDefs_OSTypeId_Linux26_64 }, // types that we have support for but CIM doesn't + { ovf::CIMOSType_CIMOS_Linux_2_6_x, SchemaDefs_OSTypeId_ALTLinux }, + { ovf::CIMOSType_CIMOS_Linux_2_6_x_64, SchemaDefs_OSTypeId_ALTLinux_64 }, { ovf::CIMOSType_CIMOS_Linux_2_6_x, SchemaDefs_OSTypeId_ArchLinux }, { ovf::CIMOSType_CIMOS_Linux_2_6_x_64, SchemaDefs_OSTypeId_ArchLinux_64 }, { ovf::CIMOSType_CIMOS_Linux_2_6_x, SchemaDefs_OSTypeId_Fedora }, diff --git a/src/VBox/Main/webservice/Makefile.kmk b/src/VBox/Main/webservice/Makefile.kmk index edebed2..eac02ee 100644 --- a/src/VBox/Main/webservice/Makefile.kmk +++ b/src/VBox/Main/webservice/Makefile.kmk @@ -610,6 +610,7 @@ $(VBOXWEB_OUT_DIR)/gsoap_generate_all_ts \ $(call MSG_GENERATE,,lots of files,$(GSOAPH_RELEVANT)) $(RM) -f $@ $(REDIRECT) -C $(VBOXWEB_OUT_DIR) -- $(VBOX_SOAPCPP2) $(VBOXWEB_SOAPCPP2_SKIP_FILES) -L -2 -w -I$(VBOX_PATH_GSOAP_IMPORT) $(GSOAPH_RELEVANT) + sed -i.orig "s/cp->ptr = (void\*)new (\(.*\)\[n\])/cp->ptr = (void\*)new \1\[n\]/g" $(VBOXWEB_OUT_DIR)/soapC.cpp $(APPEND) $@ done # copy the generated headers and stuff. This has to be a separate rule if we diff --git a/src/VBox/Main/xml/Settings.cpp b/src/VBox/Main/xml/Settings.cpp index 6056964..a9fb2d3 100644 --- a/src/VBox/Main/xml/Settings.cpp +++ b/src/VBox/Main/xml/Settings.cpp @@ -3145,6 +3145,7 @@ const struct { { "linux22", "Linux22" }, { "linux24", "Linux24" }, { "linux26", "Linux26" }, + { "altlinux", "ALTLinux" }, { "archlinux", "ArchLinux" }, { "debian", "Debian" }, { "opensuse", "OpenSUSE" }, diff --git a/src/VBox/Main/xml/SettingsConverter.xsl b/src/VBox/Main/xml/SettingsConverter.xsl index fc56ce3..e9212ed 100644 --- a/src/VBox/Main/xml/SettingsConverter.xsl +++ b/src/VBox/Main/xml/SettingsConverter.xsl @@ -747,6 +747,7 @@ Value '' of 'HardDisk::type' attribute is invalid. Linux22 Linux24 Linux26 + ALTLinux ArchLinux Debian OpenSUSE diff --git a/src/VBox/Main/xml/VirtualBox-settings-common.xsd b/src/VBox/Main/xml/VirtualBox-settings-common.xsd index 1c602d3..ed860fb 100644 --- a/src/VBox/Main/xml/VirtualBox-settings-common.xsd +++ b/src/VBox/Main/xml/VirtualBox-settings-common.xsd @@ -167,6 +167,8 @@ + + diff --git a/src/VBox/Runtime/Makefile.kmk b/src/VBox/Runtime/Makefile.kmk index 754f5dd..19ef4e6 100644 --- a/src/VBox/Runtime/Makefile.kmk +++ b/src/VBox/Runtime/Makefile.kmk @@ -316,6 +316,7 @@ RuntimeR3_SOURCES = \ common/misc/sg.cpp \ common/misc/circbuf.cpp \ common/misc/thread.cpp \ + common/misc/threadbasic.cpp \ common/misc/term.cpp \ common/path/rtPathRootSpecLen.cpp \ common/path/rtPathVolumeSpecLen.cpp \ @@ -1126,6 +1127,9 @@ RuntimeGuestR3Mini_SOURCES.linux = \ r3/posix/path-posix.cpp \ r3/posix/path2-posix.cpp \ r3/posix/utf8-posix.cpp +# due rtStrConvertWrapper() with RT_WITH_ICONV_CACHE +RuntimeGuestR3Mini_SOURCES.linux += \ + common/misc/threadbasic.cpp RuntimeGuestR3Mini_SOURCES.solaris = \ r3/posix/RTMemProtect-posix.cpp \ r3/posix/rtmempage-exec-mmap-posix.cpp \ @@ -1937,8 +1941,7 @@ ifdef VBOX_WITH_RAW_MODE RuntimeRC_SOURCES += os2/sys0.asm endif - if1of ($(KBUILD_TARGET), darwin solaris freebsd) - RuntimeRC_SOURCES += \ + LIBGCC_MATH_SOURCES := \ common/math/gcc/adddi3.c \ common/math/gcc/anddi3.c \ common/math/gcc/ashldi3.c \ @@ -1958,6 +1961,13 @@ ifdef VBOX_WITH_RAW_MODE common/math/gcc/udivdi3.c \ common/math/gcc/umoddi3.c \ common/math/gcc/xordi3.c + + if1of ($(KBUILD_TARGET), darwin solaris freebsd) + RuntimeRC_SOURCES += $(LIBGCC_MATH_SOURCES) + else + ifdef VBOX_WITHOUT_BIARCH + RuntimeRC_SOURCES += $(LIBGCC_MATH_SOURCES) + endif endif diff --git a/src/VBox/Runtime/common/misc/thread.cpp b/src/VBox/Runtime/common/misc/thread.cpp index 5a61bd8..c291d88 100644 --- a/src/VBox/Runtime/common/misc/thread.cpp +++ b/src/VBox/Runtime/common/misc/thread.cpp @@ -500,32 +500,6 @@ PRTTHREADINT rtThreadGetByNative(RTNATIVETHREAD NativeThread) /** - * Gets the per thread data structure for a thread handle. - * - * @returns Pointer to the per thread data structure for Thread. - * The caller must release the thread using rtThreadRelease(). - * @returns NULL if Thread was not found. - * @param Thread Thread id which structure is to be returned. - */ -PRTTHREADINT rtThreadGet(RTTHREAD Thread) -{ - if ( Thread != NIL_RTTHREAD - && VALID_PTR(Thread)) - { - PRTTHREADINT pThread = (PRTTHREADINT)Thread; - if ( pThread->u32Magic == RTTHREADINT_MAGIC - && pThread->cRefs > 0) - { - ASMAtomicIncU32(&pThread->cRefs); - return pThread; - } - } - - AssertMsgFailed(("Thread=%RTthrd\n", Thread)); - return NULL; -} - -/** * Release a per thread data structure. * * @returns New reference count. diff --git a/src/VBox/Runtime/common/misc/threadbasic.cpp b/src/VBox/Runtime/common/misc/threadbasic.cpp new file mode 100644 index 0000000..e8ef8a2 --- /dev/null +++ b/src/VBox/Runtime/common/misc/threadbasic.cpp @@ -0,0 +1,63 @@ +/* $Id: thread.cpp $ */ +/** @file + * IPRT - Threads, basic routines. + */ + +/* + * Copyright (C) 2006-2010 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + + +/******************************************************************************* +* Header Files * +*******************************************************************************/ +#define LOG_GROUP RTLOGGROUP_THREAD +#include +#include "internal/iprt.h" + +#include +#include "internal/thread.h" + + +/** + * Gets the per thread data structure for a thread handle. + * + * @returns Pointer to the per thread data structure for Thread. + * The caller must release the thread using rtThreadRelease(). + * @returns NULL if Thread was not found. + * @param Thread Thread id which structure is to be returned. + */ +PRTTHREADINT rtThreadGet(RTTHREAD Thread) +{ + if ( Thread != NIL_RTTHREAD + && VALID_PTR(Thread)) + { + PRTTHREADINT pThread = (PRTTHREADINT)Thread; + if ( pThread->u32Magic == RTTHREADINT_MAGIC + && pThread->cRefs > 0) + { + ASMAtomicIncU32(&pThread->cRefs); + return pThread; + } + } + + AssertMsgFailed(("Thread=%RTthrd\n", Thread)); + return NULL; +} diff --git a/src/VBox/Runtime/r0drv/linux/the-linux-kernel.h b/src/VBox/Runtime/r0drv/linux/the-linux-kernel.h index 5bd9d01..410ba63 100644 --- a/src/VBox/Runtime/r0drv/linux/the-linux-kernel.h +++ b/src/VBox/Runtime/r0drv/linux/the-linux-kernel.h @@ -304,11 +304,21 @@ DECLINLINE(unsigned long) msecs_to_jiffies(unsigned int cMillies) #undef bool /* - * There are post-2.6.24 kernels (confusingly with unchanged version number) - * which eliminate macros which were marked as deprecated. + * The 2.6.25 kernel eliminates macros that were marked as deprecated and eliminates + * routine change_page_attr() in favor of the set_pages_* API. */ -#ifndef __attribute_used__ +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 25) #define __attribute_used__ __used + +static inline int my_change_page_attr(struct page *page, int numpages, pgprot_t prot) +{ + /* use the set_pages_* API */ + if (pgprot_val(prot) & _PAGE_NX) + set_pages_nx(page, numpages); + set_pages_uc(page, numpages); + return 0; +} +#define change_page_attr(a,b,c) my_change_page_attr((a), (b), (c)) #endif /** diff --git a/src/VBox/Runtime/r3/linux/semevent-linux.cpp b/src/VBox/Runtime/r3/linux/semevent-linux.cpp index 9982d3e..4e64bdb 100644 --- a/src/VBox/Runtime/r3/linux/semevent-linux.cpp +++ b/src/VBox/Runtime/r3/linux/semevent-linux.cpp @@ -104,7 +104,7 @@ struct RTSEMEVENTINTERNAL static long sys_futex(uint32_t volatile *uaddr, int op, int val, struct timespec *utime, int32_t *uaddr2, int val3) { errno = 0; - long rc = syscall(__NR_futex, uaddr, op, val, utime, uaddr2, val3); + long rc = syscall(SYS_futex, uaddr, op, val, utime, uaddr2, val3); if (rc < 0) { Assert(rc == -1); diff --git a/src/VBox/VMM/Makefile.kmk b/src/VBox/VMM/Makefile.kmk index 700ca39..86e88df 100644 --- a/src/VBox/VMM/Makefile.kmk +++ b/src/VBox/VMM/Makefile.kmk @@ -234,7 +234,7 @@ VBoxVMM_LIBS += \ VBoxVMM_LIBS.win = $(PATH_TOOL_$(VBOX_VCC_TOOL)_LIB)/delayimp.lib VBoxVMM_LDFLAGS.win = /DELAYLOAD:dbghelp.dll -VBoxVMM_LDFLAGS.linux = -Wl,--no-undefined +VBoxVMM_LDFLAGS.linux = -Wl,-rpath,$(VBOXDIR) VBoxVMM_LDFLAGS.darwin = -install_name $(VBOX_DYLD_EXECUTABLE_PATH)/VBoxVMM.dylib VBoxVMM_LDFLAGS.solaris = -mimpure-text #ifdef VBOX_WITH_PDM_ASYNC_COMPLETION diff --git a/src/VBox/VMM/testcase/Makefile.kmk b/src/VBox/VMM/testcase/Makefile.kmk index ed2de9d..ff032ba 100644 --- a/src/VBox/VMM/testcase/Makefile.kmk +++ b/src/VBox/VMM/testcase/Makefile.kmk @@ -21,9 +21,11 @@ include $(KBUILD_PATH)/subheader.kmk # # Target lists. # -PROGRAMS += tstVMStructSize tstAsmStructs -ifdef VBOX_WITH_RAW_MODE - PROGRAMS += tstVMStructRC tstAsmStructsRC +ifndef VBOX_WITHOUT_BIARCH + PROGRAMS += tstVMStructSize tstAsmStructs + ifdef VBOX_WITH_RAW_MODE + PROGRAMS += tstVMStructRC tstAsmStructsRC + endif endif ifndef VBOX_ONLY_EXTPACKS_USE_IMPLIBS PROGRAMS += tstGlobalConfig tstInstrEmul @@ -67,9 +69,11 @@ BLDDIRS += $(VBOX_VMM_TESTCASE_OUT_DIR) # ifeq ($(KBUILD_TARGET),$(KBUILD_HOST)) ifeq ($(filter-out x86.x86 amd64.amd64 x86.amd64, $(KBUILD_TARGET_ARCH).$(KBUILD_HOST_ARCH)),) + ifndef VBOX_WITHOUT_BIARCH OTHERS += \ $(VBOX_VMM_TESTCASE_OUT_DIR)/tstAsmStructs.run \ $(VBOX_VMM_TESTCASE_OUT_DIR)/tstVMStructSize.run + endif endif endif diff --git a/src/libs/xpcom18a4/Makefile.kmk b/src/libs/xpcom18a4/Makefile.kmk index 1dd0f62..af1bd31 100644 --- a/src/libs/xpcom18a4/Makefile.kmk +++ b/src/libs/xpcom18a4/Makefile.kmk @@ -466,12 +466,12 @@ ifeq ($(KBUILD_TARGET),os2) xpidl-DLLS_SOURCES += $(wildcard $(VBOX_PATH_LIBIDL)/lib/libIDL.dll) else # We do these ONCE. - libIDL_config_cflags := $(shell $(VBOX_LIBIDL_CONFIG) --cflags) - libIDL_config_libs := $(shell $(VBOX_LIBIDL_CONFIG) --libs) xpidl_CFLAGS = \ - $(libIDL_config_cflags) + $(shell pkg-config --cflags libIDL-2.0) xpidl_LDFLAGS = \ - $(libIDL_config_libs) + $(shell pkg-config --libs-only-L libIDL-2.0) + xpidl_LIBS.linux = \ + $(shell pkg-config --libs-only-l libIDL-2.0 | sed -e 's/-l//g') xpidl_LDFLAGS.linux = \ $(VBOX_LD_as_needed) endif @@ -1025,6 +1025,7 @@ VBoxXPCOM_LDFLAGS.solaris += -Wl,-z,allextract \ #VBoxXPCOM_LIBS += $(LIB_RUNTIME_EF) #VBoxXPCOM_LDFLAGS = -Wl,--whole-archive $(VBoxXPCOM_LIBS) -Wl,--no-whole-archive $(LIB_RUNTIME) VBoxXPCOM_LDFLAGS.darwin = -install_name $(VBOX_DYLD_EXECUTABLE_PATH)/VBoxXPCOM.dylib +VBoxXPCOM_LDFLAGS.linux = -Wl,-rpath,$(VBOXDIR) ifdef VBOX_IPC_RELEASE_LOG IPC_LOGGING = 1 @@ -1105,7 +1106,9 @@ VBoxXPCOMIPCC_SOURCES += \ ipc/ipcd/client/src/ipcConnectionUnix.cpp endif VBoxXPCOMIPCC_LDFLAGS.darwin = -install_name $(VBOX_DYLD_EXECUTABLE_PATH)/components/VBoxXPCOMIPCC.dylib +VBoxXPCOMIPCC_LDFLAGS.linux = -Wl,-rpath,$(VBOXDIR) VBoxXPCOMIPCC_LIBS = \ + $(TARGET_VBoxXPCOM) \ $(VBox-xpcom-ipcutils_1_TARGET) \ $(VBox-xpcom-ipcshared_1_TARGET) \ $(VBox-xpcom-ipcdlock_1_TARGET) \ @@ -1131,6 +1134,7 @@ else VBoxXPCOMIPCD_SOURCES += \ ipc/ipcd/daemon/src/ipcdUnix.cpp endif +VBoxXPCOMIPCD_LDFLAGS.linux = -Wl,-rpath,$(VBOXDIR) # diff --git a/src/libs/xpcom18a4/python/__init__.py b/src/libs/xpcom18a4/python/__init__.py index 6d03b9c..f6cf204 100644 --- a/src/libs/xpcom18a4/python/__init__.py +++ b/src/libs/xpcom18a4/python/__init__.py @@ -97,7 +97,7 @@ class ConsoleServiceStream: def flush(self): pass def write(self, msg): - import _xpcom + from xpcom import _xpcom _xpcom.LogConsoleMessage(msg) def close(self): pass diff --git a/src/libs/xpcom18a4/python/components.py b/src/libs/xpcom18a4/python/components.py index 9ea64fc..f6ddd87 100644 --- a/src/libs/xpcom18a4/python/components.py +++ b/src/libs/xpcom18a4/python/components.py @@ -37,7 +37,7 @@ # This module provides the JavaScript "components" interface import xpt -import xpcom, _xpcom +import xpcom, xpcom._xpcom as _xpcom import xpcom.client import xpcom.server import types