From 057fbfe5b8aa991e46375f69ea4fea3fecac3fa6 Mon Sep 17 00:00:00 2001 From: Hans-Christoph Steiner Date: Sun, 6 Apr 2008 04:08:54 +0000 Subject: [PATCH] first stab at scripts to actually run the build --- build/auto-build/arduino-trunk-auto-build | 109 ++++++++++++++++++++++ build/auto-build/run-auto-builds | 50 ++++++++++ 2 files changed, 159 insertions(+) create mode 100755 build/auto-build/arduino-trunk-auto-build create mode 100755 build/auto-build/run-auto-builds diff --git a/build/auto-build/arduino-trunk-auto-build b/build/auto-build/arduino-trunk-auto-build new file mode 100755 index 000000000..bbc1b1c53 --- /dev/null +++ b/build/auto-build/arduino-trunk-auto-build @@ -0,0 +1,109 @@ +#!/bin/sh +# this script is the first attempt to have an automated updater and builder + +# the source dir where this script is +SCRIPT_DIR=`echo $0 | sed 's|\(.*\)/.*$|\1|'` +. $SCRIPT_DIR/auto-build-common + +# the name of this script +SCRIPT=`echo $0| sed 's|.*/\(.*\)|\1|g'` + +BUILD_DIR=. +case $SYSTEM in + linux) + BUILD_DIR=linux_make + echo "Configuring to use $BUILD_DIR on GNU/Linux" + ;; + darwin) + BUILD_DIR=darwin_app + echo "Configuring to use $BUILD_DIR on Darwin/Mac OS X" + ;; + mingw*) + BUILD_DIR=win32_inno + echo "Configuring to use $BUILD_DIR on MinGW/Windows" + ;; + cygwin*) + BUILD_DIR=win32_inno + echo "Configuring to use $BUILD_DIR on Cygwin/Windows" + ;; + *) + echo "ERROR: Platform $SYSTEM not supported!" + exit + ;; +esac + + +# convert into absolute path +cd `echo $0 | sed 's|\(.*\)/.*$|\1|'`/../.. +auto_build_root_dir=`pwd` +echo "root: $auto_build_root_dir" + +# let rsync handle the cleanup with --delete +case $SYSTEM in + mingw*) + /c/cygwin/bin/sh --login -c \ + "rsync -a --delete rsync://128.238.56.50/arduino/arduino-trunk/ ${auto_build_root_dir}/" + ;; + *) + rsync -a --delete rsync://128.238.56.50/arduino/arduino-trunk/ ${auto_build_root_dir}/ + ;; +esac + +cd "${auto_build_root_dir}/build/$BUILD_DIR" +./dist.sh + +exit + +upload_build () +{ + platform_folder=$1 + build_folder=$2 + archive_format=$3 + + archive="${auto_build_root_dir}/packages/${platform_folder}/${build_folder}/Pd*.${archive_format}" + + echo "upload specs $1 $2 $3" + echo "Uploading $archive" + upload_filename=`ls -1 ${archive} | sed "s|.*/\(.*\)\.${archive_format}|\1-${HOSTNAME}.${archive_format}|"` + case $SYSTEM in + mingw*) + if [ -e ${archive} ]; then + /c/cygwin/bin/sh --login -c \ + "rsync -a ${archive} rsync://128.238.56.50/arduinoupload/${DATE}/${upload_filename}" && \ + md5sum ${archive} > ${archive}.md5 && \ + /c/cygwin/bin/sh --login -c \ + "rsync -a ${archive}.md5 rsync://128.238.56.50/arduinoupload/${DATE}/${upload_filename}.md5" && \ + echo SUCCESS + fi + ;; + *) + if [ -e ${archive} ]; then + rsync -a ${archive} rsync://128.238.56.50/arduinoupload/${DATE}/${upload_filename} && \ + md5sum ${archive} > ${archive}.md5 && \ + rsync -a ${archive}.md5 rsync://128.238.56.50/arduinoupload/${DATE}/${upload_filename}.md5 && \ + echo SUCCESS + fi + ;; + esac +} + + +case $SYSTEM in + linux) + if [ -x /usr/bin/dpkg-deb ]; then + upload_build linux_make . deb + else + upload_build linux_make build tar.bz2 + fi + ;; + darwin) + upload_build darwin_app . dmg + ;; + mingw*) + upload_build win32_inno Output exe + ;; + cygwin*) + upload_build win32_inno Output exe + ;; +esac + diff --git a/build/auto-build/run-auto-builds b/build/auto-build/run-auto-builds new file mode 100755 index 000000000..3f50a9769 --- /dev/null +++ b/build/auto-build/run-auto-builds @@ -0,0 +1,50 @@ +#!/bin/sh + +cd / + +# On Mac OS X, there are some handy things in Fink, but don't override the +# built-in tools +PATH="${PATH}:/sw/bin:/sw/sbin" +export PATH + +# the source dir where this script is +SCRIPT_DIR=`echo $0 | sed 's|\(.*\)/.*$|\1|'` +. $SCRIPT_DIR/auto-build-common + +# the name of this script +SCRIPT=`echo $0| sed 's|.*/\(.*\)|\1|g'` + +run_build_script () +{ + distro=$1 + + LOGFILE=/home/arduino/logs/${DATE}_${TIME}_${SYSTEM}_${HOSTNAME}_${distro}_${SCRIPT}.txt + touch ${LOGFILE} + + sh /home/arduino/auto-build/${distro}/build/auto-build/${distro}-auto-build >> $LOGFILE 2>&1 + + case $SYSTEM in + mingw*) + /c/cygwin/bin/sh --login -c \ + "rsync -a ${LOGFILE} rsync://128.238.56.50/arduinoupload/${DATE}/logs/" + ;; + *) + rsync -a ${LOGFILE} rsync://128.238.56.50/arduinoupload/${DATE}/logs/ + ;; + esac + +# send status report if something failed + completion_test=`tail -1 ${LOGFILE}` + if [ "x${completion_test}" != "xSUCCESS" ]; then + if [ "x${RECIPIENT}" != "x" ]; then + SUBJECT="autobuild: $distro $HOSTNAME $DATE $TIME" + tail -20 ${LOGFILE} | mail -s "${SUBJECT}" ${RECIPIENT} + fi + fi +} + +for dir in /home/arduino/auto-build/*; do + dirname=`echo $dir | sed 's|.*/\(.*\)|\1|'` + test -e $dir/build/auto-build/${dirname}-auto-build && \ + run_build_script $dirname +done