Make it possible to skip steps of the build by specifying so in the

environment variable "NIGHTLY_SKIP_STEP", making it easier to debug
problems in the build.
This commit is contained in:
Marc Olzheim 2004-06-20 16:36:51 +00:00
parent 58c93d2557
commit 7877507f25

View file

@ -2,6 +2,19 @@
#
# Blame it on marcolz
#
# Skip certain parts of this script by exporting the variable
# "NIGHTLY_SKIP_STEP" containing the following possible substrings,
# preventing the named behaviour:
#
# REDIRECT - Redirect all output to a logfile
# CHECKOUT - Fill the sandbox with a fresh cvs checkout
# BUILD - Build everything
# GENERATE - Generate a new world
# SERVERSTART - Start the server
# TESTSCRIPT - Run the testscript
# SERVERSTOP - Stop the server if it was started by this script
# CLEANUP - Remove the contents of the sandbox
#
# For some reason, solaris sh exits as soon as both stderr and stdout
# are redirected to file at the exec, so if we run on solaris, use ksh
@ -56,10 +69,24 @@ WORKDIR="${EMPTARGET}.${ARCH}"
[ -n "${EXTRASUFFIX}" ] && WORKDIR="${WORKDIR}.${EXTRASUFFIX}"
LOGFILE="${LOGDIR}/${WORKDIR}.${STAMP}"
#
# START REDIRECT
#
case "${NIGHTLY_SKIP_STEP}"
in
*REDIRECT*) ;;
*)
# Log everything
exec > "${LOGFILE}"
exec 2>&1
;;
esac
#
# END REDIRECT
#
case "${BOXDIR}"
in
/*)
@ -74,8 +101,15 @@ cd "${BOXDIR}" || err "Could not chdir to ${BOXDIR}"
echo "Nightly build starting at `date`"
# Make sandbox
#
# START CHECKOUT
#
case "${NIGHTLY_SKIP_STEP}"
in
*CHECKOUT*) ;;
*)
# Make sandbox
mkdir "${WORKDIR}" || warn "Could not create ${BOXDIR}/${WORKDIR}"
cd "${WORKDIR}" || err "Could not cd to ${BOXDIR}/${WORKDIR}"
@ -91,6 +125,20 @@ done
echo "Done (CVS)."
echo ""
;;
esac
#
# END CHECKOUT
#
#
# START PATCH
#
case "${NIGHTLY_SKIP_STEP}"
in
*PATCH*) ;;
*)
echo "Applying global patches from patches/All:"
for i in "${SCRIPTDIR}/patches/All"/*.patch
do
@ -147,6 +195,20 @@ sed -e "s,^USERNAME = .*$,USERNAME = ${EMPLOGIN}," \
echo "Done (build.conf)."
echo ""
;;
esac
#
# END PATCH
#
#
# START BUILD
#
case "${NIGHTLY_SKIP_STEP}"
in
*BUILD*) ;;
*)
# TODO: this should be fixed another way...
echo "Generating empty Makedepends."
touch src/client/Makedepend src/doconfig/Makedepend src/lib/as/Makedepend src/lib/commands/Makedepend src/lib/common/Makedepend src/lib/empthread/Makedepend src/lib/gen/Makedepend src/lib/global/Makedepend src/lib/lwp/Makedepend src/lib/player/Makedepend src/lib/subs/Makedepend src/lib/update/Makedepend src/server/Makedepend src/util/Makedepend || err "Could tot touch Makedepends"
@ -162,9 +224,23 @@ fi
echo "Done (make)."
echo ""
;;
esac
#
# END BUILD
#
# Try to run startup utilities
for onetime in 1
do
#
# START GENERATE
#
case "${NIGHTLY_SKIP_STEP}"
in
*GENERATE*) ;;
*)
if [ -d ../emp4 -a -d ../emp4/bin -a -d ../emp4/data ]
then
echo "Directory structure is ok"
@ -187,6 +263,20 @@ do
echo "Done (files & fairland)."
echo ""
;;
esac
#
# END GENERATE
#
#
# START SERVERSTART
#
case "${NIGHTLY_SKIP_STEP}"
in
*SERVERSTART*) ;;
*)
echo "Starting server with -d in the background"
./emp_server -d &
PID="$!"
@ -195,6 +285,20 @@ do
echo "Done (emp_server)."
echo ""
;;
esac
#
# END SERVERSTART
#
#
# START GENERATE (2nd part)
#
case "${NIGHTLY_SKIP_STEP}"
in
*GENERATE*) ;;
*)
echo "Running newcap_script through emp_client"
runfeed POGO peter < newcap_script >/dev/null 2>&1 ||
{
@ -221,6 +325,20 @@ give uw * ?uw>0 5
EOF
echo "Done (preparing)."
echo ""
;;
esac
#
# END GENERATE (2nd part)
#
#
# START TESTSCRIPT
#
case "${NIGHTLY_SKIP_STEP}"
in
*TESTSCRIPT*) ;;
*)
for PLAYER in 1 2 3 4 5 6 7 8 9 10
do
@ -240,6 +358,7 @@ EOF
runfeed POGO peter << EOF
power new
cen * ?own#0
reso * ?own#0
enable
force 1
disable
@ -251,6 +370,7 @@ EOF
echo "Check player 1"
runfeed 1 << EOF
cen *
map #
read n
EOF
echo "Done (check)."
@ -268,12 +388,45 @@ EOF
echo "Done (Rudimentary tests)."
echo ""
;;
esac
#
# END TESTSCRIPT
#
#
# START SERVERSTOP
#
case "${NIGHTLY_SKIP_STEP}"
in
*SERVERSTOP*) ;;
*)
case "${NIGHTLY_SKIP_STEP}"
in
*SERVERSTART*) ;;
*)
echo "Stopping server"
trykill "${PID}"
echo "Done (kill)."
echo ""
;;
esac
;;
esac
#
# END SERVERSTOP
#
done
#
# START CLEANUP
#
case "${NIGHTLY_SKIP_STEP}"
in
*CLEANUP*) ;;
*)
echo "Cleaning sandbox"
cd "${BOXDIR}" || err "Could not cd back to sanbox root !"
rm -r "${WORKDIR}" || warn "Directory ${WORKDIR} could not be cleanly removed !"
@ -281,6 +434,12 @@ rm -rf "${WORKDIR}" || warn "Directory ${WORKDIR} could not be forcibly removed
[ -d "${WORKDIR}/." ] && warn "Directory ${WORKDIR} still present"
echo "Done (cleaning)."
;;
esac
#
# END CLEANUP
#
echo "Nightly build finished at `date`"
exit 0