X-Git-Url: https://gerrit.opnfv.org/gerrit/gitweb?a=blobdiff_plain;f=src%2Fceph%2Fqa%2Fsetup-chroot.sh;fp=src%2Fceph%2Fqa%2Fsetup-chroot.sh;h=2e5ef46be79d43692e18d2f3533e1277d34f59f1;hb=812ff6ca9fcd3e629e49d4328905f33eee8ca3f5;hp=0000000000000000000000000000000000000000;hpb=15280273faafb77777eab341909a3f495cf248d9;p=stor4nfv.git diff --git a/src/ceph/qa/setup-chroot.sh b/src/ceph/qa/setup-chroot.sh new file mode 100755 index 0000000..2e5ef46 --- /dev/null +++ b/src/ceph/qa/setup-chroot.sh @@ -0,0 +1,65 @@ +#!/bin/bash + +die() { + echo ${@} + exit 1 +} + +usage() +{ + cat << EOF +$0: sets up a chroot environment for building the ceph server +usage: +-h Show this message + +-r [install_dir] location of the root filesystem to install to + example: -r /images/sepia/ + +-s [src_dir] location of the directory with the source code + example: -s ./src/ceph +EOF +} + +cleanup() { + umount -l "${INSTALL_DIR}/mnt/tmp" + umount -l "${INSTALL_DIR}/proc" + umount -l "${INSTALL_DIR}/sys" +} + +INSTALL_DIR= +SRC_DIR= +while getopts “hr:s:” OPTION; do + case $OPTION in + h) usage; exit 1 ;; + r) INSTALL_DIR=$OPTARG ;; + s) SRC_DIR=$OPTARG ;; + ?) usage; exit + ;; + esac +done + +[ $EUID -eq 0 ] || die "This script uses chroot, which requires root permissions." + +[ -d "${INSTALL_DIR}" ] || die "No such directory as '${INSTALL_DIR}'. \ +You must specify an install directory with -r" + +[ -d "${SRC_DIR}" ] || die "no such directory as '${SRC_DIR}'. \ +You must specify a source directory with -s" + +readlink -f ${SRC_DIR} || die "readlink failed on ${SRC_DIR}" +ABS_SRC_DIR=`readlink -f ${SRC_DIR}` + +trap cleanup INT TERM EXIT + +mount --bind "${ABS_SRC_DIR}" "${INSTALL_DIR}/mnt/tmp" || die "bind mount failed" +mount -t proc none "${INSTALL_DIR}/proc" || die "mounting proc failed" +mount -t sysfs none "${INSTALL_DIR}/sys" || die "mounting sys failed" + +echo "$0: starting chroot." +echo "cd /mnt/tmp before building" +echo +chroot ${INSTALL_DIR} env HOME=/mnt/tmp /bin/bash + +echo "$0: exiting chroot." + +exit 0