diff options
Diffstat (limited to 'tcwg-generate-source-cache.sh')
-rwxr-xr-x | tcwg-generate-source-cache.sh | 101 |
1 files changed, 101 insertions, 0 deletions
diff --git a/tcwg-generate-source-cache.sh b/tcwg-generate-source-cache.sh new file mode 100755 index 00000000..38a859ec --- /dev/null +++ b/tcwg-generate-source-cache.sh @@ -0,0 +1,101 @@ +#!/bin/bash + +set -e + +usage () +{ + cat <<EOF +Usage: $0 [-r] [-v] [-h] [machine1 machine2 ...] + This scripts generates and rsync's reference snapshots to machines + + -r: Only rsync snapshots-ref to machines + -v: Be verbose + -h: Print help +EOF +} + +generate=true +snapshots_dir=$HOME/snapshots-ref +verbose="set +x" + +while getopts "hrv" OPTION; do + case $OPTION in + h) + usage + exit 0 + ;; + r) + generate=false + ;; + v) verbose="set -x" ;; + esac +done + +$verbose + +shift $((OPTIND-1)) + +# Checkout into $snapshots_dir using ABE +generate_snapshots () +{ + local abe_temp="$(dirname "$0")/abe" + + rm -rf $abe_temp + git clone --branch stable --depth 1 https://git-us.linaro.org/toolchain/abe $abe_temp + + cd $abe_temp + ./configure --with-local-snapshots=${snapshots_dir}-new + + if [ -e $HOME/.aberc ]; then + echo "ERROR: $HOME/.aberc detected and it might override ABE's behavior" + exit 1 + fi + + targets=( + aarch64-linux-gnu + aarch64-none-elf + arm-linux-gnueabihf + arm-none-eabi + i686-linux-gnu + x86_64-linux-gnu + ) + + for t in "${targets[@]}"; do + for c in gcc5 gcc6 gcc7; do + ./abe.sh --target $t --extraconfigdir config/$c --checkout all + done + done +} + +update_git_repos () { + for repo in `ls ${snapshots_dir}-new/ | grep "\.git\$"`; do + ( + cd ${snapshots_dir}-new/$repo + # Update and prune local clone + git remote update -p + # Cleanup stale branches + git branch | grep -v \* | xargs -r git branch -D + ) + done +} + +if $generate; then + mkdir -p ${snapshots_dir}-new + + # Remove *.asc files to fix cached incorrect md5sum files + rm -f ${snapshots_dir}-new/*.asc + + update_git_repos + generate_snapshots + + # Remove checked-out branch directories + rm -rf ${snapshots_dir}-new/*~* + + # Remove md5sums to force ABE to fetch canonical version via http://. + rm -f ${snapshots_dir}-new/md5sums +fi + +update_git_repos + +echo "Snapshots status:" +du -hs $snapshots_dir-new/* |