a sample of dailybuild.sh

#!/bin/sh

# some components need PATH set (设置环境变量)
export PATH=$PATH:/opt/compiler/gcc/arm-linux-gnu/bin
export BUILDHOME=`pwd`
export LOGFILE=$BUILDHOME”/dailybuild.log”

# remove old build (清除旧的版本)
rm -rf dailybuild dailybuild.log

# start daily building (开始每日构建)
echo “========> daily build started …” > $LOGFILE
echo “========> “`date` >> $LOGFILE

# check out sources (检出最新版本)
echo “========> check out \”/\”" >> $LOGFILE
svn co -N –username dailybuild –password 123456 svn://svnserver/ dailybuild 1>>$LOGFILE 2>&1
if [ $? -ne 0 ]; then
echo “========> failed” >> $LOGFILE
exit 1
fi
echo “========> success” >> $LOGFILE

cd dailybuild
echo “========> check out \”/libs\”" >> $LOGFILE
svn update -N –username dailybuild –password 123456 libs 1>>$LOGFILE 2>&1
if [ $? -ne 0 ]; then
echo “========> failed” >> $LOGFILE
exit 1
fi
echo “========> success” >> $LOGFILE
echo “========> check out \”/libs/XXXXs090828\”" >> $LOGFILE
svn update –username dailybuild –password 123456 libs/XXXXs090828 1>>$LOGFILE 2>&1
if [ $? -ne 0 ]; then
echo “========> failed” >> $LOGFILE
exit 1
fi
echo “========> success” >> $LOGFILE
echo “========> check out \”/libs/ezxml\”" >> $LOGFILE
svn update –username dailybuild –password 123456 libs/ezxml 1>>$LOGFILE 2>&1
if [ $? -ne 0 ]; then
echo “========> failed” >> $LOGFILE
exit 1
fi
echo “========> success” >> $LOGFILE
echo “========> check out \”/libs/openssl-0.9.8k\”" >> $LOGFILE
svn update –username dailybuild –password 123456 libs/openssl-0.9.8k 1>>$LOGFILE 2>&1
if [ $? -ne 0 ]; then
echo “========> failed” >> $LOGFILE
exit 1
fi
echo “========> success” >> $LOGFILE
echo “========> check out \”/uai\”" >> $LOGFILE
svn update –username dailybuild –password 123456 uai 1>>$LOGFILE 2>&1
if [ $? -ne 0 ]; then
echo “========> failed” >> $LOGFILE
exit 1
fi
echo “========> success” >> $LOGFILE
echo “========> check out \”/smi\”" >> $LOGFILE
svn update –username dailybuild –password 123456 smi 1>>$LOGFILE 2>&1
if [ $? -ne 0 ]; then
echo “========> failed” >> $LOGFILE
exit 1
fi
echo “========> success” >> $LOGFILE
echo “========> check out \”/YYYY\”" >> $LOGFILE
svn update –username dailybuild –password 123456 YYYY 1>>$LOGFILE 2>&1
if [ $? -ne 0 ]; then
echo “========> failed” >> $LOGFILE
exit 1
fi
echo “========> success” >> $LOGFILE

# create runtime directory (创建库编译目录)
mkdir runtime
mkdir runtime/lib
mkdir runtime/include
mkdir runtime/include/XXXXs
mkdir runtime/include/smi
mkdir runtime/include/uai
mkdir runtime/include/ezxml
mkdir runtime/include/openssl
# FIXME: XXXXs header file should not directly use paxapi header defines
#mkdir runtime/include/paxapi

# build&install ezxml (构建相关库)
echo “========> build&install ezxml” >> $LOGFILE
cd $BUILDHOME”/dailybuild”
cd libs/ezxml
make 1>>$LOGFILE 2>&1
if [ $? -ne 0 ]; then
echo “========> failed” >> $LOGFILE
exit 1
fi
cp libezxml.so ../../runtime/lib
cp ezxml.h ../../runtime/include/ezxml
echo “========> success” >> $LOGFILE

# build&install openssl(构建相关库)
echo “========> build&install openssl” >> $LOGFILE
cd $BUILDHOME”/dailybuild”
cd libs/openssl-0.9.8k
./Configure linux-elf-arm shared 1>>$LOGFILE 2>&1
if [ $? -ne 0 ]; then
echo “========> failed” >> $LOGFILE
exit 1
fi
make 1>>$LOGFILE 2>&1
if [ $? -ne 0 ]; then
echo “========> failed” >> $LOGFILE
exit 1
fi
cp -a libcrypto.so* ../../runtime/lib
cp -a libssl.so* ../../runtime/lib
cp include/openssl/*.h ../../runtime/include/openssl
echo “========> success” >> $LOGFILE

# build&install XXXXs (构建相关库)
echo “========> build&install XXXXs090828″ >> $LOGFILE
cd $BUILDHOME”/dailybuild”
cd libs/XXXXs090828/src
make 1>>$LOGFILE 2>&1
if [ $? -ne 0 ]; then
echo “========> failed” >> $LOGFILE
exit 1
fi
cp libXXXXs.so ../../../runtime/lib
cd ../include
cp *.h ../../../runtime/include/XXXXs
cd ../linux/lib
cp *.so ../../../../runtime/lib
# FIXME: XXXXs header file should not directly use paxapi header defines
#cd ../../lib/linux
#cp *.h ../../../../runtime/include/paxapi
echo “========> success” >> $LOGFILE

# build&install smi/uai (构建相关库)
echo “========> build&install smi/uai” >> $LOGFILE
cd $BUILDHOME”/dailybuild”
cp smi/include/smi.h runtime/include/smi
cp uai/buai/include/buai.h runtime/include/uai
cp uai/fuai/include/fuai.h runtime/include/uai
cp uai/suai/include/suai.h runtime/include/uai
cd smi/src
make 1>>$LOGFILE 2>&1
if [ $? -ne 0 ]; then
echo “========> failed” >> $LOGFILE
exit 1
fi
cp libsmi.so ../../runtime/lib
cd $BUILDHOME”/dailybuild”
cd uai
make 1>>$LOGFILE 2>&1
if [ $? -ne 0 ]; then
echo “========> failed” >> $LOGFILE
exit 1
fi
cp -a lib/* ../runtime/lib
echo “========> success” >> $LOGFILE

# build&install browser (构建可执行文件)
echo “========> build&install browser” >> $LOGFILE
cd $BUILDHOME”/dailybuild”
cd YYYY/working
make 1>>$LOGFILE 2>&1
if [ $? -ne 0 ]; then
echo “========> failed” >> $LOGFILE
exit 1
fi
echo “========> success” >> $LOGFILE

# make tar.bz2 ball for this release (压缩相关文件)
echo “========> making tar.bz2 ball” >> $LOGFILE
cd $BUILDHOME/dailybuild
cp -a YYYY/working/browser_D .
cp -a YYYY/working/browser_T .
export VERSION=`date +%g%m%d%H%M`
tar jcf ZZZZ_build$VERSION.tar.bz2 runtime browser_D browser_T
cp ZZZZ_build$VERSION.tar.bz2 /opt/share/dailybuild

echo “========> daily build succeded” >> $LOGFILE
echo “========> “`date` >> $LOGFILE

Tags: ,

Leave a Reply

Spam Protection by WP-SpamFree