It Works for Me! (tm)
An example building directory structure:
buildall.sh
builtlog.log
make
- any2dvd
- gimp-devel
- gmrun
version
- xfwm4-svn
- xfmedia-svn
- gaim-cvs
Script:
#!/bin/bash
#############################################################
REPO_PACKAGES=/path/to/built/packages
REPO_ARCHIVES=/path/to/archive
LOGFILE=builtlog.log #change this to whatever you want the logfile to be called
#############################################################
############ DO NOT EDIT BELOW THIS LINE! ###################
#############################################################
TOP_DIR=`pwd`
if [ -e "$LOGFILE" ]; then
echo "Previous log found, saving as ${LOGFILE}.old"
mv ${LOGFILE} ${LOGFILE}.old
fi
echo "Creating new log: ${LOGFILE}"
touch ${LOGFILE}
if [ ! -d "$REPO_ARCHIVES" ]; then
mkdir ${REPO_ARCHIVES}
fi
for i in `ls`; do
if [ -d "$i" ]; then
BUILD_COMMAND=`basename "$i"`pkg
HOLDING_DIR=`pwd`
cd $i
for p in `ls`; do
if [ -d "$p" ]; then
cd $p
START_TIME=`date +%Y %m-%d (%H:%M)`
echo " "
echo -e "33[0;36m ${START_TIME}:33[0m Starting build of ${p}..."
${BUILD_COMMAND} -w ${REPO_PACKAGES} >/dev/null 2>&1
if [ $? -eq 0 ]; then
END_TIME=`date +%Y %m-%d (%H:%M)`
echo -e "33[0;36m ${END_TIME}:33[1;32m ${p} built sucessfully."
echo "$p built sucessfully on ${END_TIME}" >>${TOP_DIR}/${LOGFILE}
else
END_TIME=`date +%Y %m-%d (%H:%M)`
echo -e "33[0;36m ${END_TIME}:33[1;31m failed."
echo "$p failed to build." >>${TOP_DIR}/${LOGFILE}
fi
#Move all but latest package to $REPO_ARCHIVE
mv `ls ${REPO_PACKAGES}/${p}*| sed '$d'` ${REPO_ARCHIVES} >/dev/null 2>&1
cd .. #Go back to parent directory
else
/bin/true
fi
done
cd ${HOLDING_DIR} #Start with the next batch
else
/bin/true
fi
done
cd ${TOP_DIR}
echo " "
echo -e "33[1;31m -------- Failed Packages: --------- 33[0m"
fgrep "failed" ${LOGFILE}
if [ $? -eq 1 ]; then
echo -e "33[1;32m No packages failed to build.33[0m"
fi
echo " "
echo "Check ${LOGFILE} for details."
exit 0