installer-utils.sh revision 551b0326a620dcb8f7d0b062cb25266dbfb23661
# Oracle VM VirtualBox
# VirtualBox installer shell routines
#
# Copyright (C) 2007-2011 Oracle Corporation
#
# This file is part of VirtualBox Open Source Edition (OSE), as
# available from http://www.virtualbox.org. This file is free software;
# 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 udev rule setup functions contain some aliases which are used for unit
# testing purposes. This function sets up the aliases to point to the real
# commands for "normal" use.
eval 'my_which() { which "$@" ; }'
eval 'my_test() { test "$@" ; }'
eval 'my_rm() { rm "$@" ; }'
}
# Needs to be done before the udev setup functions are called "normally" (i.e.
# not in a unit testing context). Will be overridden later in a unit test.
# Set up unit testing environment for the "install_udev" function below.
eval 'my_which() { echo test_udev ; }'
eval 'my_test() { true ; }'
eval 'my_rm() { case "$2" in "/etc/udev/rules.d/60-vboxdrv.rules") true ;; *) echo "rm: bad file name \"$2\"!"; false ;; esac ; }'
eval 'test_udev() { echo "$TEST_UDEV_VERSION" ; }'
}
# Clean up after unit testing install_udev for a given input
unset test_udev
}
VBOXDRV_GRP="$1"
VBOXDRV_MODE="$2"
echo "KERNEL==\"vboxdrv\", NAME=\"vboxdrv\", OWNER=\"root\", GROUP=\"$VBOXDRV_GRP\", MODE=\"$VBOXDRV_MODE\""
}
INSTALLATION_DIR="$1"
USB_GROUP="$2"
echo "SUBSYSTEM==\"usb_device\", ACTION==\"add\", RUN+=\"$INSTALLATION_DIR/VBoxCreateUSBNode.sh \$major \$minor \$attr{bDeviceClass}${USB_GROUP}\""
echo "SUBSYSTEM==\"usb\", ACTION==\"add\", ENV{DEVTYPE}==\"usb_device\", RUN+=\"$INSTALLATION_DIR/VBoxCreateUSBNode.sh \$major \$minor \$attr{bDeviceClass}${USB_GROUP}\""
echo "SUBSYSTEM==\"usb_device\", ACTION==\"remove\", RUN+=\"$INSTALLATION_DIR/VBoxCreateUSBNode.sh --remove \$major \$minor\""
echo "SUBSYSTEM==\"usb\", ACTION==\"remove\", ENV{DEVTYPE}==\"usb_device\", RUN+=\"$INSTALLATION_DIR/VBoxCreateUSBNode.sh --remove \$major \$minor\""
}
# install udev rule (disable with INSTALL_NO_UDEV=1 in /etc/default/virtualbox) for distribution packages
# Extra space!
"1") ;;
*)
udev_call=""
if [ $? -eq 0 ]; then
else
if [ $? -eq 0 ]; then
fi
fi
udev_fix=""
if [ "${udev_call}" != "" ]; then
udev_fix="1"
fi
udev_do_usb=""
udev_do_usb="1"
fi
fi
"1")
sed 's/\([^+=]*\)[+=]*\([^"]*"[^"]*"\)/\1=\2/g'
;;
*)
esac
;;
esac
fi
;;
esac
# Remove old udev description file
if my_test -f /etc/udev/rules.d/60-vboxdrv.rules; then
fi
}
# install_create_usb_node_for_sysfs contain some aliases for unit testing
# purposes. This function sets up the aliases to point to the real
# commands for "normal" use.
eval 'my_test() { test "$@" ; }'
eval 'my_cat() { cat "$@" ; }'
eval 'my_sh() { sh "$@" ; }'
}
# Assume we will be calling the function normally, not for unit testing
# setup_test_input_install_udev.
# Create a usb device node for a given sysfs path
fi
}
# install_device_node_setup contain some aliases for unit testing
# purposes. This function sets up the aliases to point to the real
# values for "normal" use.
udev_rule_file=/etc/udev/rules.d/10-vboxdrv.rules # Set this to /dev/null
# for unit testing
sysfs_usb_devices="/sys/bus/usb/devices/*"
eval 'do_install_udev() { install_udev "$@"; }'
eval 'do_install_create_usb_node_for_sysfs() { \
install_create_usb_node_for_sysfs "$@" ; }'
}
# Assume we will be calling the function normally, not for unit testing
# Set up unit testing environment for the "install_udev" function below.
eval 'do_install_udev() { test "$1" = "${test_drv_grp}" \
-a "$2" = "${test_drv_mode}" \
-a "$3" = "${test_inst_dir}" \
-a "$4" = "${test_usb_grp}" \
-a "$5" = "${INSTALL_NO_UDEV}" \
|| echo "do_install_udev: bad parameters: $@" >&2 ; }'
eval 'do_install_create_usb_node_for_sysfs() { \
test "$1" = "${sysfs_usb_devices}" \
-a "$2" = "${test_inst_dir}/VBoxCreateUSBNode.sh" \
-a "$3" = "${test_usb_grp}" \
|| echo "do_install_create_usb_node_for_sysfs: \
bad parameters: $@" >&2 ; }'
}
# Clean up unit testing environment for the "install_udev" function below.
# Nothing to do.
true
}
# Install udev rules and create device nodes for usb access
# nodes unless INSTALL_NO_GROUP=1 in
# /etc/default/virtualbox. Optional.
# install udev rule (disable with INSTALL_NO_UDEV=1 in
# /etc/default/virtualbox)
else
fi
# Build our device tree
for i in ${sysfs_usb_devices}; do # This line intentionally without quotes.
"${usb_group}"
done
}