Config.kmk | 14 +- configure | 9 +- include/VBox/ostypes.h | 2 + .../Additions/linux/installer/vboxadd-service.sh | 258 ++-------------- src/VBox/Additions/linux/installer/vboxadd.sh | 344 ++++---------------- src/VBox/Devices/Makefile.kmk | 6 +- src/VBox/Devices/Storage/testcase/Makefile.kmk | 1 + 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/VirtualBox.qrc | 2 + src/VBox/Frontends/VirtualBox/src/VBoxGlobal.cpp | 2 + .../VirtualBox/src/VBoxOSTypeSelectorWidget.cpp | 4 +- src/VBox/Main/Global.cpp | 4 + src/VBox/Main/Makefile.kmk | 5 + src/VBox/Main/VMMDevInterface.cpp | 1 + src/VBox/Main/xml/SettingsConverter.xsl | 1 + src/VBox/Main/xml/VirtualBox-settings-common.xsd | 2 + src/VBox/Runtime/Makefile.kmk | 10 +- 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 | 7 +- src/libs/xpcom18a4/Makefile.kmk | 6 +- src/libs/xpcom18a4/python/__init__.py | 2 +- src/libs/xpcom18a4/python/components.py | 2 +- src/recompiler/Makefile.kmk | 2 +- 30 files changed, 172 insertions(+), 541 deletions(-) diff --git a/Config.kmk b/Config.kmk index 8ca2034..9341d9e 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 + # Install paths. PATH_INS = $(PATH_OUT) ifeq ($(KBUILD_TARGET),darwin) @@ -1358,7 +1361,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), win.x86 linux.x86 solaris.x86) +if1of ($(KBUILD_HOST).$(KBUILD_HOST_ARCH), win.x86 linux.x86 linux.amd64 solaris.x86) PATH_TOOL_YASM ?= $(PATH_DEVTOOLS_BLD)/bin endif @@ -1929,7 +1932,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 \ diff --git a/configure b/configure index 420e4b2..1250cfc 100755 --- a/configure +++ b/configure @@ -1658,12 +1658,11 @@ 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 + log_success "yes" fi - log_success "" } diff --git a/include/VBox/ostypes.h b/include/VBox/ostypes.h index ff6b720..1d86e2f 100644 --- a/include/VBox/ostypes.h +++ b/include/VBox/ostypes.h @@ -97,6 +97,8 @@ typedef enum VBOXOSTYPE VBOXOSTYPE_Ubuntu_x64 = 0x5C100, VBOXOSTYPE_Xandros = 0x5D000, VBOXOSTYPE_Xandros_x64 = 0x5D100, + VBOXOSTYPE_ALTLinux = 0x5E000, + VBOXOSTYPE_ALTLinux_x64 = 0x5E100, VBOXOSTYPE_FreeBSD = 0x60000, VBOXOSTYPE_FreeBSD_x64 = 0x60100, VBOXOSTYPE_OpenBSD = 0x61000, diff --git a/src/VBox/Additions/linux/installer/vboxadd-service.sh b/src/VBox/Additions/linux/installer/vboxadd-service.sh index 2872d4d..aa81d0b 100755 --- a/src/VBox/Additions/linux/installer/vboxadd-service.sh +++ b/src/VBox/Additions/linux/installer/vboxadd-service.sh @@ -30,250 +30,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 --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 --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 $@` - } +# Source function library. +. /etc/init.d/functions - fail_msg() { - stat_fail - } +LOCKFILE="/var/lock/subsys/vboxadd-service" +PIDFILE="/var/run/vboxadd-service" +RETVAL=0 - succ_msg() { - stat_done - } +# Source ntpd configuration. +VBOXADD_SERVICE_ARGS="" +SourceIfNotEmpty /etc/sysconfig/vboxadd-service - begin() { - stat_busy "$1" - } - -fi - -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/vboxadd-service - -test -x "$binary" || { - echo "Cannot run $binary" - exit 1 -} +binary=vboxadd-service vboxaddrunning() { lsmod | grep -q "vboxadd[^_-]" } start() { - if ! test -f $PIDFILE; then - begin "Starting VirtualBox Guest Addition service "; - vboxaddrunning || { - echo "VirtualBox Additions module not loaded!" - exit 1 - } - daemon $binary + if vboxaddrunning; then + start_daemon --displayname "VirtualBox Guest Addition service" \ + --make-pidfile --pidfile "$PIDFILE" --lockfile "$LOCKFILE" -- $binary -f $VBOXADD_SERVICE_ARGS RETVAL=$? - test $RETVAL -eq 0 && echo `pidof vboxadd-service` > $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 "; - vboxaddrunning || { - echo "VirtualBox Additions module not loaded!" - exit 1 - } - killproc $binary - RETVAL=$? - test $RETVAL -eq 0 && rm -f $PIDFILE - succ_msg - fi + stop_daemon --displayname "VirtualBox Guest Addition service" --pidfile "$PIDFILE" --lockfile "$LOCKFILE" -- $binary + RETVAL=$? return $RETVAL } @@ -281,15 +72,6 @@ restart() { stop && start } - status() { - echo -n "Checking for vboxadd-service" - if [ -f $PIDFILE ]; then - echo " ...running" - else - echo " ...not running" - fi - } - case "$1" in start) start @@ -301,7 +83,7 @@ restart) restart ;; status) - status + status --displayname "VirtualBox Guest Addition service" --pidfile "$PIDFILE" -- $binary ;; *) echo "Usage: $0 {start|stop|restart|status}" diff --git a/src/VBox/Additions/linux/installer/vboxadd.sh b/src/VBox/Additions/linux/installer/vboxadd.sh index e54d7ed..b4fa45b 100755 --- a/src/VBox/Additions/linux/installer/vboxadd.sh +++ b/src/VBox/Additions/linux/installer/vboxadd.sh @@ -30,132 +30,14 @@ # Description: VirtualBox Linux Additions kernel modules ### END INIT INFO -PATH=$PATH:/bin:/sbin:/usr/sbin -BUILDVBOXADD=`/bin/ls /usr/src/vboxadd*/build_in_tmp 2>/dev/null|cut -d' ' -f1` -BUILDVBOXVFS=`/bin/ls /usr/src/vboxvfs*/build_in_tmp 2>/dev/null|cut -d' ' -f1` -BUILDVBOXVIDEO=`/bin/ls /usr/src/vboxvideo*/build_in_tmp 2>/dev/null|cut -d' ' -f1` -LOG="/var/log/vboxadd-install.log" +# Do not load RH compatibility interface. +WITHOUT_RC_COMPAT=1 -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 +# Source function library. +. /etc/init.d/functions -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/vboxadd -userdev=/dev/vboxuser -owner=vboxadd -group=1 - -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_vboxadd() { @@ -167,183 +49,87 @@ running_vboxvfs() lsmod | grep -q "vboxvfs[^_-]" } -start() +running_vboxvideo() { - begin "Starting VirtualBox Additions "; - running_vboxadd || { - rm -f $dev || { - fail "Cannot remove $dev" - } - - rm -f $userdev || { - fail "Cannot remove $userdev" - } - - modprobe vboxadd >/dev/null 2>&1 || { - fail "modprobe vboxadd failed" - } - sleep .5 - } - if [ ! -c $dev ]; then - maj=`sed -n 's;\([0-9]\+\) vboxadd;\1;p' /proc/devices` - if [ ! -z "$maj" ]; then - min=0 - else - min=`sed -n 's;\([0-9]\+\) vboxadd;\1;p' /proc/misc` - if [ ! -z "$min" ]; then - maj=10 - fi - fi - test -z "$maj" && { - rmmod vboxadd 2>/dev/null - fail "Cannot locate the VirtualBox device" - } - - mknod -m 0664 $dev c $maj $min || { - rmmod vboxadd 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 vboxadd 2>/dev/null - fail "Cannot change owner $owner:$group for device $dev" - } + lsmod | grep -q "vboxvideo[^_-]" +} - 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 vboxadd 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 vboxadd 2>/dev/null - fail "Cannot change owner $owner:$group for device $userdev" - } +start() +{ + action "Loading VirtualBox module (vboxadd):" modprobe vboxadd + RETVAL=$? + if [ $RETVAL = 0 ]; then + action "Loading VirtualBox module (vboxvfs):" modprobe vboxvfs + RETVAL=$? + if [ $RETVAL = 0 ]; then + action "Mount VirtualBox Share Folders:" mount -a -t vboxsf + action "Loading VirtualBox module (vboxvideo):" modprobe vboxvideo + RETVAL=$? fi fi - - if [ -n "$BUILDVBOXVFS" ]; then - running_vboxvfs || { - modprobe vboxvfs > /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 vboxvfs failed" - } - } - 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. - mount -a -t vboxsf - - succ_msg - return 0 + [ $RETVAL = 0 ] && touch "$LOCKFILE" ||: + return $RETVAL } stop() { - begin "Stopping VirtualBox Additions "; - if !umount -a -t vboxsf 2>/dev/null; then - fail "Cannot unmount vboxsf folders" - fi - if [ -n "$BUILDVBOXVFS" ]; then - if running_vboxvfs; then - rmmod vboxvfs 2>/dev/null || fail "Cannot unload module vboxvfs" - fi - fi - if running_vboxadd; then - rmmod vboxadd 2>/dev/null || fail "Cannot unload module vboxadd" - rm -f $userdev || fail "Cannot unlink $userdev" - rm -f $dev || fail "Cannot unlink $dev" - fi - succ_msg - return 0 + local RETVAL1 RETVAL2 RETVAL3 + action "Unmount VirtualBox Share Folders:" umount -a -t vboxsf + action "Unloading VirtualBox module (vboxvideo):" modprobe -r vboxvideo || RETVAL3=$? + action "Unloading VirtualBox module (vboxvfs):" modprobe -r vboxvfs || RETVAL2=$? + action "Unloading VirtualBox module (vboxadd):" modprobe -r vboxadd || 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 } -setup() -{ - # don't stop the old modules here -- they might be in use - if find /lib/modules/`uname -r` -name "vboxvfs\.*" 2>/dev/null|grep -q vboxvfs; then - begin "Removing old VirtualBox vboxvfs kernel module" - find /lib/modules/`uname -r` -name "vboxvfs\.*" 2>/dev/null|xargs rm -f 2>/dev/null - succ_msg - fi - if find /lib/modules/`uname -r` -name "vboxadd\.*" 2>/dev/null|grep -q vboxadd; then - begin "Removing old VirtualBox vboxadd kernel module" - find /lib/modules/`uname -r` -name "vboxadd\.*" 2>/dev/null|xargs rm -f 2>/dev/null - succ_msg - fi - begin "Recompiling VirtualBox kernel modules" - if ! $BUILDVBOXADD \ - --save-module-symvers /tmp/vboxadd-Module.symvers \ - --no-print-directory install > $LOG 2>&1; then - fail "Look at $LOG to find out what went wrong" - fi - if [ -n "$BUILDVBOXVFS" ]; then - if ! $BUILDVBOXVFS \ - --use-module-symvers /tmp/vboxadd-Module.symvers \ - --no-print-directory install >> $LOG 2>&1; then - fail "Look at $LOG to find out what went wrong" - fi - fi - if [ -n "$BUILDVBOXVIDEO" ]; then - if ! $BUILDVBOXVIDEO \ - --use-module-symvers /tmp/vboxadd-Module.symvers \ - --no-print-directory install >> $LOG 2>&1; then - fail "Look at $LOG to find out what went wrong" - fi - fi - succ_msg - start - echo - echo "You should reboot your guest to make sure the new modules are actually used" -} - -dmnstatus() +status() { if running_vboxadd; then + echo "vboxadd module is loaded" + running_vboxvfs && echo "vboxvfs 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 - ;; -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/Devices/Makefile.kmk b/src/VBox/Devices/Makefile.kmk index 49495a4..334875a 100644 --- a/src/VBox/Devices/Makefile.kmk +++ b/src/VBox/Devices/Makefile.kmk @@ -104,7 +104,7 @@ ifdef VBOX_WITH_USB endif endif -VBoxDDU_LDFLAGS.linux = -Wl,--no-undefined +VBoxDDU_LDFLAGS.linux = -Wl,-rpath,$(VBOXDIR) VBoxDDU_LDFLAGS.l4 = -Wl,--no-undefined # @@ -223,7 +223,7 @@ VBoxDD_LDFLAGS.darwin = -install_name $(VBOX_DYLD_EXECUTABLE_PATH)/VBoxDD.dyli -framework IOKit \ -framework Carbon \ -framework DiskArbitration -VBoxDD_LDFLAGS.linux = -Wl,--no-undefined +VBoxDD_LDFLAGS.linux = -Wl,-rpath,$(VBOXDIR) VBoxDD_LDFLAGS.l4 = -Wl,--no-undefined # @@ -250,7 +250,7 @@ VBoxDD2_LIBS += \ 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 diff --git a/src/VBox/Devices/Storage/testcase/Makefile.kmk b/src/VBox/Devices/Storage/testcase/Makefile.kmk index 833de97..c579a0b 100644 --- a/src/VBox/Devices/Storage/testcase/Makefile.kmk +++ b/src/VBox/Devices/Storage/testcase/Makefile.kmk @@ -34,6 +34,7 @@ ifdef VBOX_WITH_TESTCASES vditool_SOURCES = vditool.cpp endif endif +# vditool_LDFLAGS.linux = -Wl,-rpath,$(VBOXDIR) # diff --git a/src/VBox/Devices/testcase/Makefile.kmk b/src/VBox/Devices/testcase/Makefile.kmk index b75545b..9ae1182 100644 --- a/src/VBox/Devices/testcase/Makefile.kmk +++ b/src/VBox/Devices/testcase/Makefile.kmk @@ -48,7 +48,9 @@ TESTING += \ # # The testcase generator. # +ifndef VBOX_WITHOUT_BIARCH PROGRAMS += tstDeviceStructSizeGC +endif tstDeviceStructSizeGC_TEMPLATE = VBOXGCEXE tstDeviceStructSizeGC_DEFS = ifdef VBOX_WITH_USB @@ -81,7 +83,9 @@ tstDeviceStructSizeGC_INCS = \ # # The testcase it self. # +ifndef VBOX_WITHOUT_BIARCH PROGRAMS += tstDeviceStructSize +endif tstDeviceStructSize_TEMPLATE = VBOXR3AUTOTST tstDeviceStructSize_DEFS = ifdef VBOX_WITH_USB diff --git a/src/VBox/Frontends/VBoxBFE/Makefile.kmk b/src/VBox/Frontends/VBoxBFE/Makefile.kmk index 84dff48..2351c07 100644 --- a/src/VBox/Frontends/VBoxBFE/Makefile.kmk +++ b/src/VBox/Frontends/VBoxBFE/Makefile.kmk @@ -150,6 +150,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 caa94c9..75fbd26 100644 --- a/src/VBox/Frontends/VBoxFB/Makefile.kmk +++ b/src/VBox/Frontends/VBoxFB/Makefile.kmk @@ -52,6 +52,7 @@ VBoxFB_LIBPATH = \ VBoxFB_CXXFLAGS = \ -DNDEBUG -DTRIMMED -O -Wall -fno-rtti -fno-exceptions \ -Wno-non-virtual-dtor -Wno-long-long -fshort-wchar -pthread -pipe +VBoxFB_LDFLAGS.linux = -Wl,-rpath,$(VBOXDIR) include $(KBUILD_PATH)/subfooter.kmk diff --git a/src/VBox/Frontends/VBoxManage/Makefile.kmk b/src/VBox/Frontends/VBoxManage/Makefile.kmk index bfc1102..4e9f51c 100644 --- a/src/VBox/Frontends/VBoxManage/Makefile.kmk +++ b/src/VBox/Frontends/VBoxManage/Makefile.kmk @@ -82,6 +82,7 @@ endif ifndef VBOX_ONLY_DOCS VBoxManage_LIBS += $(LIB_DDU) endif # !VBOX_ONLY_DOCS +VBoxManage_LDFLAGS.linux = -Wl,-rpath,$(VBOXDIR) # VBoxManageSVN.cpp uses VBOX_SVN_REV. VBoxManageSVN.cpp_DEFS = VBOX_SVN_REV=$(VBOX_SVN_REV) diff --git a/src/VBox/Frontends/VBoxSDL/Makefile.kmk b/src/VBox/Frontends/VBoxSDL/Makefile.kmk index 937d52a..26e4ce1 100644 --- a/src/VBox/Frontends/VBoxSDL/Makefile.kmk +++ b/src/VBox/Frontends/VBoxSDL/Makefile.kmk @@ -112,6 +112,7 @@ endif VBoxSDL_LDFLAGS.darwin = \ -framework Foundation -framework AppKit +VBoxSDL_LDFLAGS.linux = -Wl,-rpath,$(VBOXDIR) VBoxSDL_CLEAN = $(PATH_VBoxSDL)/Ico64x01.h VBoxSDL_INTERMEDIATES = $(PATH_VBoxSDL)/Ico64x01.h diff --git a/src/VBox/Frontends/VirtualBox/Makefile.kmk b/src/VBox/Frontends/VirtualBox/Makefile.kmk index 4ab60e2..56f474c 100644 --- a/src/VBox/Frontends/VirtualBox/Makefile.kmk +++ b/src/VBox/Frontends/VirtualBox/Makefile.kmk @@ -465,6 +465,7 @@ endif # Import QDesigner UI sources and translations from VBoxUI.pro. ifndef VBOX_WITH_REGISTRATION FORMS := $(filter-out ui/VBoxRegistrationDlg.ui,$(FORMS)) +VirtualBox_LDFLAGS.linux = -Wl,-rpath,$(VBOXDIR) endif $(eval VirtualBox_SOURCES += $(FORMS)) diff --git a/src/VBox/Frontends/VirtualBox/VirtualBox.qrc b/src/VBox/Frontends/VirtualBox/VirtualBox.qrc index 9b565bd..a9ed379 100644 --- a/src/VBox/Frontends/VirtualBox/VirtualBox.qrc +++ b/src/VBox/Frontends/VirtualBox/VirtualBox.qrc @@ -16,6 +16,8 @@ images/vm_show_logs_disabled_32px.png images/vm_start_32px.png images/vm_start_disabled_32px.png + 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/VBoxGlobal.cpp b/src/VBox/Frontends/VirtualBox/src/VBoxGlobal.cpp index 771a43f..4106f55 100644 --- a/src/VBox/Frontends/VirtualBox/src/VBoxGlobal.cpp +++ b/src/VBox/Frontends/VirtualBox/src/VBoxGlobal.cpp @@ -4563,6 +4563,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/VBoxOSTypeSelectorWidget.cpp b/src/VBox/Frontends/VirtualBox/src/VBoxOSTypeSelectorWidget.cpp index 881d7a9..c732d8a 100644 --- a/src/VBox/Frontends/VirtualBox/src/VBoxOSTypeSelectorWidget.cpp +++ b/src/VBox/Frontends/VirtualBox/src/VBoxOSTypeSelectorWidget.cpp @@ -195,10 +195,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/Main/Global.cpp b/src/VBox/Main/Global.cpp index ce1a9b0..de0f52e 100644 --- a/src/VBox/Main/Global.cpp +++ b/src/VBox/Main/Global.cpp @@ -79,6 +79,10 @@ const Global::OSType Global::sOSTypes[SchemaDefs::OSTypeId_COUNT] = VBOXOSTYPE_Linux26, VBOXOSHINT_NONE, 256, 4, 8 * _1K, NetworkAdapterType_Am79C973 }, { "Linux", "Linux", SchemaDefs_OSTypeId_Linux26_64, "Linux 2.6 (64 bit)", VBOXOSTYPE_Linux26_x64, VBOXOSHINT_64BIT | VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC, 256, 4, 8 * _1K, NetworkAdapterType_I82540EM }, + { "Linux", "Linux", SchemaDefs_OSTypeId_ALTLinux, "ALT Linux", + VBOXOSTYPE_ALTLinux, VBOXOSHINT_NONE, 256, 12, 8 * _1K, NetworkAdapterType_Am79C973 }, + { "Linux", "Linux", SchemaDefs_OSTypeId_ALTLinux_64, "ALT Linux (64 bit)", + VBOXOSTYPE_ALTLinux_x64, VBOXOSHINT_64BIT | VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC, 256, 12, 8 * _1K, NetworkAdapterType_I82540EM }, { "Linux", "Linux", SchemaDefs_OSTypeId_ArchLinux, "Arch Linux", VBOXOSTYPE_ArchLinux, VBOXOSHINT_NONE, 256, 12, 8 * _1K, NetworkAdapterType_Am79C973 }, { "Linux", "Linux", SchemaDefs_OSTypeId_ArchLinux_64, "Arch Linux (64 bit)", diff --git a/src/VBox/Main/Makefile.kmk b/src/VBox/Main/Makefile.kmk index 6e0ee89..7fe7e17 100644 --- a/src/VBox/Main/Makefile.kmk +++ b/src/VBox/Main/Makefile.kmk @@ -249,6 +249,7 @@ ifdef VBOX_WITH_USB endif VBoxSVC_LIBS += \ + $(LIB_RUNTIME) \ $(LIB_DDU) \ $(LIB_SETTINGS) VBoxSVC_LIBS.darwin = \ @@ -373,6 +374,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 @@ -498,6 +500,7 @@ VBoxSVCM_SOURCES = \ VBoxSVCM_LDFLAGS.darwin = \ -install_name $(VBOX_DYLD_EXECUTABLE_PATH)/components/VBoxSVCM.dylib \ -exported_symbols_list $(PATH_VBoxSVCM)/VBoxSVCM.def +VBoxSVCM_LDFLAGS.linux = -Wl,-rpath,$(VBOXDIR) ifeq ($(KBUILD_TARGET),darwin) VBoxSVCM_ORDERDEPS += $(PATH_VBoxSVCM)/VBoxSVCM.def VBoxSVCM_CLEAN += $(PATH_VBoxSVCM)/VBoxSVCM.def @@ -642,6 +645,8 @@ VBoxC_SOURCES += \ RemoteUSBBackend.cpp endif +VBoxC_LDFLAGS.linux = -Wl,-rpath,$(VBOXDIR) + ifeq ($(KBUILD_TARGET),darwin) VBoxC_ORDERDEPS += $(PATH_VBoxC)/VBoxC.def VBoxC_CLEAN += $(PATH_VBoxC)/VBoxC.def diff --git a/src/VBox/Main/VMMDevInterface.cpp b/src/VBox/Main/VMMDevInterface.cpp index 99eb6ce..04e7d71 100644 --- a/src/VBox/Main/VMMDevInterface.cpp +++ b/src/VBox/Main/VMMDevInterface.cpp @@ -31,6 +31,7 @@ #include #include #include +#include #ifdef VBOX_WITH_HGCM #include "hgcm/HGCM.h" diff --git a/src/VBox/Main/xml/SettingsConverter.xsl b/src/VBox/Main/xml/SettingsConverter.xsl index e6a137c..e1fc71e 100644 --- a/src/VBox/Main/xml/SettingsConverter.xsl +++ b/src/VBox/Main/xml/SettingsConverter.xsl @@ -743,6 +743,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 7d3ede9..13f7563 100644 --- a/src/VBox/Main/xml/VirtualBox-settings-common.xsd +++ b/src/VBox/Main/xml/VirtualBox-settings-common.xsd @@ -165,6 +165,8 @@ + + diff --git a/src/VBox/Runtime/Makefile.kmk b/src/VBox/Runtime/Makefile.kmk index 727138b..2b59d26 100644 --- a/src/VBox/Runtime/Makefile.kmk +++ b/src/VBox/Runtime/Makefile.kmk @@ -1523,8 +1523,7 @@ ifeq ($(VBOX_LDR_FMT32),lx) RuntimeGC_SOURCES += os2/sys0.asm endif -if1of ($(KBUILD_TARGET), darwin solaris freebsd) -RuntimeGC_SOURCES += \ +LIBGCC_MATH_SOURCES := \ common/math/gcc/adddi3.c \ common/math/gcc/anddi3.c \ common/math/gcc/ashldi3.c \ @@ -1544,6 +1543,13 @@ RuntimeGC_SOURCES += \ common/math/gcc/udivdi3.c \ common/math/gcc/umoddi3.c \ common/math/gcc/xordi3.c + +if1of ($(KBUILD_TARGET), darwin solaris freebsd) +RuntimeGC_SOURCES += $(LIBGCC_MATH_SOURCES) +else +ifdef VBOX_WITHOUT_BIARCH +RuntimeGC_SOURCES += $(LIBGCC_MATH_SOURCES) +endif endif diff --git a/src/VBox/Runtime/r0drv/linux/the-linux-kernel.h b/src/VBox/Runtime/r0drv/linux/the-linux-kernel.h index 8d15808..1fc3781 100644 --- a/src/VBox/Runtime/r0drv/linux/the-linux-kernel.h +++ b/src/VBox/Runtime/r0drv/linux/the-linux-kernel.h @@ -286,11 +286,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 f1595c4..9f5ea66 100644 --- a/src/VBox/Runtime/r3/linux/semevent-linux.cpp +++ b/src/VBox/Runtime/r3/linux/semevent-linux.cpp @@ -95,7 +95,7 @@ struct RTSEMEVENTINTERNAL static long sys_futex(int32_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 2fcdee5..0f3dc73 100644 --- a/src/VBox/VMM/Makefile.kmk +++ b/src/VBox/VMM/Makefile.kmk @@ -205,7 +205,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 2ee2b97..07a1d60 100644 --- a/src/VBox/VMM/testcase/Makefile.kmk +++ b/src/VBox/VMM/testcase/Makefile.kmk @@ -25,7 +25,10 @@ include $(KBUILD_PATH)/subheader.kmk # # Target lists. # -PROGRAMS += tstVMStructSize tstVMStructGC tstAsmStructs tstAsmStructsGC tstVMM tstVMM-HwAccm tstGlobalConfig tstInstrEmul +PROGRAMS += tstVMM tstVMM-HwAccm tstGlobalConfig tstInstrEmul +ifndef VBOX_WITHOUT_BIARCH +PROGRAMS += tstVMStructSize tstVMStructGC tstAsmStructs tstAsmStructsGC +endif ifneq ($(KBUILD_TARGET),win) PROGRAMS += tstVMMFork endif @@ -51,9 +54,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 14c361b..e1a5183 100644 --- a/src/libs/xpcom18a4/Makefile.kmk +++ b/src/libs/xpcom18a4/Makefile.kmk @@ -682,7 +682,7 @@ else xpidl_CFLAGS = \ $(libIDL_config_cflags) xpidl_LDFLAGS = \ - $(libIDL_config_libs) + -Wl,--no-as-needed $(libIDL_config_libs) endif # @@ -1234,6 +1234,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 @@ -1314,7 +1315,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) \ $(TARGET_VBox-xpcom-ipcutils) \ $(TARGET_VBox-xpcom-ipcshared) \ $(TARGET_VBox-xpcom-ipcdlock) \ @@ -1340,6 +1343,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 diff --git a/src/recompiler/Makefile.kmk b/src/recompiler/Makefile.kmk index 989de60..8337d37 100644 --- a/src/recompiler/Makefile.kmk +++ b/src/recompiler/Makefile.kmk @@ -190,7 +190,7 @@ endif ## @todo clean up this, there are some duplicates with the template here I think. $(REM_MOD)_LDFLAGS.darwin = -install_name $(VBOX_DYLD_EXECUTABLE_PATH)/$(REM_MOD).dylib $(REM_MOD)_LDFLAGS.l4 = -T$(L4_LIBDIR)/../main_rel.ld -nostdlib -Wl,--no-undefined -$(REM_MOD)_LDFLAGS.linux = $(VBOX_LD_as_needed) +$(REM_MOD)_LDFLAGS.linux = $(VBOX_LD_as_needed) -Wl,-rpath,$(VBOXDIR) $(REM_MOD)_LDFLAGS.os2 = -Zomf $(REM_MOD)_LDFLAGS.debug = -g $(REM_MOD)_LDFLAGS.solaris = -mimpure-text