#!/bin/bash -e

TARGET=${1:-core-image-sato}
CPUS=${2:-16}

disk_samples () {
    grep $1 $2 | sed -e 's/.*: //' | sort -n
}

run () {
    setup=$1
    echo $setup
    shift
    rm -rf tmp
    mkdir -p tmp
    cat >conf/auto.conf <<EOF
BB_NO_NETWORK = "1"
SSTATE_DIR = "\${TMPDIR}/sstate-cache"
EOF
    while [ "$1" ]; do
        echo "$1" >>conf/auto.conf
        shift
    done
    volume=$(df --output=source . | tail -1)
    before=$(df --output=used -B1024 . | tail -1)
    /usr/bin/time -f "elapsed: %E" sh -c "bitbake $TARGET >/dev/null 2>&1"
    after=$(df --output=used -B1024 . | tail -1)
    echo "final disk usage: $(( ($after - $before) / 1024))MiB"
    rm -rf result-$setup
    mkdir -p result-$setup
    cp -a tmp/buildstats/* result-$setup/buildstats
    cp conf/auto.conf tmp/log/cooker/qemux86/console-latest.log result-$setup/
    log=result-$setup/buildstats/monitor_disk.log
    echo "max disk usage: $(( ( $(disk_samples $volume $log | tail -1) - $(disk_samples $volume $log | head -1) ) / 1024 / 1024 ))MiB"
    echo
}

#run base "BB_NUMBER_THREADS = '$CPUS'"
#run original-rmwork "BB_NUMBER_THREADS = '$CPUS'" "INHERIT += 'rm_work_original'" "BB_SCHEDULER = 'completion'"
#run new-rmwork "BB_NUMBER_THREADS = '$CPUS'" "INHERIT += 'rm_work'" "BB_SCHEDULER = 'completion'"
#run new-rmwork-new-scheduler "BB_NUMBER_THREADS = '$CPUS'" "INHERIT += 'rm_work'" "BB_SCHEDULER = 'rmwork'"
run new-rmwork-new-scheduler-additional-tasks "BB_NUMBER_THREADS = '$CPUS'" "BB_NUMBER_ADDITIONAL_THREADS = '$CPUS'" "INHERIT += 'rm_work'" "BB_SCHEDULER = 'rmwork'"
