#!/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 setglobal SNAPSHOTS = $[find snapshots -mindepth 1 -maxdepth 1 -type d] setglobal COUNT = $shExpr(' $(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 { setglobal SNAPNAME = 'base' } else { pull_repo $USE_ALT setglobal 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 setglobal QPATH = ''"" setglobal 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 && setglobal QPATH = $[for i in [*-softmmu]{ echo -n $[pwd]/$i:; }] popd # test all with qemu-git test -z $QPATH || env 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