diff options
Diffstat (limited to 'src/spdk/scripts/vagrant/update.sh')
-rwxr-xr-x | src/spdk/scripts/vagrant/update.sh | 98 |
1 files changed, 98 insertions, 0 deletions
diff --git a/src/spdk/scripts/vagrant/update.sh b/src/spdk/scripts/vagrant/update.sh new file mode 100755 index 000000000..87bb21c9d --- /dev/null +++ b/src/spdk/scripts/vagrant/update.sh @@ -0,0 +1,98 @@ +#!/usr/bin/env bash + +if [ ! "$USER" = "root" ]; then + echo + echo Error: must be run as root! + echo + exit 1 +fi + +set -e + +DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +SPDK_DIR="$(cd "${DIR}/../../" && pwd)" +echo "SPDK_DIR = $SPDK_DIR" + +# Bug fix for vagrant rsync problem +if [ -d /home/vagrant/spdk_repo ]; then + echo "Fixing permissions on /home/vagrant/spdk_repo" + chown vagrant /home/vagrant/spdk_repo + chgrp vagrant /home/vagrant/spdk_repo +fi + +# Setup for run-autorun.sh +if [ ! -f /home/vagrant/autorun-spdk.conf ]; then + echo "Copying scripts/vagrant/autorun-spdk.conf to /home/vagrant" + cp ${SPDK_DIR}/scripts/vagrant/autorun-spdk.conf /home/vagrant + chown vagrant /home/vagrant/autorun-spdk.conf + chgrp vagrant /home/vagrant/autorun-spdk.conf +fi + +SYSTEM=$(uname -s) + +if [ "$SYSTEM" = "FreeBSD" ]; then + # Do initial setup for the system + pkg upgrade -f + ${SPDK_DIR}/scripts/pkgdep.sh --all + if [ -d /usr/src/.git ]; then + echo + echo "/usr/src/ is a git repository" + echo "consider \"cd /usr/src/; git pull\" to update" + echo + else + git clone --depth 10 -b release/11.1.0 https://github.com/freebsd/freebsd.git /usr/src + fi +else + + # Make sure that we get the hugepages we need on provision boot + # Note: The package install should take care of this at the end + # But sometimes after all the work of provisioning, we can't + # get the requested number of hugepages without rebooting. + # So do it here just in case + sysctl -w vm.nr_hugepages=1024 + HUGEPAGES=$(sysctl -n vm.nr_hugepages) + if [ $HUGEPAGES != 1024 ]; then + echo "Warning: Unable to get 1024 hugepages, only got $HUGEPAGES" + echo "Warning: Adjusting HUGEMEM in /home/vagrant/autorun-spdk.conf" + sed "s/HUGEMEM=.*$/HUGEMEM=${HUGEPAGES}/g" /home/vagrant/autorun-spdk.conf > /home/vagrant/foo.conf + mv -f /home/vagrant/foo.conf /home/vagrant/autorun-spdk.conf + fi + + # Figure out what system we are running on + if [ -f /etc/lsb-release ]; then + . /etc/lsb-release + elif [ -f /etc/redhat-release ]; then + yum update -y + yum install -y redhat-lsb + DISTRIB_ID=$(lsb_release -si) + DISTRIB_RELEASE=$(lsb_release -sr) + DISTRIB_CODENAME=$(lsb_release -sc) + DISTRIB_DESCRIPTION=$(lsb_release -sd) + fi + + # Do initial setup for the system + if [ "$DISTRIB_ID" == "Ubuntu" ]; then + set -xv + export DEBIAN_PRIORITY=critical + export DEBIAN_FRONTEND=noninteractive + export DEBCONF_NONINTERACTIVE_SEEN=true + # Standard update + upgrade dance + apt-get update --assume-yes --no-install-suggests --no-install-recommends -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" + apt-get upgrade --assume-yes --no-install-suggests --no-install-recommends -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" + ${SPDK_DIR}/scripts/pkgdep.sh --all + apt-get clean + elif [ "$DISTRIB_ID" == "CentOS" ]; then + # Standard update + upgrade dance + yum check-update + yum update -y + ${SPDK_DIR}/scripts/pkgdep.sh --all + yum clean all + elif [ "$DISTRIB_ID" == "Fedora" ]; then + yum check-update + yum update -y + "$SPDK_DIR"/scripts/pkgdep.sh --all + sudo -u vagrant "$SPDK_DIR"/test/common/config/vm_setup.sh -i + yum clean all + fi + cat /dev/null > ~/.bash_history && history -c +fi |