#!/bin/bash # Build stable versions of all packages with current scripts. # This gets run in the aboriginal top directory. proc pull_repo { # Clone working copy rm -rf "packages/alt-$1-0.tar.bz2" build/packages/alt-$1 mkdir -p build/packages/alt-$1 pushd build/packages/alt-$1 && ln -s ../../../repos/$1/.git .git && git checkout -f master && git pull popd } # Expire snapshots directory setvar SNAPSHOTS = "$(find snapshots -mindepth 1 -maxdepth 1 -type d)" setvar COUNT = $(( $(echo "$SNAPSHOTS" | wc -l) - 30 )) if test $COUNT -gt 0 { # Delete appropriate number of oldest entries, then dead symlinks. rm -rf $( echo "$SNAPSHOTS" | sort | head -n $COUNT ) rm -rf $(find -L snapshots -type l) } echo === Begin cron job # Start a new snapshot export SNAPSHOT_DATE=$(date +"%Y-%m-%d") mkdir -p snapshots/$SNAPSHOT_DATE/base && rm snapshots/latest && ln -sf $SNAPSHOT_DATE snapshots/latest || exit 1 # build base repo proc build_snapshot { if test -z $USE_ALT { setvar SNAPNAME = 'base' } else { pull_repo $USE_ALT setvar SNAPNAME = "$USE_ALT" } echo === Building snapshot $SNAPNAME test $USE_ALT == linux && more/for-each-arch.sh 'more/migrate-kernel.sh $TARGET' # Update manifest ./download.sh # If it's unchanged, just hardlink the previous binaries instead of rebuilding if cmp -s snapshots/latest/$SNAPNAME/MANIFEST packages/MANIFEST { cp -rl snapshots/latest/$SNAPNAME/* snapshots/$SNAPSHOT_DATE/$SNAPNAME return } # Build it nice -n 20 more/buildall.sh rm build/simple-cross-compiler-*.tar.bz2 mv build/*.tar.bz2 build/logs build/MANIFEST snapshots/$SNAPSHOT_DATE/$SNAPNAME } build_snapshot base echo === Building QEMU # build qemu-git setvar QPATH = """" setvar CPUS = $(echo /sys/devices/system/cpu/cpu[0-9]* | wc -w) pull_repo qemu pushd build/packages/alt-qemu ./configure --disable-werror && nice -n 20 make -j $CPUS 2>&1 | tee build/logs/alt-qemu.txt && setvar QPATH = "$(for i in *-softmmu;do echo -n $(pwd)/$i:; done)" popd # test all with qemu-git test -z $QPATH" || PATH="$QPATH:$PATH"" more/for-each-target.sh \ 'more/smoketest.sh $TARGET | tee snapshots/$SNAPSHOT_DATE/base/logs/newqemu-smoketest-$TARGET.txt' #USE_ALT=linux build_snapshot #USE_ALT=uClibc build_snapshot #USE_ALT=busybox build_snapshot