#!/usr/bin/env bash set -e interactive_pkgs=libsdl2-dev gem5=false qemu=true submodules='buildroot linux' y='' while getopts gqpt OPT; do case "$OPT" in g) gem5=true ;; q) qemu=false ;; p) submodules="$submodules parsec-benchmark/parsec-benchmark" ;; t) interactive_pkgs='' y='-y' ;; esac done shift $(($OPTIND - 1)) ## Submodules if "$qemu"; then submodules="$submodules qemu" fi if "$gem5"; then submodules="$submodules gem5/gem5" fi ( set -e # Shallow cloning saves a considerable amount of time, specially because of the linux kernel. # However, git submodules are buggy as usual, and this is the best way I've found to get it done: # https://stackoverflow.com/questions/2144406/git-shallow-submodules/47374702#47374702 # In particular: # - `shallow = true` on the submodule has no effect for the non default educational branches of our submodules # - QEMU's submodules point to commits that are neither under branches nor tags, and so `--shallow-submodules` fails git submodule update --depth 1 --jobs 4 --init -- $submodules if "$qemu"; then cd qemu git submodule update --init fi ) & wait $! || git submodule update --init -- $submodules ## apt-get pkgs="\ automake \ build-essential \ coreutils \ " if "$gem5"; then pkgs="$pkgs \ g++-6 \ gcc-6 \ gcc-aarch64-linux-gnu \ gcc-arm-linux-gnueabi \ libgoogle-perftools-dev \ protobuf-compiler \ " fi command -v apt-get >/dev/null 2>&1 || { cat <