diff -r 820b22e13ff1 -r 39c28ec933dd sbsv2/raptor/bin/osbuild.sh --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/sbsv2/raptor/bin/osbuild.sh Mon May 10 19:54:49 2010 +0100 @@ -0,0 +1,264 @@ +#!/bin/sh + +# Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies). +# All rights reserved. +# This component and the accompanying materials are made available +# under the terms of the License "Eclipse Public License v1.0" +# which accompanies this distribution, and is available +# at the URL "http://www.eclipse.org/legal/epl-v10.html". +# +# Initial Contributors: +# Nokia Corporation - initial contribution. +# +# Contributors: +# +# Description: +# Build automation for Symbian OS with Raptor +# Author: Timothy N Murphy +# +# + +# Default settings. You may override these by specifying a setup script +# as the first commandline argument +# +H=$HOME +export H +export EPOCROOT="$H/baselineos" +export LOGBASEDIR=~/public_html/buildlogs +export BUILDROOT="$H/baselineos" +export SOURCEROOT="$H/baselineos/fsupdate" +export SYSDEF="$H/baselineos/system_definition_fsupdate.xml" +export PREEXPORTSYSDEF="$SBS_HOME/test/envelope/preexport.xml" +export PLATFORMS="-c armv5" +export PARALLEL=46 +export SYNCSBSSOURCE="" +export UNSPLITDIRS="$SBS_HOME/unsplitdirs.py" + +# Do we want to attempt to build a ROM? +export DOROMBUILD="" +export ROMFILLIN_EPOCROOT=$BUILDROOT/rom_fillin +# We need to specify the OBY file (must be generated on windows) +export ROMOBYFILE="$BUILDROOT/h4hrp_001.techview.oby" + +# Do you have server that runs evalid automatically? +export SENDTOEVALIDSERVER="" +# The following should be mounted: +export EVALIDSERVERMOUNT="/mnt/evalidserver" +export USERBUILDID="" + + +# Allow overrides to this default config +if [ ! -z $1 ]; then + if [ -f "$1" ]; then + . $1 + else + echo "You must supply a build type as the first parameter - this should be a setup script" + exit 1 + fi +fi + + +genstats() { +if [ "$1.stats" -ot "$1.log" ]; then +python "$SBS_HOME/bin/buildstats.py" "$1.log" > "$1.stats" && +#python "$SBS_HOME/bin/failedstats.py" -m "$1.log" > "$1.failed"; +( + cd $EPOCROOT/epoc32 && find "release" > "$1.release_files" && find "build" > "$1.build_files" && find include > "$1.include_files" +) +fi; +} + +cd $BUILDROOT + + +# Don't edit the rest: +################################################### +export KEY=`date +%d_%m_%y` +export DAILYDIR="$LOGBASEDIR/$KEY" + +export BUILDNAME="`basename \"$SYSDEF\" | sed 's#\.[^.][^.]*$##'`" +if [ ! -z "$USERBUILDID" ]; then + BUILDNAME="$USERBUILDID-$BUILDNAME" +fi +export LOGNAME="${BUILDNAME}_${KEY}" + +for BUILDNUM in {1..50}; do + if [ ! -d "$DAILYDIR/$BUILDNUM" ]; then + break + fi + if [ -z "`echo $DAILYDIR/$BUILDNUM/*_BUILDNUM.log*`" ]; then + break + fi +done + +OUTDIR="$DAILYDIR/$BUILDNUM" +export TESTLOG="$OUTDIR/test.log" + +# make the day's directory +mkdir -p "$OUTDIR" + +echo "testrun: $TESTLOG, build $BUILDNUM of the day:" +echo '' > "$TESTLOG" + +echo "Parallel: $PARALLEL" +( +echo "" +echo " " +echo " $DAILYDIR/$BUILDNUM/${LOGNAME}_$BUILDNUM.log" +MAKEFILE=$EPOCROOT/epoc32/build/Makefile +echo "" + +TIMELOG="$OUTDIR/${LOGNAME}_$BUILDNUM.time" + +echo " "$OUTDIR/unzip" && +chmod -R u+rw "$EPOCROOT/epoc32" && +echo "unzipped skeleton epoc32 tree" +) + + +# (re)Initialise the cluster if required. +( +if [ ! -z "$PARALLEL" ]; then + echo "Setting up cluster" + echo "Parallel: $PARALLEL" + set -x + echo -e "halt\n" | pvm >/dev/null + echo -e "quit\n" | pvm $BUILDROOT/pvmhosts.$PARALLEL >/dev/null + set +x +else + echo "Parallel: 0 - no cluster setup" + set -x + echo -e "halt\n" | pvm >/dev/null + set +x +fi +) + + +set +x +echo "Prepping makefiles" +( + echo "\n" + export TIMEFORMAT="\n" + time $SBS_HOME/bin/sbs -d -k -s "$SYSDEF" -a "$SOURCEROOT" $PLATFORMS -n > $OUTDIR/${LOGNAME}_$BUILDNUM.meta 2>&1 + #time cp performance_Makefile $MAKEFILE +) > "$TIMELOG" 2>&1 +echo "Running Make" +( + # The build process + export TIMEFORMAT="\n" + + time /opt/symbian/make-pvm-381/pvmgmake -j$PARALLEL -k -f $MAKEFILE > "$OUTDIR/${LOGNAME}_$BUILDNUM.log" 2>&1 + touch "$SIGNALTOSTOPFILE" + echo "\n" +) >> "$TIMELOG" 2>&1 & +( + # Concurrent process to continuously update statistics + echo "" + + while [ 1 -eq 1 ]; do + sleep 20 + echo -n "." + + if [ -e "$SIGNALTOSTOPFILE" ]; then + rm -f "$SIGNALTOSTOPFILE" + break + fi + done + echo "" +) +#set +x +#genstats "$OUTDIR/${LOGNAME}_$BUILDNUM" +( + echo "UNSPLITTING DIRECTORIES" + set -x + cd $EPOCROOT/epoc32 && + python $UNSPLITDIRS -l . && + set +x + +) && ( + if [ ! -z "$DOROMBUILD" ]; then + echo "Building ROM" + set -x + cd $EPOCROOT && + unzip -o $BUILDROOT/data.zip >/dev/null && + python $BUILDROOT/oby_tolinux.py < "$ROMOBYFILE" >PROCESSED_H4HRP_001.TECHVIEW.OBY + $EPOCROOT/epoc32/tools/rombuild -type-safe-link PROCESSED_H4HRP_001.TECHVIEW.OBY + cp + set +x + else + echo "NOT Building ROM" + fi +) + +( + if [ ! -z "$SENDTOEVALIDSERVER" ]; then + echo "Sending epoc32/release and epoc32/data to the evalidserver" + set -x + ZIPFILE="$DAILYDIR/$BUILDNUM/${LOGNAME}_$BUILDNUM.zip" + cd $EPOCROOT && + find epoc32/release epoc32/data | zip "$ZIPFILE" -@ >/dev/null 2>&1 && + cp "$ZIPFILE" /mnt/evalidserver + set +x + else + echo "NOT sending epoc32/release and epoc32/data to the evalidserver" + fi +) + +# Zip the logs - note that test.log should not be zipped since the output from the zip goes into it +( + echo "Zipping logs..." + set -x + cd $OUTDIR && + zip ${LOGNAME}_${BUILDNUM}_logs.zip *.time *.meta *.log *.preexport -x test.log + set +x +) + + +echo " ]]>" +echo "" +) >> "$TESTLOG" 2>&1 + +BUILDNUM=$[ $BUILDNUM + 1 ] +# use a new output directory +echo -e "" >> "$TESTLOG" +echo "" >> "$TESTLOG"