6 # For some reason, solaris sh exits as soon as both stderr and stdout
7 # are redirected to file at the exec, so if we run on solaris, use ksh
17 if [ "`uname`" = "SunOS" ]
29 echo "Usage: ${PROGNAME} <configfile>" >&2;
48 [ -f "${SCRIPTDIR}/common.sh" ] || { echo "Broken config ?" >&2; exit 1; }
49 . "${SCRIPTDIR}"/common.sh
52 STAMP="`date +%Y%m%d%H%M%S`"
53 WORKDIR="${EMPTARGET}.${ARCH}"
54 [ -n "${EXTRASUFFIX}" ] && WORKDIR="${WORKDIR}.${EXTRASUFFIX}"
55 LOGFILE="${LOGDIR}/${WORKDIR}.${STAMP}"
66 BOXDIR="${SCRIPTDIR}/${BOXDIR}"
70 cd "${BOXDIR}" || err "Could not chdir to ${BOXDIR}"
72 echo "Nightly build starting at `date`"
77 mkdir "${WORKDIR}" || warn "Could not create ${BOXDIR}/${WORKDIR}"
78 cd "${WORKDIR}" || err "Could not cd to ${BOXDIR}/${WORKDIR}"
80 echo "Getting source from CVS:"
83 while ! cvs -z3 -d:ext:"${SFLOGIN}"@cvs.sourceforge.net:/cvsroot/empserver co empserver >/dev/null
85 sleep "`expr 5 + ${RETR}`"
86 RETR="`expr 1 + ${RETR}`"
87 [ "${RETR}" -gt 100 ] && err "CVS Timeout after ${RETR} retres."
92 # Run local patches ${LOCALPATCHDIR}/*.patch
93 case "${LOCALPATCHDIR}"
98 LOCALPATCHDIR="${SCRIPTDIR}/${LOCALPATCHDIR}"
102 if [ -n "${LOCALPATCHDIR}" -a -d "${LOCALPATCHDIR}/." ]
104 echo "Applying local patches from ${LOCALPATCHDIR}:"
105 for i in "${LOCALPATCHDIR}"/*.patch
107 [ -r "${i}" ] || continue
108 if patch -Np0 < "${i}" >/dev/null
112 echo "========== ${i}: NOT OK! ${?} =========="
119 cd empserver || err "Could not cd to ${BOXDIR}/${WORKDIR}/empserver."
122 echo "Preparing build.conf"
123 sed -e "s,^USERNAME = .*$,USERNAME = ${EMPLOGIN}," \
124 -e "s,^HOSTNAME = .*$,HOSTNAME = localhost," \
125 -e "s,^IPADDR = .*$,IPADDR = 127.0.0.1," \
126 -e "s,^EMPDIR = .*$,EMPDIR = ${BOXDIR}/${WORKDIR}/emp4," \
127 < build.conf > build.conf.new && \
128 mv build.conf.new build.conf || \
129 err "Could not prep build.conf"
130 echo "Done (build.conf)."
133 # TODO: this should be fixed another way...
134 echo "Generating empty Makedepends."
135 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"
140 echo "Building server"
141 if make "${EMPTARGET}" >/dev/null
143 warn "make did not return 0."
148 # Try to run startup utilities
149 if [ -d ../emp4 -a -d ../emp4/bin -a -d ../emp4/data ]
151 cd ../emp4/bin || err "Could not cd to ../emp4/bin"
152 echo "Determining type of files in bindir"
154 echo "Done (file *)."
156 echo "Running files and fairland"
157 echo y | ./files || warn "Error running files"
158 ./fairland 10 30 >/dev/null || warn "Error running fairland"
159 echo "Done (files & fairland)."
164 echo "Cleaning sandbox"
165 cd "${BOXDIR}" || err "Could not cd back to sanbox root !"
166 rm -r "${WORKDIR}" || warn "Directory ${WORKDIR} could not be cleanly removed !"
167 rm -rf "${WORKDIR}" || warn "Directory ${WORKDIR} could not be forcibly removed !"
168 [ -d "${WORKDIR}/." ] && warn "Directory ${WORKDIR} still present"
169 echo "Done (cleaning)."
171 echo "Nightly build finished at `date`"