setup.sh revision cf22150eaeeb72431bf1cf65c309a431454fb22b
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync# VirtualBox Validation Kit - TestBoxScript Service Setup on Unixy platforms.
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync# Copyright (C) 2006-2014 Oracle Corporation
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync# This file is part of VirtualBox Open Source Edition (OSE), as
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync# available from http://www.virtualbox.org. This file is free software;
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync# you can redistribute it and/or modify it under the terms of the GNU
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync# General Public License (GPL) as published by the Free Software
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync# Foundation, in version 2 as it comes in the "COPYING" file of the
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync# VirtualBox OSE distribution. VirtualBox OSE is distributed in the
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync# hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync# The contents of this file may alternatively be used under the terms
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync# of the Common Development and Distribution License Version 1.0
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync# (CDDL) only, as it comes in the "COPYING.CDDL" file of the
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync# VirtualBox OSE distribution, in which case the provisions of the
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync# CDDL are applicable instead of those of the GPL.
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync# You may elect to license modified versions of this file under the
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync# terms and conditions of either the GPL or the CDDL or both.
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync# !WARNING! Running the whole script in exit-on-failure mode.
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync# Note! Looking at the ash sources, it seems flags will be saved and restored
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync# when calling functions. That's comforting.
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync#set -x # debug only, disable!
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync# Get the host OS name, returning it in RETVAL.
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync# Get the host OS/CPU arch, returning it in RETVAL.
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync# Loads config values from the current installation.
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync# Installs, configures and starts the service.
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync# Enables (starts) the service.
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync# Disables (stops) the service.
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync# Adds the testbox user
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync# Prints a final message after successful script execution.
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync# This can contain additional instructions which needs to be carried out
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync# manually or similar.
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync# Checks the installation, verifying that files are there and scripts work fine.
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync test -r "${TESTBOXSCRIPT_DIR}/testboxscript/testboxscript.py"
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync test -r "${TESTBOXSCRIPT_DIR}/testboxscript/testboxscript_real.py"
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync test -r "${TESTBOXSCRIPT_DIR}/testboxscript/linux/testboxscript-service.sh" -o "${HOST_OS}" != "linux"
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync test -r "${TESTBOXSCRIPT_DIR}/${HOST_OS}/${HOST_ARCH}/TestBoxHelper"
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync "${TESTBOXSCRIPT_DIR}/testboxscript/testboxscript.py" \
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync "${TESTBOXSCRIPT_DIR}/testboxscript/testboxscript_real.py" \
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync "${TESTBOXSCRIPT_DIR}/${HOST_OS}/${HOST_ARCH}/TestBoxHelper"
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync "${TESTBOXSCRIPT_PYTHON}" "${TESTBOXSCRIPT_DIR}/testboxscript/testboxscript.py" --version > /dev/null
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync if [ $? -ne 2 ]; then
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync echo "$0: error: testboxscript.py didn't respons correctly to the --version option."
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync "${TESTBOXSCRIPT_PYTHON}" "${TESTBOXSCRIPT_DIR}/testboxscript/testboxscript_real.py" --version > /dev/null
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync if [ $? -ne 2 ]; then
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync echo "$0: error: testboxscript.py didn't respons correctly to the --version option."
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync# Check that sudo is installed.
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync# Check that sudo is installed.
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync# Checks if the testboxscript_user exists.
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync# hushes up the root login.
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync# Adds the testbox user and make sure it has unrestricted sudo access.
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync SUDOERS_LINE="${TESTBOXSCRIPT_USER} ALL=(ALL) NOPASSWD: ALL"
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync if ! ${MY_FGREP} -q "${SUDOERS_LINE}" ${MY_ETC_SUDOERS}; then
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync echo "# begin tinderboxscript setup.sh" >> ${MY_ETC_SUDOERS}
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync echo "# end tinderboxscript setup.sh" >> ${MY_ETC_SUDOERS}
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync# Test the user.
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync MY_TMP="`sudo -V 2>&1 | head -1 | sed -e 's/^.*version 1\.[6543210]\..*$/old/'`"
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync echo "Warning: If sudo starts complaining about not having a tty,"
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync echo " disable the requiretty option in /etc/sudoers."
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync echo "Warning: You've got an old sudo installed. If it starts"
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync echo " complaining about not having a tty, disable the"
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync# Grants the user write access to the testboxscript files so it can perform
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync chown -R "${TESTBOXSCRIPT_USER}" "${TESTBOXSCRIPT_DIR}"
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync# Check the proxy setup.
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync if [ -n "${http_proxy}" -o -n "${ftp_proxy}" ]; then
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync echo "Error: Env.vars. http_proxy/ftp_proxy without no_proxy is going to break upgrade among other things."
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync# Get our bearings and include the host specific code.
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync. "${DIR}/${HOST_OS}/setup-routines.sh"
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync# Load old config values (platform specific).
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync# Set defaults.
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncif [ -z "${TESTBOXSCRIPT_USER}" ]; then
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync# Parse arguments.
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync echo "TestBox Script setup utility."
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync echo "Usage: setup.sh [options]";
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync echo "Options:";
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync echo " Later...";
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync echo '$Revision$'
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync --test-manager) TESTBOXSCRIPT_TEST_MANAGER="$2"; shift;;
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync --scratch-root) TESTBOXSCRIPT_SCRATCH_ROOT="$2"; shift;;
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync --system-uuid) TESTBOXSCRIPT_SYSTEM_UUID="$2"; shift;;
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync --nested-paging) TESTBOXSCRIPT_NESTED_PAGING="yes";;
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync --no-nested-paging) TESTBOXSCRIPT_NESTED_PAGING="no";;
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync --builds-path) TESTBOXSCRIPT_BUILDS_PATH="$2"; shift;;
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync --builds-server-type) TESTBOXSCRIPT_BUILDS_TYPE="$2"; shift;;
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync --builds-server-name) TESTBOXSCRIPT_BUILDS_NAME="$2"; shift;;
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync --builds-server-share) TESTBOXSCRIPT_BUILDS_SHARE="$2"; shift;;
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync --builds-server-user) TESTBOXSCRIPT_BUILDS_USER="$2"; shift;;
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync --builds-server-passwd) TESTBOXSCRIPT_BUILDS_PASSWD="$2"; shift;;
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync --testrsrc-path) TESTBOXSCRIPT_TESTRSRC_PATH="$2"; shift;;
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync --testrsrc-server-type) TESTBOXSCRIPT_TESTRSRC_TYPE="$2"; shift;;
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync --testrsrc-server-name) TESTBOXSCRIPT_TESTRSRC_NAME="$2"; shift;;
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync --testrsrc-server-share) TESTBOXSCRIPT_TESTRSRC_SHARE="$2"; shift;;
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync --testrsrc-server-user) TESTBOXSCRIPT_TESTRSRC_USER="$2"; shift;;
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync --testrsrc-server-passwd) TESTBOXSCRIPT_TESTRSRC_PASSWD="$2"; shift;;
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync# Find usable python if not already specified.
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncif [ -z "${TESTBOXSCRIPT_PYTHON}" ]; then
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncimport sys;\
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncx = sys.version_info[0] == 2 and (sys.version_info[1] >= 6 or (sys.version_info[1] == 5 and sys.version_info[2] >= 1));\
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync for python in python2.7 python2.6 python2.5 python;
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync test -n "${TESTBOXSCRIPT_PYTHON}";
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync# Do the job
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync# That's all folks.