[ create a new paste ] login | about

Link: http://codepad.org/xfmkIZDs    [ raw code | fork ]

Plain Text, pasted on Jul 1:
#!/bin/bash
# Debian package dependencies for the host
HOST_DEPENDENCIES="debootstrap qemu-user-static binfmt-support sbuild autoconf m4 git"

# Debian package dependencies for the chrooted environment
GUEST_DEPENDENCIES="gawk,m4,git,autotools-dev"

# Command used to build/run the tests
BUILD_COMMAND="./travis-ci.sh"

CHROOT_ARCH=$1

QEMU_ARCH=$2

MIRROR=http://ftp.debian.org/debian
DEB_VERSION=$3

CHROOT_DIR="/var/tmp/${CHROOT_ARCH}-chroot"

CUR_DIR=$(pwd)

function setup_chroot {

    # Host dependencies
    echo "Installing host dependencies"
    sudo apt-get install -y ${HOST_DEPENDENCIES}

    # Create chrooted environment
    sudo mkdir ${CHROOT_DIR}
    echo "Running debootstrap"
    sudo debootstrap --verbose --keep-debootstrap-dir --foreign --variant=buildd --no-check-gpg --include=${GUEST_DEPENDENCIES}\
        --arch=${CHROOT_ARCH} ${DEB_VERSION} ${CHROOT_DIR} ${MIRROR}

    echo "Finish debootstrap"
    sudo cp /usr/bin/qemu-${QEMU_ARCH}-static ${CHROOT_DIR}/usr/bin/

    echo "Running chroot second-stage"
    sudo chroot ${CHROOT_DIR} ./debootstrap/debootstrap --second-stage
    #sudo chroot ${CHROOT_DIR} /bin/pwd --second-stage
    sudo sbuild-createchroot --arch=${CHROOT_ARCH} --foreign --setup-only \
        ${DEB_VERSION} ${CHROOT_DIR} ${MIRROR}

    # Create build dir and copy travis build files to our chroot environment
    TARGET_BUILD_DIR=${CHROOT_DIR}/${CUR_DIR}/
    sudo mkdir -p $TARGET_BUILD_DIR
    sudo rsync -av ${CUR_DIR}/ $TARGET_BUILD_DIR

    echo "Bootstrapping project"  
    cd $TARGET_BUILD_DIR && ./bootstrap

    # Indicate chroot environment has been set up
    sudo touch ${CHROOT_DIR}/.chroot_is_done

    # Call ourselves again which will cause tests to run
    sudo chroot ${CHROOT_DIR} /bin/bash -c "cd ${CUR_DIR} && ./emulate.sh ${CHROOT_ARCH} ${QEMU_ARCH} chroot_done"
}

if [ "$#" -ne 3 ]; then
    echo "Usage: $0 [Chroot target architecture] [QEMU emulation architecture] [Debian version]"
    exit 1
fi

if [ "$3" = "chroot_done" ]; then
  # We are inside chroot
  echo "Running inside chrooted environment"

  echo "Environment: $(uname -a)"
  ${BUILD_COMMAND}

else
  
  if [ ! "$1" = "amd64" ]; then
    echo "Setting up chrooted ${CHROOT_ARCH} environment"
    setup_chroot
  fi
fi




Create a new paste based on this one


Comments: