mirror of https://github.com/OpenIdentityPlatform/OpenDJ.git

jpikus
27.15.2009 3ce35cc6f1201b1285d71aeda8ec16ff12a30f55
script used to build
57 files added
6654 ■■■■■ changed files
re-scripts/bin/branch_1.2/README 6 ●●●●● patch | view | raw | blame | history
re-scripts/bin/branch_1.2/daily-build.sh 282 ●●●●● patch | view | raw | blame | history
re-scripts/bin/branch_1.2/promote-weekly-build-candidate.sh 47 ●●●●● patch | view | raw | blame | history
re-scripts/bin/branch_1.2/respin-weekly-build.sh 45 ●●●●● patch | view | raw | blame | history
re-scripts/bin/branch_1.2/rtm-RC-build.sh 385 ●●●●● patch | view | raw | blame | history
re-scripts/bin/branch_1.2/rtm-build-carole.sh 380 ●●●●● patch | view | raw | blame | history
re-scripts/bin/branch_1.2/rtm-build.sh 390 ●●●●● patch | view | raw | blame | history
re-scripts/bin/branch_1.2/send-mail.sh 11 ●●●●● patch | view | raw | blame | history
re-scripts/bin/branch_1.2/weekly-build.sh 377 ●●●●● patch | view | raw | blame | history
re-scripts/bin/build-ndb.sh 308 ●●●●● patch | view | raw | blame | history
re-scripts/bin/build-status.sh 13 ●●●●● patch | view | raw | blame | history
re-scripts/bin/build-status/README 5 ●●●●● patch | view | raw | blame | history
re-scripts/bin/build-status/classes/org/opends/tools/BuildStatus$1.class patch | view | raw | blame | history
re-scripts/bin/build-status/classes/org/opends/tools/BuildStatus$2.class patch | view | raw | blame | history
re-scripts/bin/build-status/classes/org/opends/tools/BuildStatus$Build.class patch | view | raw | blame | history
re-scripts/bin/build-status/classes/org/opends/tools/BuildStatus$DailyBuild.class patch | view | raw | blame | history
re-scripts/bin/build-status/classes/org/opends/tools/BuildStatus$JDK.class patch | view | raw | blame | history
re-scripts/bin/build-status/classes/org/opends/tools/BuildStatus$TestFailure.class patch | view | raw | blame | history
re-scripts/bin/build-status/classes/org/opends/tools/BuildStatus.class patch | view | raw | blame | history
re-scripts/bin/build-status/src/org/opends/tools/BuildStatus.java 275 ●●●●● patch | view | raw | blame | history
re-scripts/bin/daily-build-for-release-eng.sh 271 ●●●●● patch | view | raw | blame | history
re-scripts/bin/daily-build.sh 317 ●●●●● patch | view | raw | blame | history
re-scripts/bin/daily-build_wt.sh 297 ●●●●● patch | view | raw | blame | history
re-scripts/bin/lib/OpenDS.jar patch | view | raw | blame | history
re-scripts/bin/lib/activation.jar patch | view | raw | blame | history
re-scripts/bin/lib/mail.jar patch | view | raw | blame | history
re-scripts/bin/promote-weekly-build-candidate.sh 45 ●●●●● patch | view | raw | blame | history
re-scripts/bin/respin-weekly-build.sh 45 ●●●●● patch | view | raw | blame | history
re-scripts/bin/rtm-build.sh 392 ●●●●● patch | view | raw | blame | history
re-scripts/bin/send-mail.sh 11 ●●●●● patch | view | raw | blame | history
re-scripts/bin/test/daily-build.sh 264 ●●●●● patch | view | raw | blame | history
re-scripts/bin/test/daily-build.sh.carole 265 ●●●●● patch | view | raw | blame | history
re-scripts/bin/test/daily-build.sh.hidden 335 ●●●●● patch | view | raw | blame | history
re-scripts/bin/weekly-build.sh 376 ●●●●● patch | view | raw | blame | history
re-scripts/bin/ws/README 4 ●●●● patch | view | raw | blame | history
re-scripts/bin/ws/build-status/README 5 ●●●●● patch | view | raw | blame | history
re-scripts/bin/ws/build-status/classes/org/opends/tools/BuildStatus$1.class patch | view | raw | blame | history
re-scripts/bin/ws/build-status/classes/org/opends/tools/BuildStatus$2.class patch | view | raw | blame | history
re-scripts/bin/ws/build-status/classes/org/opends/tools/BuildStatus$Build.class patch | view | raw | blame | history
re-scripts/bin/ws/build-status/classes/org/opends/tools/BuildStatus$DailyBuild.class patch | view | raw | blame | history
re-scripts/bin/ws/build-status/classes/org/opends/tools/BuildStatus$JDK.class patch | view | raw | blame | history
re-scripts/bin/ws/build-status/classes/org/opends/tools/BuildStatus$TestFailure.class patch | view | raw | blame | history
re-scripts/bin/ws/build-status/classes/org/opends/tools/BuildStatus.class patch | view | raw | blame | history
re-scripts/bin/ws/build-status/src/org/opends/tools/BuildStatus.java 275 ●●●●● patch | view | raw | blame | history
re-scripts/bin/ws/daily-build.sh 349 ●●●●● patch | view | raw | blame | history
re-scripts/bin/ws/getParameter.sh 70 ●●●●● patch | view | raw | blame | history
re-scripts/bin/ws/mydaily-build.sh 364 ●●●●● patch | view | raw | blame | history
re-scripts/bin/ws/product/branch12 13 ●●●●● patch | view | raw | blame | history
re-scripts/bin/ws/product/trunk 13 ●●●●● patch | view | raw | blame | history
re-scripts/bin/ws/test-builds/20090120094011/build-20090120094011.log 5 ●●●●● patch | view | raw | blame | history
re-scripts/bin/ws/test-builds/20090120094115/build-20090120094115.log 5 ●●●●● patch | view | raw | blame | history
re-scripts/bin/ws/test-builds/20090120094230/build-20090120094230.log 5 ●●●●● patch | view | raw | blame | history
re-scripts/bin/ws/test-builds/20090120094300/build-20090120094300.log 5 ●●●●● patch | view | raw | blame | history
re-scripts/bin/ws/test-builds/20090120094352/build-20090120094352.log 5 ●●●●● patch | view | raw | blame | history
re-scripts/bin/ws/test-builds/20090120094434/build-20090120094434.log 5 ●●●●● patch | view | raw | blame | history
re-scripts/bin/ws/test-builds/20090120105037/build-20090120105037.log 5 ●●●●● patch | view | raw | blame | history
re-scripts/bin/ws/weekly-build.sh 384 ●●●●● patch | view | raw | blame | history
re-scripts/bin/branch_1.2/README
New file
@@ -0,0 +1,6 @@
rtm-RC-build.sh will create 1.2.RCn
in /promoted-builds/
then run with same svn revision
rtm-build.sh will create 1.2.0
in /promoted-builds
re-scripts/bin/branch_1.2/daily-build.sh
New file
@@ -0,0 +1,282 @@
#!/bin/sh
# If an option is given to this script, it is assumed as running in
# sanity check mode
# Define the Java versions that we will use to perform the build.
# These values should correspond to subdirectories below /java
JAVA_VERSIONS="jdk5 jdk6"
# Define absolute paths to all commands we will use in this script.
AWK=/usr/bin/awk
CAT=/usr/bin/cat
CHMOD=/usr/bin/chmod
CUT=/usr/bin/cut
DATE=/usr/bin/date
DIRNAME=/usr/bin/dirname
GREP=/usr/bin/grep
GZIP=/usr/bin/gzip
HEAD=/usr/bin/head
LN=/usr/bin/ln
LS=/usr/bin/ls
MKDIR=/usr/bin/mkdir
MKTEMP=/usr/bin/mktemp
MV=/usr/bin/mv
RM=/usr/bin/rm
SORT=/usr/bin/sort
SVN=/opt/csw/bin/svn
TAR=/usr/bin/tar
TEST=/usr/bin/test
WC=/usr/bin/wc
SENDMAIL=/export/home/builds/bin/send-mail.sh
#If an argument is provided, let's assume we run a sanity check (no mail)
if ${TEST} $# -gt 0
then
  SANITY=1
else
  SANITY=0
fi
# Change to the directory that contains this script.
cd `${DIRNAME} $0`
# Explicitly set a minimal PATH so we don't run anything unexpected.
PATH="/bin:/usr/bin"
export PATH
# Define paths that will be used during this script.
SCRIPT_DIR=`pwd`
BUILDS_DIR=/daily-builds/branch1.2
# Define the URL to use to access the repository.
SVN_URL=file:///svn-mirror/branches/b1.2/
# Define variables that will be used when sending the e-mail message.
#RECIPIENT="opends-staff@sun.com"
RECIPIENT="dev@opends.dev.java.net"
SENDER="opends@dev.java.net"
SUBJECT_DATE=`${DATE} '+%Y%m%d'`
SUBJECT="Branch 1.2 : OpenDS Daily Build ${SUBJECT_DATE}"
# Create a new directory to hold the build.
BUILD_DATE=`${DATE} '+%Y%m%d%H%M%S'`
BUILD_DIR="${BUILDS_DIR}/${BUILD_DATE}"
${MKDIR} -p ${BUILD_DIR}
# Start generating a log file for the build.
LOG_FILE="${BUILD_DIR}/build-${BUILD_DATE}.log"
#SERVER_NAME="www2.opends.org"
SERVER_NAME="www.opends.org"
BUILD_URL="http://${SERVER_NAME}/daily-builds/branch1.2/${BUILD_DATE}/"
echo "OpenDS Daily Build ${SUBJECT_DATE}" > ${LOG_FILE}
echo "Build Time:  ${BUILD_DATE}" >> ${LOG_FILE}
echo "Build URL:   ${BUILD_URL}" >> ${LOG_FILE}
echo >> ${LOG_FILE}
echo >> ${LOG_FILE}
# Check out the head revision from the repository.
cd ${BUILD_DIR}
echo ${SVN} checkout -q --non-interactive ${SVN_URL} OpenDS >> ${LOG_FILE} 2>&1
${SVN} checkout -q --non-interactive ${SVN_URL} OpenDS >> ${LOG_FILE} 2>&1
echo >> ${LOG_FILE}
echo >> ${LOG_FILE}
# Add information about the checked-out revision to the log.
cd OpenDS
echo ${SVN} info >> ${LOG_FILE} 2>&1
${SVN} info >> ${LOG_FILE} 2>&1
echo >> ${LOG_FILE}
echo >> ${LOG_FILE}
# jp146654 :add path to OpenDMK
cd ${BUILD_DIR}/OpenDS
OLD_BUILDPROP_FILE=build.properties.origin
NEW_BUILDPROP_FILE=build.properties
echo update Opendmk lib path in OpenDS/build.properties>> ${LOG_FILE} 2>&1
echo cp ${NEW_BUILDPROP_FILE} ${NEW_BUILDPROP_FILE}.origin >> ${LOG_FILE} 2>&1
cp ${NEW_BUILDPROP_FILE} ${NEW_BUILDPROP_FILE}.origin
echo add new path   : /export/home/builds/OpenDMK-bin/lib>> ${LOG_FILE} 2>&1
${CAT}  ${OLD_BUILDPROP_FILE} | sed "s/opendmk\.lib\.dir\=/opendmk\.lib\.dir\=\/export\/home\/builds\/OpenDMK-bin\/lib/g" > ${NEW_BUILDPROP_FILE}
echo >> ${LOG_FILE}
echo >> ${LOG_FILE}
# end
# Parse the PRODUCT file to get the version information.
SHORT_NAME=`${GREP} SHORT_NAME PRODUCT | ${CUT} -d= -f2`
MAJOR_VERSION=`${GREP} MAJOR_VERSION PRODUCT | ${CUT} -d= -f2`
MINOR_VERSION=`${GREP} MINOR_VERSION PRODUCT | ${CUT} -d= -f2`
POINT_VERSION=`${GREP} POINT_VERSION PRODUCT | ${CUT} -d= -f2`
VERSION_QUALIFIER=`${GREP} VERSION_QUALIFIER PRODUCT | ${CUT} -d= -f2`
VERSION_NUMBER_STRING="${MAJOR_VERSION}.${MINOR_VERSION}.${POINT_VERSION}${VERSION_QUALIFIER}"
VERSION_STRING="${SHORT_NAME}-${VERSION_NUMBER_STRING}"
# Loop through the JDK versions and build usin gthe "nightly" target.
# We'll set JAVA_HOME each time, and when we're done, we can continue using
# the last one.
ANY_FAILED=0
ALL_FAILED=1
for VERSION in ${JAVA_VERSIONS}
do
  # Removes directory that might be still there if test failed before
  # @AfterClass that normaly performs the cleanup
  FSCACHE=/tmp/OpenDS.FSCache
  if ${TEST} -d FSCACHE
  then
    ${RM} -rf ${FSCACHE}
  fi
  JAVA_HOME=/java/${VERSION}
  export JAVA_HOME
  echo "Building with Java version ${VERSION}" >> ${LOG_FILE}
  echo ./build.sh nightly -Ddisable.test.help=true -DMEM=512M >> ${LOG_FILE} 2>&1
  ./build.sh nightly -Ddisable.test.help=true -DMEM=512M >> ${LOG_FILE} 2>&1
  if ${TEST} $? -eq 0
  then
    ALL_FAILED=0
  else
    ANY_FAILED=1
  fi
  echo ./build.sh svr4 -Ddisable.test.help=true -DMEM=512M >> ${LOG_FILE} 2>&1
  ./build.sh svr4  -Ddisable.test.help=true -DMEM=512M >> ${LOG_FILE} 2>&1
  if ${TEST} $? -ne 0
  then
    ANY_FAILED=1
  fi
  # Create the Java Web Start install archive.
  ADDRESS="www.opends.org"
  export ADDRESS
  BASE_PATH=/daily-builds/branch1.2/latest/OpenDS/build/webstart/install
  export BASE_PATH
  echo resource/webstart/create-webstart-standalone.sh >> ${LOG_FILE} 2>&1
  resource/webstart/create-webstart-standalone.sh >> ${LOG_FILE} 2>&1
  # fix to make create-webstart-standalone.sh support jdk5 and jdk6
  NEW_QUICKSETUP_FILE=`${MKTEMP}`
  JWS_QUICKSETUP_FILE=build/webstart/install/QuickSetup.jnlp
  cat ${JWS_QUICKSETUP_FILE} | sed "s/\/build\//\/build.${VERSION}\//g" > ${NEW_QUICKSETUP_FILE}
  mv ${JWS_QUICKSETUP_FILE} ${JWS_QUICKSETUP_FILE}.moved
  mv ${NEW_QUICKSETUP_FILE} ${JWS_QUICKSETUP_FILE}
  ${CHMOD} +r ${JWS_QUICKSETUP_FILE}
  echo >> ${LOG_FILE}
  echo >> ${LOG_FILE}
  ${MV} build build.${VERSION}
done
#If this is a sanity check, exit
if ${TEST} ${SANITY} -eq 1
then
  exit 1
fi
# Create a README.html file in for this build.
cat > ${BUILD_DIR}/README.html <<ENDOFREADME
<TABLE BORDER="0">
  <TR>
    <TD>
      <IMG SRC="http://${SERVER_NAME}/images/opends_logo_welcome.png" ALT="OpenDS Logo" WIDTH="197" HEIGHT="57">
    </TD>
    <TD>
      <H2>OpenDS Daily Build ${SUBJECT_DATE}</H2>
      <A HREF="${BUILD_URL}build-${BUILD_DATE}.log">Build Log File</A>
ENDOFREADME
for VERSION in ${JAVA_VERSIONS}
do
cat >> ${BUILD_DIR}/README.html <<ENDOFREADME
      <BR>
      <B>Build with Java Version ${VERSION}</B>
      <A HREF="${BUILD_URL}OpenDS/build.${VERSION}/package/${VERSION_STRING}.zip">${VERSION_STRING}.zip Build Package File</A><BR>
      <A HREF="${BUILD_URL}OpenDS/build.${VERSION}/package/${VERSION_STRING}-DSML.war">${VERSION_STRING}-DSML.war DSML Gateway</A><BR>
      <A HREF="${BUILD_URL}OpenDS/build.${VERSION}/webstart/install/QuickSetup.jnlp">QuickSetup Java Web Start Installer</A><BR>
      <A HREF="${BUILD_URL}OpenDS/build.${VERSION}/javadoc/">Javadoc Documentation</A><BR>
      <A HREF="${BUILD_URL}OpenDS/build.${VERSION}/src.zip">src.zip Source Archive</A><BR>
      <A HREF="${BUILD_URL}OpenDS/build.${VERSION}/unit-tests/report/results.txt">Unit Test Report</A><BR>
      <A HREF="${BUILD_URL}OpenDS/build.${VERSION}/coverage/reports/unit/">Unit Test Code Goverage Report</A><BR>
ENDOFREADME
done
cat >> ${BUILD_DIR}/README.html <<ENDOFREADME
    </TD>
  </TR>
</TABLE>
ENDOFREADME
# Remove the "latest" symlink (if it exists) and recreate it pointing to
# the new build.
cd ${BUILDS_DIR}
${RM} -f latest
${LN} -s ${BUILD_DIR} ${BUILDS_DIR}/latest
# Remove an old directory if appropriate.  We want to keep up to 30 builds.
COUNT=`${LS} | ${SORT} | ${GREP} -v latest | ${WC} -l | ${AWK} '{print $1}'`
if ${TEST} ${COUNT} -gt 30
then
  OLDEST=`${LS} | ${SORT} | ${GREP} -v latest | ${HEAD} -1`
  ${RM} -rf ${OLDEST}
fi
# Send an e-mail message to indicate that the build is complete.
BODY_FILE=`${MKTEMP}`
echo "OpenDS Daily Build ${SUBJECT_DATE}" > ${BODY_FILE}
echo "Java Versions Tested:  ${JAVA_VERSIONS}" >> ${BODY_FILE}
#JPI : to be able to access unit tests logs wia http
if test -d "/daily-builds/branch1.2/latest/OpenDS/build.jdk5/unit-tests/package-instance/logs"
then
   chmod -R 777 /daily-builds/branch1.2/latest/OpenDS/build.jdk5/unit-tests/package-instance/logs
fi
if test -d "/daily-builds/branch1.2/latest/OpenDS/build.jdk6/unit-tests/package-instance/logs"
then
   chmod -R 777 /daily-builds/branch1.2/latest/OpenDS/build.jdk6/unit-tests/package-instance/logs
fi
####
if ${TEST} ${ANY_FAILED} -eq 0
then
  echo "Build Status:  Succeeded for all Java versions" >> ${BODY_FILE}
  SUBJECT_WITH_STATUS="${SUBJECT} (success)"
else
  if ${TEST} ${ALL_FAILED} -eq 0
  then
    echo "Build Status:  Failed for some Java versions" >> ${BODY_FILE}
  else
    echo "Build Status:  Failed for all Java versions" >> ${BODY_FILE}
  fi
  SUBJECT_WITH_STATUS="${SUBJECT} (failure)"
fi
echo "Build URL:  ${BUILD_URL}" >> ${BODY_FILE}
${SENDMAIL} --from "${SENDER}" --to "${RECIPIENT}" --subject "${SUBJECT_WITH_STATUS}" \
            --body "${BODY_FILE}" --attach "${BUILD_DIR}/README.html" \
            --attach "${LOG_FILE}"
${RM} ${BODY_FILE}
re-scripts/bin/branch_1.2/promote-weekly-build-candidate.sh
New file
@@ -0,0 +1,47 @@
#!/bin/sh
set -x
# Change to the directory that contains this script.
cd `dirname $0`
# Explicitly set a minimal PATH so we won't run anything unexpected.
PATH="/bin:/usr/bin"
export PATH
# Define absolute paths to all commands that we will use in this script.
CAT="/usr/bin/cat"
RM="/usr/bin/rm"
GREP="/usr/bin/grep"
LN="/usr/bin/ln"
# Find the latest candidate.  If there isn't one, then fail.
SCRIPT_DIR=`/usr/bin/pwd`
BUILDS_DIR="/promoted-builds"
BUILD_NUMBER_FILE="buildnumber.txt"
CANDIDATE_DIR_NAME="candidate"
LATEST_DIR_NAME="latest"
CANDIDATE_DIR="${BUILDS_DIR}/${CANDIDATE_DIR_NAME}"
if test ! -L "${CANDIDATE_DIR}"
then
  echo "ERROR:  No candidate directory ${CANDIDATE_DIR} could be found"
  echo "Does a candidate build exist?"
  exit 1
fi
# Get the version number for this build.
#VERSION_NUMBER_FILE=version.txt
VERSION_NUMBER_FILE=1.2.0-RC2
VERSION_NUMBER_STRING=`${CAT} "${CANDIDATE_DIR}/${VERSION_NUMBER_FILE}"`
# Remove the existing "latest" symlink and create a new one pointing to the
# current candidate build.
cd "${BUILDS_DIR}"
${RM} -f "${LATEST_DIR_NAME}"
${LN} -s "${BUILDS_DIR}/${VERSION_NUMBER_STRING}" "${BUILDS_DIR}/${LATEST_DIR_NAME}"
${RM} -f "${CANDIDATE_DIR_NAME}"
re-scripts/bin/branch_1.2/respin-weekly-build.sh
New file
@@ -0,0 +1,45 @@
#!/bin/sh
# Change to the directory that contains this script.
cd `dirname $0`
# Explicitly set a minimal PATH so we won't run anything unexpected.
PATH="/bin:/usr/bin"
export PATH
# Define absolute paths to all commands that we will use in this script.
CAT="/usr/bin/cat"
RM="/usr/bin/rm"
GREP="/usr/bin/grep"
# Find the latest candidate.  If there isn't one, then fail.
SCRIPT_DIR=`/usr/bin/pwd`
BUILDS_DIR="/promoted-builds"
BUILD_NUMBER_FILE="buildnumber.txt"
CANDIDATE_DIR_NAME="candidate"
CANDIDATE_DIR="${BUILDS_DIR}/${CANDIDATE_DIR_NAME}"
if test ! -L "${CANDIDATE_DIR}"
then
  echo "ERROR:  No candidate directory ${CANDIDATE_DIR} could be found"
  echo "Does a candidate build exist?"
  exit 1
fi
# Get the version number for this build.
VERSION_NUMBER_FILE=version.txt
VERSION_NUMBER_STRING=`${CAT} "${CANDIDATE_DIR}/${VERSION_NUMBER_FILE}"`
VERSION_STRING="OpenDS-${VERSION_NUMBER_STRING}"
# Remove the existing candidate and build directory.
cd "${BUILDS_DIR}"
${RM} -rf "${VERSION_NUMBER_STRING}" "${CANDIDATE_DIR_NAME}"
# Kick off the weekly build again.
"${SCRIPT_DIR}/weekly-build.sh"
re-scripts/bin/branch_1.2/rtm-RC-build.sh
New file
@@ -0,0 +1,385 @@
#!/bin/sh
# Define the Java versions that we will use to perform the build.
# These values should correspond to subdirectories below /java
#JAVA_VERSIONS="jdk5 jdk6"
# Define absolute paths to all commands that we will use in this script.
AWK="/usr/bin/awk"
BASENAME=/usr/bin/basename
CAT="/usr/bin/cat"
CHMOD="/usr/bin/chmod"
DATE="/usr/bin/date"
DIGEST="/usr/bin/digest"
DIRNAME="/usr/bin/dirname"
GREP="/usr/bin/grep"
LN="/usr/bin/ln"
MKDIR="/usr/bin/mkdir"
MKTEMP="/usr/bin/mktemp"
MV="/usr/bin/mv"
PS="/usr/bin/ps"
RM="/usr/bin/rm"
SVN="/opt/csw/bin/svn"
SENDMAIL="/export/home/builds/bin/send-mail.sh"
TEST=/usr/bin/test
#If an argument is provided, let's assume we run a sanity check (no mail)
if ${TEST} $# -gt 0
then
  SANITY=1
else
  SANITY=0
fi
# Change to the directory that contains this script.
cd `${DIRNAME} $0`
# Explicitly set a minimal PATH so we don't run anything unexpected.
PATH="/bin:/usr/bin"
export PATH
# Sanity checks
# Removes directory that might be still there if test failed before @AfterClass
# that normaly performs the cleanup
FSCACHE=/tmp/OpenDS.FSCache
if ${TEST} -d FSCACHE
then
  ${RM} -rf ${FSCACHE}
fi
# Checks that no weekly build is running
${PS} | grep `${BASENAME} $0`
if ${TEST} $? -eq 0
  then
  echo "This script is already running. Aborting..."
  exit 1
fi
# Checks that no daily build is running
${PS} | grep daily\.sh
if ${TEST} $? -eq 0
  then
  echo "The daily script is currently running. Aborting..."
  exit 1
fi
# Define paths that will be used during this script.
SCRIPT_DIR=`pwd`
BUILDS_DIR=/promoted-builds/
WIKI_HOME=https://www.opends.org/1.2
# Define the URL to use to access the repository.
SVN_URL=file:///svn-mirror/branches/b1.2/
# Start creating a log file that will be used to record progress.
LOG_FILE=`${MKTEMP}`
BUILD_DATE=`${DATE} '+%Y%m%d%H%M%S'`
echo "Beginning weekly build processing at ${BUILD_DATE}" > "${LOG_FILE}"
echo "" >> "${LOG_FILE}"
# Define paths to all directories that we will access in this script.
# These should all be absolute paths.
BUILD_NUMBER_FILE="buildnumber.txt"
REVISION_NUMBER_FILE="revision.txt"
VERSION_NUMBER_FILE="version.txt"
# Look at what is currently the latest weekly build to get information we need
# to bootstrap this build.
LAST_BUILD_DIR="${BUILDS_DIR_L}/latest"
#JPI
BUILD_NUMBER=""
BUILD_NUMBER_STR=""
VERSION_QUALIFIER="-RC2"
echo "*** Build Number Information ***" >> "${LOG_FILE}"
echo "LAST_BUILD_DIR=${LAST_BUILD_DIR}" >> "${LOG_FILE}"
echo "" >> "${LOG_FILE}"
# Define information that we will use to access the repository.
PRODUCT_URL="${SVN_URL}/PRODUCT"
# Parse the contents of the PRODUCT file to get the version information.
echo "*** Product Version Information ***" >> "${LOG_FILE}"
PRODUCT_FILE=`${MKTEMP}`
echo ${SVN} cat --non-interactive "${PRODUCT_URL}" \> "${PRODUCT_FILE}" >> "${LOG_FILE}"
${SVN} cat --non-interactive "${PRODUCT_URL}" > "${PRODUCT_FILE}"
SHORT_NAME=`${GREP} SHORT_NAME "${PRODUCT_FILE}" | cut -d= -f2`
MAJOR_VERSION=`${GREP} MAJOR_VERSION "${PRODUCT_FILE}" | cut -d= -f2`
MINOR_VERSION=`${GREP} MINOR_VERSION "${PRODUCT_FILE}" | cut -d= -f2`
POINT_VERSION=`${GREP} POINT_VERSION "${PRODUCT_FILE}" | cut -d= -f2`
#VERSION_QUALIFIER=`${GREP} VERSION_QUALIFIER "${PRODUCT_FILE}" | cut -d= -f2`
#JPI
VERSION_NUMBER_STRING="${MAJOR_VERSION}.${MINOR_VERSION}.${POINT_VERSION}${VERSION_QUALIFIER}"
VERSION_STRING="${SHORT_NAME}-${VERSION_NUMBER_STRING}"
${RM} "${PRODUCT_FILE}"
echo "SHORT_NAME=${SHORT_NAME}" >> "${LOG_FILE}"
echo "MAJOR_VERSION=${MAJOR_VERSION}" >> "${LOG_FILE}"
echo "MINOR_VERSION=${MINOR_VERSION}" >> "${LOG_FILE}"
echo "POINT_VERSION=${POINT_VERSION}" >> "${LOG_FILE}"
echo "VERSION_QUALIFIER=${VERSION_QUALIFIER}" >> "${LOG_FILE}"
echo "VERSION_STRING=${VERSION_STRING}" >> "${LOG_FILE}"
echo "" >> "${LOG_FILE}"
# Define variables that will be used when sending the e-mail message.
RECIPIENT="qa@opends.dev.java.net"
#RECIPIENT="jeanine.pikus@sun.com"
SENDER="opends@dev.java.net"
SUBJECT="OpenDS Weekly Build Candidate ${VERSION_NUMBER_STRING}"
# Create a new directory to hold the build.
echo "*** Checking Out the Server ***" >> "${LOG_FILE}"
BUILD_DIR="${BUILDS_DIR}/${VERSION_NUMBER_STRING}"
if test -d "${BUILD_DIR}"
then
  echo "ERROR:  Target build directory ${BUILD_DIR} already exists"
  echo "ERROR:  Aborting the weekly build attempt."
  exit 1
fi
echo ${MKDIR} -p "${BUILDS_DIR}/${VERSION_NUMBER_STRING}" >> "${LOG_FILE}"
${MKDIR} -p "${BUILDS_DIR}/${VERSION_NUMBER_STRING}"
echo cd "${BUILDS_DIR}/${VERSION_NUMBER_STRING}" >> "${LOG_FILE}"
cd "${BUILD_DIR}"
echo ${MV} "${LOG_FILE}" "${VERSION_STRING}.log" >> "${LOG_FILE}"
${MV} "${LOG_FILE}" "${VERSION_STRING}.log" && LOG_FILE="${BUILD_DIR}/${VERSION_STRING}.log"
${CHMOD} 0644 "${LOG_FILE}"
echo "LOG_FILE=${LOG_FILE}" >> "${LOG_FILE}"
# Check out the head revision from the repository.
echo ${SVN} checkout -q --non-interactive ${SVN_URL} OpenDS >> "${LOG_FILE}" 2>&1
${SVN} checkout -q --non-interactive ${SVN_URL} OpenDS >> ${LOG_FILE} 2>&1
cd OpenDS
REVISION_NUMBER=`${SVN} info | ${GREP} '^Revision:' | ${AWK} '{print $2}'`
echo "REVISION_NUMBER=${REVISION_NUMBER}" >> "${LOG_FILE}"
echo "" >> "${LOG_FILE}"
# Add information about the checked out revision to the log file.
echo ${SVN} info >> "${LOG_FILE}" 2>&1
${SVN} info >> "${LOG_FILE}" 2>&1
echo "" >> "${LOG_FILE}"
# jp146654 :add path to OpenDMK
cd ${BUILD_DIR}/OpenDS
OLD_BUILDPROP_FILE=build.properties.origin
NEW_BUILDPROP_FILE=build.properties
echo update Opendmk lib path in OpenDS/build.properties>> ${LOG_FILE} 2>&1
echo cp ${NEW_BUILDPROP_FILE} ${NEW_BUILDPROP_FILE}.origin >> ${LOG_FILE} 2>&1
cp ${NEW_BUILDPROP_FILE} ${NEW_BUILDPROP_FILE}.origin
echo add new path   : /export/home/builds/OpenDMK-bin/lib>> ${LOG_FILE} 2>&1
${CAT}  ${OLD_BUILDPROP_FILE} | sed "s/opendmk\.lib\.dir\=/opendmk\.lib\.dir\=\/export\/home\/builds\/OpenDMK-bin\/lib/g" > ${NEW_BUILDPROP_FILE}
echo >> ${LOG_FILE}
echo >> ${LOG_FILE}
# end jp146654
JAVA_HOME=/java/jdk5
export JAVA_HOME
# Perform a build of the server using the "weekly" target.
echo "*** Building the Server ***" >> "${LOG_FILE}"
echo ./build.sh weekly -Dwiki.home=${WIKI_HOME} -DVERSION_QUALIFIER=${VERSION_QUALIFIER} -Ddisable.test.help=true -DMEM=512M >> "${LOG_FILE}" 2>&1
./build.sh weekly -Dwiki.home=${WIKI_HOME} -DVERSION_QUALIFIER=${VERSION_QUALIFIER} -Ddisable.test.help=true -DMEM=512M >> "${LOG_FILE}" 2>&1
if test $? -eq 0
then
  STATUS="Successful"
else
  STATUS="FAILED"
fi
echo "STATUS=${STATUS}" >> "${LOG_FILE}"
echo "" >> "${LOG_FILE}"
echo ./build.sh svr4 -Dwiki.home=${WIKI_HOME} -DVERSION_QUALIFIER=${VERSION_QUALIFIER} -Ddisable.test.help=true -DMEM=512M >> "${LOG_FILE}" 2>&1
./build.sh svr4 -Dwiki.home=${WIKI_HOME} -DVERSION_QUALIFIER=${VERSION_QUALIFIER} -Ddisable.test.help=true -DMEM=512M >> "${LOG_FILE}" 2>&1
if test $? -eq 0
then
  STATUS="Successful"
else
  STATUS="FAILED"
fi
echo "STATUS=${STATUS}" >> "${LOG_FILE}"
echo "" >> "${LOG_FILE}"
# Create the Java Web Start Install Archive.
ADDRESS="www.opends.org"
export ADDRESS
echo "*** Creating Java Web Start Install Archive ***" >> "${LOG_FILE}"
BASE_PATH="${BUILDS_DIR}/${VERSION_NUMBER_STRING}/install"
export BASE_PATH
echo "BASE_PATH=${BASE_PATH}" >> "${LOG_FILE}"
echo resource/webstart/create-webstart-standalone.sh >> "${LOG_FILE}" 2>&1
resource/webstart/create-webstart-standalone.sh  >> "${LOG_FILE}" 2>&1
echo "" >> "${LOG_FILE}"
# Symlink all of the appropriate files into place in the base build directory.
#${LN} -s "${BUILD_DIR}/OpenDS/build/package/${VERSION_STRING}.zip" "${BUILD_DIR}/${VERSION_STRING}.zip"
#${LN} -s "${BUILD_DIR}/OpenDS/build/package/${VERSION_STRING}-DSML.war" "${BUILD_DIR}/${VERSION_STRING}-DSML.war"
#${LN} -s "${BUILD_DIR}/OpenDS/build/src.zip" "${BUILD_DIR}/src.zip"
#${LN} -s "${BUILD_DIR}/OpenDS/build/webstart/install" "${BUILD_DIR}/install"
#${LN} -s "${BUILD_DIR}/OpenDS/build/javadoc" "${BUILD_DIR}/javadoc"
${LN} -s "OpenDS/build/package/${VERSION_STRING}.zip" "${BUILD_DIR}/${VERSION_STRING}.zip"
${LN} -s "OpenDS/build/package/${VERSION_STRING}-DSML.war" "${BUILD_DIR}/${VERSION_STRING}-DSML.war"
${LN} -s "OpenDS/build/src.zip" "${BUILD_DIR}/src.zip"
${LN} -s "OpenDS/build/webstart/install" "${BUILD_DIR}/install"
${LN} -s "OpenDS/build/javadoc" "${BUILD_DIR}/javadoc"
# Create MD5 digests of the appropriate files.
echo "*** Calculating MD5 Digests of Build Files ***" >> "${LOG_FILE}"
${DIGEST} -a md5 "${BUILD_DIR}/OpenDS/build/package/${VERSION_STRING}.zip" > "${BUILD_DIR}/${VERSION_STRING}.zip.md5"
${DIGEST} -a md5 "${BUILD_DIR}/OpenDS/build/package/${VERSION_STRING}-DSML.war" > "${BUILD_DIR}/${VERSION_STRING}-DSML.war.md5"
${DIGEST} -a md5 "${BUILD_DIR}/OpenDS/build/src.zip" > "${BUILD_DIR}/src.zip.md5"
CORE_SERVER_MD5=`${CAT} "${BUILD_DIR}/${VERSION_STRING}.zip.md5"`
DSML_GATEWAY_MD5=`${CAT} "${BUILD_DIR}/${VERSION_STRING}-DSML.war.md5"`
SRC_ZIP_MD5=`${CAT} "${BUILD_DIR}/src.zip.md5"`
echo "CORE_SERVER_MD5=${CORE_SERVER_MD5}" >> "${LOG_FILE}"
echo "DSML_GATEWAY_MD5=${DSML_GATEWAY_MD5}" >> "${LOG_FILE}"
echo "SRC_ZIP_MD5=${SRC_ZIP_MD5}" >> "${LOG_FILE}"
echo "" >> "${LOG_FILE}"
#JPI : don't sv the build number
# Write the build number and revision numbers to text files.
#echo "${BUILD_NUMBER}" > "${BUILD_DIR}/${BUILD_NUMBER_FILE}"
#echo "${REVISION_NUMBER}" > "${BUILD_DIR}/${REVISION_NUMBER_FILE}"
#echo "${VERSION_NUMBER_STRING}" > "${BUILD_DIR}/${VERSION_NUMBER_FILE}"
# Get a log of changes since the last build.
echo "*** Getting changelog data ***" >> "${LOG_FILE}"
#JPI  a mettre a jour pour RC2
#LAST_REVISION_NUMBER=4709
#done
LAST_REVISION_NUMBER=4762
LAST_REV_PLUS_ONE=`echo "${LAST_REVISION_NUMBER}+1" | bc`
echo ${SVN} log -r ${LAST_REV_PLUS_ONE}:${REVISION_NUMBER} >> "${LOG_FILE}" 2>&1
${SVN} log -r ${LAST_REV_PLUS_ONE}:${REVISION_NUMBER} > "${BUILD_DIR}/changes.log" 2>&1
echo "" >> "${LOG_FILE}"
#If this is a sanity check, exit
if ${TEST} ${SANITY} -eq 1
then
  echo "Sanity check done."
  exit 1
fi
# Create an index.html in the build directory.
${CAT} > "${BUILD_DIR}/index.html" <<ENDOFHTML
<!DOCTYPE html PUBLIC "-//Tigris//DTD XHTML 1.0 Transitional//EN" "http://style.tigris.org/nonav/tigris_transitional.dtd">
<HTML>
  <HEAD>
    <TITLE>OpenDS Weekly Build ${VERSION_NUMBER_STRING}</TITLE>
    <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">
    <LINK REL="SHORTCUT ICON" HREF="/public/images/opends_favicon.gif">
    <LINK REL="stylesheet" HREF="/public/css/opends.css" TYPE="text/css">
    <STYLE>
      tr { text-align:left; vertical-align:top; padding:5px 10px; width:180px; background-color:#f5f5f5 }
    </STYLE>
  </HEAD>
  <BODY>
    <TABLE BORDER="0" CELLPADDING="10">
      <TR STYLE="background-color:#ffffff">
        <TD VALIGN="MIDDLE">
          <IMG SRC="/images/opends_logo_welcome.png" ALT="OpenDS Logo" WIDTH="197" HEIGHT="57">
        </TD>
        <TD VALIGN="MIDDLE">
          <H1>OpenDS Weekly Build ${VERSION_NUMBER_STRING}</H1>
        </TD>
      </TR>
      <TR>
        <TD>Weekly Build Number</TD>
        <TD>${BUILD_NUMBER}</TD>
      </TR>
      <TR>
        <TD>Subversion Revision Number</TD>
        <TD>${REVISION_NUMBER}</TD>
      </TR>
      <TR>
        <TD>QuickSetup Installer</TD>
        <TD><A HREF="install/QuickSetup.jnlp">install/QuickSetup.jnlp</A></TD>
      </TR>
      <TR>
        <TD>Core Server Zip File</TD>
        <TD><A HREF="${VERSION_STRING}.zip">${VERSION_STRING}.zip</A></TD>
      </TR>
      <TR>
        <TD>Core Server MD5 Checksum</TD>
        <TD>${CORE_SERVER_MD5}</TD>
      </TR>
      <TR>
        <TD>DSML Gateway WAR File</TD>
        <TD><A HREF="${VERSION_STRING}-DSML.war">${VERSION_STRING}-DSML.war</A></TD>
      </TR>
      <TR>
        <TD>DSML Gateway MD5 Checksum</TD>
        <TD>${DSML_GATEWAY_MD5}</TD>
      </TR>
      <TR>
        <TD>src.zip Server Source Archive</TD>
        <TD><A HREF="src.zip">src.zip</A></TD>
      </TR>
      <TR>
        <TD>src.zip MD5 Checksum</TD>
        <TD>${SRC_ZIP_MD5}</TD>
      </TR>
      <TR>
        <TD>Javadoc Documentation</TD>
        <TD><A HREF="javadoc/index.html">javadoc/index.html</A></TD>
      </TR>
      <TR>
        <TD>Changelog</TD>
        <TD><A HREF="changes.log">changes.log</A></TD>
      </TR>
      <TR>
        <TD>Build Log</TD>
        <TD><A HREF="${VERSION_STRING}.log">${VERSION_STRING}.log</A></TD>
      </TR>
    </TABLE>
    <BR>
    <A HREF="/promoted-builds/">See All Weekly Builds</A><BR>
    <A HREF="http://www.opends.org/">http://www.opends.org/</A><BR>
    <!-- Omniture -->
    <script src="https://www.opends.org/wiki/scripts/s_code_remote.js" language="JavaScript"/>
  </BODY>
</HTML>
ENDOFHTML
# Create a "candidate" symbolic link to this build.
${RM} -f "${BUILDS_DIR}/candidate"
${LN} -s "${BUILD_DIR}" "${BUILDS_DIR}/candidate"
# Create a temporary file to use for the e-mail message.
BODY_FILE=`${MKTEMP}`
echo "A new OpenDS weekly build candidate is available at" > ${BODY_FILE}
#echo "http://www2.opends.org/promoted-builds/candidate/" >> ${BODY_FILE}
echo "http://www.opends.org/${BUILDS_DIR}/candidate/" >> ${BODY_FILE}
# Send the message and delete the temporary file.
${SENDMAIL} --from "${SENDER}" --to "${RECIPIENT}" --subject "${STATUS} ${SUBJECT}" \
            --body "${BODY_FILE}" --attach "${BUILD_DIR}/index.html" \
            --attach "${LOG_FILE}"
${RM} "${BODY_FILE}"
re-scripts/bin/branch_1.2/rtm-build-carole.sh
New file
@@ -0,0 +1,380 @@
#!/bin/sh
# Define the Java versions that we will use to perform the build.
# These values should correspond to subdirectories below /java
#JAVA_VERSIONS="jdk5 jdk6"
# Define absolute paths to all commands that we will use in this script.
AWK="/usr/bin/awk"
BASENAME=/usr/bin/basename
CAT="/usr/bin/cat"
CHMOD="/usr/bin/chmod"
DATE="/usr/bin/date"
DIGEST="/usr/bin/digest"
DIRNAME="/usr/bin/dirname"
GREP="/usr/bin/grep"
LN="/usr/bin/ln"
MKDIR="/usr/bin/mkdir"
MKTEMP="/usr/bin/mktemp"
MV="/usr/bin/mv"
PS="/usr/bin/ps"
RM="/usr/bin/rm"
SVN="/opt/csw/bin/svn"
SENDMAIL="/export/home/builds/bin/send-mail.sh"
TEST=/usr/bin/test
#If an argument is provided, let's assume we run a sanity check (no mail)
if ${TEST} $# -gt 0
then
  SANITY=1
else
  SANITY=0
fi
# Change to the directory that contains this script.
cd `${DIRNAME} $0`
# Explicitly set a minimal PATH so we don't run anything unexpected.
PATH="/bin:/usr/bin"
export PATH
# Sanity checks
# Removes directory that might be still there if test failed before @AfterClass
# that normaly performs the cleanup
FSCACHE=/tmp/OpenDS.FSCache
if ${TEST} -d FSCACHE
then
  ${RM} -rf ${FSCACHE}
fi
# Checks that no weekly build is running
${PS} | grep `${BASENAME} $0`
if ${TEST} $? -eq 0
  then
  echo "This script is already running. Aborting..."
  exit 1
fi
# Checks that no daily build is running
${PS} | grep daily\.sh
if ${TEST} $? -eq 0
  then
  echo "The daily script is currently running. Aborting..."
  exit 1
fi
# Define paths that will be used during this script.
SCRIPT_DIR=`pwd`
BUILDS_DIR=/promoted-builds/1.2
WIKI_HOME=https://www.opends.org/1.0
# Define the URL to use to access the repository.
SVN_URL=file:///svn-mirror/branches/b1.2/
# Start creating a log file that will be used to record progress.
LOG_FILE=`${MKTEMP}`
BUILD_DATE=`${DATE} '+%Y%m%d%H%M%S'`
echo "Beginning weekly build processing at ${BUILD_DATE}" > "${LOG_FILE}"
echo "" >> "${LOG_FILE}"
# Define paths to all directories that we will access in this script.
# These should all be absolute paths.
BUILD_NUMBER_FILE="buildnumber.txt"
REVISION_NUMBER_FILE="revision.txt"
VERSION_NUMBER_FILE="version.txt"
# Look at what is currently the latest weekly build to get information we need
# to bootstrap this build.
LAST_BUILD_DIR="${BUILDS_DIR_L}/latest"
#JPI
BUILD_NUMBER=""
BUILD_NUMBER_STR=""
VERSION_QUALIFIER="-RC1"
echo "*** Build Number Information ***" >> "${LOG_FILE}"
echo "LAST_BUILD_DIR=${LAST_BUILD_DIR}" >> "${LOG_FILE}"
echo "" >> "${LOG_FILE}"
# Define information that we will use to access the repository.
PRODUCT_URL="${SVN_URL}/PRODUCT"
# Parse the contents of the PRODUCT file to get the version information.
echo "*** Product Version Information ***" >> "${LOG_FILE}"
PRODUCT_FILE=`${MKTEMP}`
echo ${SVN} cat --non-interactive "${PRODUCT_URL}" \> "${PRODUCT_FILE}" >> "${LOG_FILE}"
${SVN} cat --non-interactive "${PRODUCT_URL}" > "${PRODUCT_FILE}"
SHORT_NAME=`${GREP} SHORT_NAME "${PRODUCT_FILE}" | cut -d= -f2`
MAJOR_VERSION=`${GREP} MAJOR_VERSION "${PRODUCT_FILE}" | cut -d= -f2`
MINOR_VERSION=`${GREP} MINOR_VERSION "${PRODUCT_FILE}" | cut -d= -f2`
POINT_VERSION=`${GREP} POINT_VERSION "${PRODUCT_FILE}" | cut -d= -f2`
#VERSION_QUALIFIER=`${GREP} VERSION_QUALIFIER "${PRODUCT_FILE}" | cut -d= -f2`
#JPI
VERSION_NUMBER_STRING="${MAJOR_VERSION}.${MINOR_VERSION}.${POINT_VERSION}${VERSION_QUALIFIER}"
VERSION_STRING="${SHORT_NAME}-${VERSION_NUMBER_STRING}"
${RM} "${PRODUCT_FILE}"
echo "SHORT_NAME=${SHORT_NAME}" >> "${LOG_FILE}"
echo "MAJOR_VERSION=${MAJOR_VERSION}" >> "${LOG_FILE}"
echo "MINOR_VERSION=${MINOR_VERSION}" >> "${LOG_FILE}"
echo "POINT_VERSION=${POINT_VERSION}" >> "${LOG_FILE}"
echo "VERSION_QUALIFIER=${VERSION_QUALIFIER}" >> "${LOG_FILE}"
echo "VERSION_STRING=${VERSION_STRING}" >> "${LOG_FILE}"
echo "" >> "${LOG_FILE}"
# Define variables that will be used when sending the e-mail message.
#RECIPIENT="qa@opends.dev.java.net"
RECIPIENT="jeanine.pikus@sun.com"
SENDER="opends@dev.java.net"
SUBJECT="OpenDS Weekly Build Candidate ${VERSION_NUMBER_STRING}"
# Create a new directory to hold the build.
echo "*** Checking Out the Server ***" >> "${LOG_FILE}"
BUILD_DIR="${BUILDS_DIR}/${VERSION_NUMBER_STRING}"
if test -d "${BUILD_DIR}"
then
  echo "ERROR:  Target build directory ${BUILD_DIR} already exists"
  echo "ERROR:  Aborting the weekly build attempt."
  exit 1
fi
echo ${MKDIR} -p "${BUILDS_DIR}/${VERSION_NUMBER_STRING}" >> "${LOG_FILE}"
${MKDIR} -p "${BUILDS_DIR}/${VERSION_NUMBER_STRING}"
echo cd "${BUILDS_DIR}/${VERSION_NUMBER_STRING}" >> "${LOG_FILE}"
cd "${BUILD_DIR}"
echo ${MV} "${LOG_FILE}" "${VERSION_STRING}.log" >> "${LOG_FILE}"
${MV} "${LOG_FILE}" "${VERSION_STRING}.log" && LOG_FILE="${BUILD_DIR}/${VERSION_STRING}.log"
${CHMOD} 0644 "${LOG_FILE}"
echo "LOG_FILE=${LOG_FILE}" >> "${LOG_FILE}"
# Check out the head revision from the repository.
echo ${SVN} checkout -q --non-interactive ${SVN_URL} OpenDS >> "${LOG_FILE}" 2>&1
${SVN} checkout -q --non-interactive ${SVN_URL} OpenDS >> ${LOG_FILE} 2>&1
cd OpenDS
REVISION_NUMBER=`${SVN} info | ${GREP} '^Revision:' | ${AWK} '{print $2}'`
echo "REVISION_NUMBER=${REVISION_NUMBER}" >> "${LOG_FILE}"
echo "" >> "${LOG_FILE}"
# Add information about the checked out revision to the log file.
echo ${SVN} info >> "${LOG_FILE}" 2>&1
${SVN} info >> "${LOG_FILE}" 2>&1
echo "" >> "${LOG_FILE}"
# jp146654 :add path to OpenDMK
cd ${BUILD_DIR}/OpenDS
OLD_BUILDPROP_FILE=build.properties.origin
NEW_BUILDPROP_FILE=build.properties
echo update Opendmk lib path in OpenDS/build.properties>> ${LOG_FILE} 2>&1
echo cp ${NEW_BUILDPROP_FILE} ${NEW_BUILDPROP_FILE}.origin >> ${LOG_FILE} 2>&1
cp ${NEW_BUILDPROP_FILE} ${NEW_BUILDPROP_FILE}.origin
echo add new path   : /export/home/builds/OpenDMK-bin/lib>> ${LOG_FILE} 2>&1
${CAT}  ${OLD_BUILDPROP_FILE} | sed "s/opendmk\.lib\.dir\=/opendmk\.lib\.dir\=\/export\/home\/builds\/OpenDMK-bin\/lib/g" > ${NEW_BUILDPROP_FILE}
echo >> ${LOG_FILE}
echo >> ${LOG_FILE}
# end jp146654
JAVA_HOME=/java/jdk5
export JAVA_HOME
# Perform a build of the server using the "weekly" target.
echo "*** Building the Server ***" >> "${LOG_FILE}"
echo ./build.sh weekly -Dwiki.home=${WIKI_HOME} -DVERSION_QUALIFIER=${VERSION_QUALIFIER} -Ddisable.test.help=true -DMEM=512M >> "${LOG_FILE}" 2>&1
./build.sh weekly -Dwiki.home=${WIKI_HOME} -DVERSION_QUALIFIER=${VERSION_QUALIFIER} -Ddisable.test.help=true -DMEM=512M >> "${LOG_FILE}" 2>&1
if test $? -eq 0
then
  STATUS="Successful"
else
  STATUS="FAILED"
fi
echo "STATUS=${STATUS}" >> "${LOG_FILE}"
echo "" >> "${LOG_FILE}"
echo ./build.sh svr4 -Dwiki.home=${WIKI_HOME} -DVERSION_QUALIFIER=${VERSION_QUALIFIER} -Ddisable.test.help=true -DMEM=512M >> "${LOG_FILE}" 2>&1
./build.sh svr4 -Dwiki.home=${WIKI_HOME} -DVERSION_QUALIFIER=${VERSION_QUALIFIER} -Ddisable.test.help=true -DMEM=512M >> "${LOG_FILE}" 2>&1
if test $? -eq 0
then
  STATUS="Successful"
else
  STATUS="FAILED"
fi
echo "STATUS=${STATUS}" >> "${LOG_FILE}"
echo "" >> "${LOG_FILE}"
# Create the Java Web Start Install Archive.
ADDRESS="www.opends.org"
export ADDRESS
echo "*** Creating Java Web Start Install Archive ***" >> "${LOG_FILE}"
BASE_PATH="${BUILDS_DIR}/${VERSION_NUMBER_STRING}/install"
export BASE_PATH
echo "BASE_PATH=${BASE_PATH}" >> "${LOG_FILE}"
echo resource/webstart/create-webstart-standalone.sh >> "${LOG_FILE}" 2>&1
resource/webstart/create-webstart-standalone.sh  >> "${LOG_FILE}" 2>&1
echo "" >> "${LOG_FILE}"
# Symlink all of the appropriate files into place in the base build directory.
#${LN} -s "${BUILD_DIR}/OpenDS/build/package/${VERSION_STRING}.zip" "${BUILD_DIR}/${VERSION_STRING}.zip"
#${LN} -s "${BUILD_DIR}/OpenDS/build/package/${VERSION_STRING}-DSML.war" "${BUILD_DIR}/${VERSION_STRING}-DSML.war"
#${LN} -s "${BUILD_DIR}/OpenDS/build/src.zip" "${BUILD_DIR}/src.zip"
#${LN} -s "${BUILD_DIR}/OpenDS/build/webstart/install" "${BUILD_DIR}/install"
#${LN} -s "${BUILD_DIR}/OpenDS/build/javadoc" "${BUILD_DIR}/javadoc"
${LN} -s "OpenDS/build/package/${VERSION_STRING}.zip" "${BUILD_DIR}/${VERSION_STRING}.zip"
${LN} -s "OpenDS/build/package/${VERSION_STRING}-DSML.war" "${BUILD_DIR}/${VERSION_STRING}-DSML.war"
${LN} -s "OpenDS/build/src.zip" "${BUILD_DIR}/src.zip"
${LN} -s "OpenDS/build/webstart/install" "${BUILD_DIR}/install"
${LN} -s "OpenDS/build/javadoc" "${BUILD_DIR}/javadoc"
# Create MD5 digests of the appropriate files.
echo "*** Calculating MD5 Digests of Build Files ***" >> "${LOG_FILE}"
${DIGEST} -a md5 "${BUILD_DIR}/OpenDS/build/package/${VERSION_STRING}.zip" > "${BUILD_DIR}/${VERSION_STRING}.zip.md5"
${DIGEST} -a md5 "${BUILD_DIR}/OpenDS/build/package/${VERSION_STRING}-DSML.war" > "${BUILD_DIR}/${VERSION_STRING}-DSML.war.md5"
${DIGEST} -a md5 "${BUILD_DIR}/OpenDS/build/src.zip" > "${BUILD_DIR}/src.zip.md5"
CORE_SERVER_MD5=`${CAT} "${BUILD_DIR}/${VERSION_STRING}.zip.md5"`
DSML_GATEWAY_MD5=`${CAT} "${BUILD_DIR}/${VERSION_STRING}-DSML.war.md5"`
SRC_ZIP_MD5=`${CAT} "${BUILD_DIR}/src.zip.md5"`
echo "CORE_SERVER_MD5=${CORE_SERVER_MD5}" >> "${LOG_FILE}"
echo "DSML_GATEWAY_MD5=${DSML_GATEWAY_MD5}" >> "${LOG_FILE}"
echo "SRC_ZIP_MD5=${SRC_ZIP_MD5}" >> "${LOG_FILE}"
echo "" >> "${LOG_FILE}"
#JPI : don't sv the build number
# Write the build number and revision numbers to text files.
#echo "${BUILD_NUMBER}" > "${BUILD_DIR}/${BUILD_NUMBER_FILE}"
#echo "${REVISION_NUMBER}" > "${BUILD_DIR}/${REVISION_NUMBER_FILE}"
#echo "${VERSION_NUMBER_STRING}" > "${BUILD_DIR}/${VERSION_NUMBER_FILE}"
# Get a log of changes since the last build.
echo "*** Getting changelog data ***" >> "${LOG_FILE}"
LAST_REV_PLUS_ONE=`echo "${LAST_REVISION_NUMBER}+1" | bc`
echo ${SVN} log -r ${LAST_REV_PLUS_ONE}:${REVISION_NUMBER} >> "${LOG_FILE}" 2>&1
${SVN} log -r ${LAST_REV_PLUS_ONE}:${REVISION_NUMBER} > "${BUILD_DIR}/changes.log" 2>&1
echo "" >> "${LOG_FILE}"
#If this is a sanity check, exit
if ${TEST} ${SANITY} -eq 1
then
  echo "Sanity check done."
  exit 1
fi
# Create an index.html in the build directory.
${CAT} > "${BUILD_DIR}/index.html" <<ENDOFHTML
<!DOCTYPE html PUBLIC "-//Tigris//DTD XHTML 1.0 Transitional//EN" "http://style.tigris.org/nonav/tigris_transitional.dtd">
<HTML>
  <HEAD>
    <TITLE>OpenDS Weekly Build ${VERSION_NUMBER_STRING}</TITLE>
    <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">
    <LINK REL="SHORTCUT ICON" HREF="/public/images/opends_favicon.gif">
    <LINK REL="stylesheet" HREF="/public/css/opends.css" TYPE="text/css">
    <STYLE>
      tr { text-align:left; vertical-align:top; padding:5px 10px; width:180px; background-color:#f5f5f5 }
    </STYLE>
  </HEAD>
  <BODY>
    <TABLE BORDER="0" CELLPADDING="10">
      <TR STYLE="background-color:#ffffff">
        <TD VALIGN="MIDDLE">
          <IMG SRC="/images/opends_logo_welcome.png" ALT="OpenDS Logo" WIDTH="197" HEIGHT="57">
        </TD>
        <TD VALIGN="MIDDLE">
          <H1>OpenDS Weekly Build ${VERSION_NUMBER_STRING}</H1>
        </TD>
      </TR>
      <TR>
        <TD>Weekly Build Number</TD>
        <TD>${BUILD_NUMBER}</TD>
      </TR>
      <TR>
        <TD>Subversion Revision Number</TD>
        <TD>${REVISION_NUMBER}</TD>
      </TR>
      <TR>
        <TD>QuickSetup Installer</TD>
        <TD><A HREF="install/QuickSetup.jnlp">install/QuickSetup.jnlp</A></TD>
      </TR>
      <TR>
        <TD>Core Server Zip File</TD>
        <TD><A HREF="${VERSION_STRING}.zip">${VERSION_STRING}.zip</A></TD>
      </TR>
      <TR>
        <TD>Core Server MD5 Checksum</TD>
        <TD>${CORE_SERVER_MD5}</TD>
      </TR>
      <TR>
        <TD>DSML Gateway WAR File</TD>
        <TD><A HREF="${VERSION_STRING}-DSML.war">${VERSION_STRING}-DSML.war</A></TD>
      </TR>
      <TR>
        <TD>DSML Gateway MD5 Checksum</TD>
        <TD>${DSML_GATEWAY_MD5}</TD>
      </TR>
      <TR>
        <TD>src.zip Server Source Archive</TD>
        <TD><A HREF="src.zip">src.zip</A></TD>
      </TR>
      <TR>
        <TD>src.zip MD5 Checksum</TD>
        <TD>${SRC_ZIP_MD5}</TD>
      </TR>
      <TR>
        <TD>Javadoc Documentation</TD>
        <TD><A HREF="javadoc/index.html">javadoc/index.html</A></TD>
      </TR>
      <TR>
        <TD>Changelog</TD>
        <TD><A HREF="changes.log">changes.log</A></TD>
      </TR>
      <TR>
        <TD>Build Log</TD>
        <TD><A HREF="${VERSION_STRING}.log">${VERSION_STRING}.log</A></TD>
      </TR>
    </TABLE>
    <BR>
    <A HREF="/promoted-builds/">See All Weekly Builds</A><BR>
    <A HREF="http://www.opends.org/">http://www.opends.org/</A><BR>
    <!-- Omniture -->
    <script src="https://www.opends.org/wiki/scripts/s_code_remote.js" language="JavaScript"/>
  </BODY>
</HTML>
ENDOFHTML
# Create a "candidate" symbolic link to this build.
${RM} -f "${BUILDS_DIR}/candidate"
${LN} -s "${BUILD_DIR}" "${BUILDS_DIR}/candidate"
# Create a temporary file to use for the e-mail message.
BODY_FILE=`${MKTEMP}`
echo "A new OpenDS weekly build candidate is available at" > ${BODY_FILE}
#echo "http://www2.opends.org/promoted-builds/candidate/" >> ${BODY_FILE}
echo "http://www.opends.org/${BUILDS_DIR}/candidate/" >> ${BODY_FILE}
# Send the message and delete the temporary file.
${SENDMAIL} --from "${SENDER}" --to "${RECIPIENT}" --subject "${STATUS} ${SUBJECT}" \
            --body "${BODY_FILE}" --attach "${BUILD_DIR}/index.html" \
            --attach "${LOG_FILE}"
${RM} "${BODY_FILE}"
re-scripts/bin/branch_1.2/rtm-build.sh
New file
@@ -0,0 +1,390 @@
#!/bin/sh
# Define the Java versions that we will use to perform the build.
# These values should correspond to subdirectories below /java
#JAVA_VERSIONS="jdk5 jdk6"
# Define absolute paths to all commands that we will use in this script.
AWK="/usr/bin/awk"
BASENAME=/usr/bin/basename
CAT="/usr/bin/cat"
CHMOD="/usr/bin/chmod"
DATE="/usr/bin/date"
DIGEST="/usr/bin/digest"
DIRNAME="/usr/bin/dirname"
GREP="/usr/bin/grep"
LN="/usr/bin/ln"
MKDIR="/usr/bin/mkdir"
MKTEMP="/usr/bin/mktemp"
MV="/usr/bin/mv"
PS="/usr/bin/ps"
RM="/usr/bin/rm"
SVN="/opt/csw/bin/svn"
SENDMAIL="/export/home/builds/bin/send-mail.sh"
TEST=/usr/bin/test
#If an argument is provided, let's assume we run a sanity check (no mail)
if ${TEST} $# -gt 0
then
  SANITY=1
else
  SANITY=0
fi
# Change to the directory that contains this script.
cd `${DIRNAME} $0`
# Explicitly set a minimal PATH so we don't run anything unexpected.
PATH="/bin:/usr/bin"
export PATH
# Sanity checks
# Removes directory that might be still there if test failed before @AfterClass
# that normaly performs the cleanup
FSCACHE=/tmp/OpenDS.FSCache
if ${TEST} -d FSCACHE
then
  ${RM} -rf ${FSCACHE}
fi
# Checks that no weekly build is running
${PS} | grep `${BASENAME} $0`
if ${TEST} $? -eq 0
  then
  echo "This script is already running. Aborting..."
  exit 1
fi
# Checks that no daily build is running
${PS} | grep daily\.sh
if ${TEST} $? -eq 0
  then
  echo "The daily script is currently running. Aborting..."
  exit 1
fi
# Define paths that will be used during this script.
SCRIPT_DIR=`pwd`
BUILDS_DIR=/promoted-builds/
#BUILDS_DIR=/promoted-builds ==> JPI : a tester sans le / a la fin
WIKI_HOME=https://docs.opends.org/1.2
# Define the URL to use to access the repository.
SVN_URL=file:///svn-mirror/branches/b1.2/
# Start creating a log file that will be used to record progress.
LOG_FILE=`${MKTEMP}`
BUILD_DATE=`${DATE} '+%Y%m%d%H%M%S'`
echo "Beginning weekly build processing at ${BUILD_DATE}" > "${LOG_FILE}"
echo "" >> "${LOG_FILE}"
# Define paths to all directories that we will access in this script.
# These should all be absolute paths.
BUILD_NUMBER_FILE="buildnumber.txt"
REVISION_NUMBER_FILE="revision.txt"
VERSION_NUMBER_FILE="version.txt"
# Look at what is currently the latest weekly build to get information we need
# to bootstrap this build.
LAST_BUILD_DIR="${BUILDS_DIR_L}/latest"
#JPI
BUILD_NUMBER=""
BUILD_NUMBER_STR=""
VERSION_QUALIFIER="RC2"
VERSION_QUALIFIER=""
echo "*** Build Number Information ***" >> "${LOG_FILE}"
echo "LAST_BUILD_DIR=${LAST_BUILD_DIR}" >> "${LOG_FILE}"
echo "" >> "${LOG_FILE}"
# Define information that we will use to access the repository.
PRODUCT_URL="${SVN_URL}/PRODUCT"
# Parse the contents of the PRODUCT file to get the version information.
echo "*** Product Version Information ***" >> "${LOG_FILE}"
PRODUCT_FILE=`${MKTEMP}`
echo ${SVN} cat --non-interactive "${PRODUCT_URL}" \> "${PRODUCT_FILE}" >> "${LOG_FILE}"
${SVN} cat --non-interactive "${PRODUCT_URL}" > "${PRODUCT_FILE}"
SHORT_NAME=`${GREP} SHORT_NAME "${PRODUCT_FILE}" | cut -d= -f2`
MAJOR_VERSION=`${GREP} MAJOR_VERSION "${PRODUCT_FILE}" | cut -d= -f2`
MINOR_VERSION=`${GREP} MINOR_VERSION "${PRODUCT_FILE}" | cut -d= -f2`
POINT_VERSION=`${GREP} POINT_VERSION "${PRODUCT_FILE}" | cut -d= -f2`
#VERSION_QUALIFIER=`${GREP} VERSION_QUALIFIER "${PRODUCT_FILE}" | cut -d= -f2`
#JPI
VERSION_NUMBER_STRING="${MAJOR_VERSION}.${MINOR_VERSION}.${POINT_VERSION}${VERSION_QUALIFIER}"
VERSION_STRING="${SHORT_NAME}-${VERSION_NUMBER_STRING}"
${RM} "${PRODUCT_FILE}"
echo "SHORT_NAME=${SHORT_NAME}" >> "${LOG_FILE}"
echo "MAJOR_VERSION=${MAJOR_VERSION}" >> "${LOG_FILE}"
echo "MINOR_VERSION=${MINOR_VERSION}" >> "${LOG_FILE}"
echo "POINT_VERSION=${POINT_VERSION}" >> "${LOG_FILE}"
echo "VERSION_QUALIFIER=${VERSION_QUALIFIER}" >> "${LOG_FILE}"
echo "VERSION_STRING=${VERSION_STRING}" >> "${LOG_FILE}"
echo "" >> "${LOG_FILE}"
# Define variables that will be used when sending the e-mail message.
#RECIPIENT="qa@opends.dev.java.net"
RECIPIENT="jeanine.pikus@sun.com"
SENDER="opends@dev.java.net"
SUBJECT="OpenDS Weekly Build Candidate ${VERSION_NUMBER_STRING}"
# Create a new directory to hold the build.
echo "*** Checking Out the Server ***" >> "${LOG_FILE}"
BUILD_DIR="${BUILDS_DIR}/${VERSION_NUMBER_STRING}"
if test -d "${BUILD_DIR}"
then
  echo "ERROR:  Target build directory ${BUILD_DIR} already exists"
  echo "ERROR:  Aborting the weekly build attempt."
  exit 1
fi
echo ${MKDIR} -p "${BUILDS_DIR}/${VERSION_NUMBER_STRING}" >> "${LOG_FILE}"
${MKDIR} -p "${BUILDS_DIR}/${VERSION_NUMBER_STRING}"
echo cd "${BUILDS_DIR}/${VERSION_NUMBER_STRING}" >> "${LOG_FILE}"
cd "${BUILD_DIR}"
echo ${MV} "${LOG_FILE}" "${VERSION_STRING}.log" >> "${LOG_FILE}"
${MV} "${LOG_FILE}" "${VERSION_STRING}.log" && LOG_FILE="${BUILD_DIR}/${VERSION_STRING}.log"
${CHMOD} 0644 "${LOG_FILE}"
echo "LOG_FILE=${LOG_FILE}" >> "${LOG_FILE}"
# Check out the head revision from the repository.
# JPI : update ??? with svn revision of 1.2.RC2
echo ${SVN} checkout -r 4920 -q --non-interactive ${SVN_URL} OpenDS >> "${LOG_FILE}" 2>&1
${SVN} checkout -r 4920 -q --non-interactive ${SVN_URL} OpenDS >> ${LOG_FILE} 2>&1
cd OpenDS
REVISION_NUMBER=`${SVN} info | ${GREP} '^Revision:' | ${AWK} '{print $2}'`
echo "REVISION_NUMBER=${REVISION_NUMBER}" >> "${LOG_FILE}"
echo "" >> "${LOG_FILE}"
# Add information about the checked out revision to the log file.
echo ${SVN} info >> "${LOG_FILE}" 2>&1
${SVN} info >> "${LOG_FILE}" 2>&1
echo "" >> "${LOG_FILE}"
# jp146654 :add path to OpenDMK
cd ${BUILD_DIR}/OpenDS
OLD_BUILDPROP_FILE=build.properties.origin
NEW_BUILDPROP_FILE=build.properties
echo update Opendmk lib path in OpenDS/build.properties>> ${LOG_FILE} 2>&1
echo cp ${NEW_BUILDPROP_FILE} ${NEW_BUILDPROP_FILE}.origin >> ${LOG_FILE} 2>&1
cp ${NEW_BUILDPROP_FILE} ${NEW_BUILDPROP_FILE}.origin
echo add new path   : /export/home/builds/OpenDMK-bin/lib>> ${LOG_FILE} 2>&1
${CAT}  ${OLD_BUILDPROP_FILE} | sed "s/opendmk\.lib\.dir\=/opendmk\.lib\.dir\=\/export\/home\/builds\/OpenDMK-bin\/lib/g" > ${NEW_BUILDPROP_FILE}
echo >> ${LOG_FILE}
echo >> ${LOG_FILE}
# end jp146654
JAVA_HOME=/java/jdk5
export JAVA_HOME
# Perform a build of the server using the "weekly" target.
echo "*** Building the Server ***" >> "${LOG_FILE}"
echo ./build.sh weekly -Dwiki.home=${WIKI_HOME} -DVERSION_QUALIFIER=${VERSION_QUALIFIER} -Ddisable.test.help=true -DMEM=512M >> "${LOG_FILE}" 2>&1
./build.sh weekly -Dwiki.home=${WIKI_HOME} -DVERSION_QUALIFIER=${VERSION_QUALIFIER} -Ddisable.test.help=true -DMEM=512M >> "${LOG_FILE}" 2>&1
if test $? -eq 0
then
  STATUS="Successful"
else
  STATUS="FAILED"
fi
echo "STATUS=${STATUS}" >> "${LOG_FILE}"
echo "" >> "${LOG_FILE}"
echo ./build.sh svr4 -Dwiki.home=${WIKI_HOME} -DVERSION_QUALIFIER=${VERSION_QUALIFIER} -Ddisable.test.help=true -DMEM=512M >> "${LOG_FILE}" 2>&1
./build.sh svr4 -Dwiki.home=${WIKI_HOME} -DVERSION_QUALIFIER=${VERSION_QUALIFIER} -Ddisable.test.help=true -DMEM=512M >> "${LOG_FILE}" 2>&1
if test $? -eq 0
then
  STATUS="Successful"
else
  STATUS="FAILED"
fi
echo "STATUS=${STATUS}" >> "${LOG_FILE}"
echo "" >> "${LOG_FILE}"
# Create the Java Web Start Install Archive.
ADDRESS="www.opends.org"
export ADDRESS
echo "*** Creating Java Web Start Install Archive ***" >> "${LOG_FILE}"
BASE_PATH="${BUILDS_DIR}/${VERSION_NUMBER_STRING}/install"
export BASE_PATH
echo "BASE_PATH=${BASE_PATH}" >> "${LOG_FILE}"
echo resource/webstart/create-webstart-standalone.sh >> "${LOG_FILE}" 2>&1
resource/webstart/create-webstart-standalone.sh  >> "${LOG_FILE}" 2>&1
echo "" >> "${LOG_FILE}"
# Symlink all of the appropriate files into place in the base build directory.
#${LN} -s "${BUILD_DIR}/OpenDS/build/package/${VERSION_STRING}.zip" "${BUILD_DIR}/${VERSION_STRING}.zip"
#${LN} -s "${BUILD_DIR}/OpenDS/build/package/${VERSION_STRING}-DSML.war" "${BUILD_DIR}/${VERSION_STRING}-DSML.war"
#${LN} -s "${BUILD_DIR}/OpenDS/build/src.zip" "${BUILD_DIR}/src.zip"
#${LN} -s "${BUILD_DIR}/OpenDS/build/webstart/install" "${BUILD_DIR}/install"
#${LN} -s "${BUILD_DIR}/OpenDS/build/javadoc" "${BUILD_DIR}/javadoc"
${LN} -s "OpenDS/build/package/${VERSION_STRING}.zip" "${BUILD_DIR}/${VERSION_STRING}.zip"
${LN} -s "OpenDS/build/package/${VERSION_STRING}-DSML.war" "${BUILD_DIR}/${VERSION_STRING}-DSML.war"
${LN} -s "OpenDS/build/src.zip" "${BUILD_DIR}/src.zip"
${LN} -s "OpenDS/build/webstart/install" "${BUILD_DIR}/install"
${LN} -s "OpenDS/build/javadoc" "${BUILD_DIR}/javadoc"
# Create MD5 digests of the appropriate files.
echo "*** Calculating MD5 Digests of Build Files ***" >> "${LOG_FILE}"
${DIGEST} -a md5 "${BUILD_DIR}/OpenDS/build/package/${VERSION_STRING}.zip" > "${BUILD_DIR}/${VERSION_STRING}.zip.md5"
${DIGEST} -a md5 "${BUILD_DIR}/OpenDS/build/package/${VERSION_STRING}-DSML.war" > "${BUILD_DIR}/${VERSION_STRING}-DSML.war.md5"
${DIGEST} -a md5 "${BUILD_DIR}/OpenDS/build/src.zip" > "${BUILD_DIR}/src.zip.md5"
CORE_SERVER_MD5=`${CAT} "${BUILD_DIR}/${VERSION_STRING}.zip.md5"`
DSML_GATEWAY_MD5=`${CAT} "${BUILD_DIR}/${VERSION_STRING}-DSML.war.md5"`
SRC_ZIP_MD5=`${CAT} "${BUILD_DIR}/src.zip.md5"`
echo "CORE_SERVER_MD5=${CORE_SERVER_MD5}" >> "${LOG_FILE}"
echo "DSML_GATEWAY_MD5=${DSML_GATEWAY_MD5}" >> "${LOG_FILE}"
echo "SRC_ZIP_MD5=${SRC_ZIP_MD5}" >> "${LOG_FILE}"
echo "" >> "${LOG_FILE}"
#JPI : don't sv the build number
# Write the build number and revision numbers to text files.
#echo "${BUILD_NUMBER}" > "${BUILD_DIR}/${BUILD_NUMBER_FILE}"
#echo "${REVISION_NUMBER}" > "${BUILD_DIR}/${REVISION_NUMBER_FILE}"
#echo "${VERSION_NUMBER_STRING}" > "${BUILD_DIR}/${VERSION_NUMBER_FILE}"
# Get a log of changes since the last build.
echo "*** Getting changelog data ***" >> "${LOG_FILE}"
#JPI  a mettre a jour pour RC2
#LAST_REVISION_NUMBER=4709
#done
LAST_REVISION_NUMBER=4762
LAST_REV_PLUS_ONE=`echo "${LAST_REVISION_NUMBER}+1" | bc`
echo ${SVN} log -r ${LAST_REV_PLUS_ONE}:${REVISION_NUMBER} >> "${LOG_FILE}" 2>&1
${SVN} log -r ${LAST_REV_PLUS_ONE}:${REVISION_NUMBER} > "${BUILD_DIR}/changes.log" 2>&1
echo "" >> "${LOG_FILE}"
#If this is a sanity check, exit
if ${TEST} ${SANITY} -eq 1
then
  echo "Sanity check done."
  exit 1
fi
# Create an index.html in the build directory.
${CAT} > "${BUILD_DIR}/index.html" <<ENDOFHTML
<!DOCTYPE html PUBLIC "-//Tigris//DTD XHTML 1.0 Transitional//EN" "http://style.tigris.org/nonav/tigris_transitional.dtd">
<HTML>
  <HEAD>
    <TITLE>OpenDS Weekly Build ${VERSION_NUMBER_STRING}</TITLE>
    <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">
    <LINK REL="SHORTCUT ICON" HREF="/public/images/opends_favicon.gif">
    <LINK REL="stylesheet" HREF="/public/css/opends.css" TYPE="text/css">
    <STYLE>
      tr { text-align:left; vertical-align:top; padding:5px 10px; width:180px; background-color:#f5f5f5 }
    </STYLE>
  </HEAD>
  <BODY>
    <TABLE BORDER="0" CELLPADDING="10">
      <TR STYLE="background-color:#ffffff">
        <TD VALIGN="MIDDLE">
          <IMG SRC="/images/opends_logo_welcome.png" ALT="OpenDS Logo" WIDTH="197" HEIGHT="57">
        </TD>
        <TD VALIGN="MIDDLE">
          <H1>OpenDS Weekly Build ${VERSION_NUMBER_STRING}</H1>
        </TD>
      </TR>
      <TR>
        <TD>Weekly Build Number</TD>
        <TD>${BUILD_NUMBER}</TD>
      </TR>
      <TR>
        <TD>Subversion Revision Number</TD>
        <TD>${REVISION_NUMBER}</TD>
      </TR>
      <TR>
        <TD>QuickSetup Installer</TD>
        <TD><A HREF="install/QuickSetup.jnlp">install/QuickSetup.jnlp</A></TD>
      </TR>
      <TR>
        <TD>Core Server Zip File</TD>
        <TD><A HREF="${VERSION_STRING}.zip">${VERSION_STRING}.zip</A></TD>
      </TR>
      <TR>
        <TD>Core Server MD5 Checksum</TD>
        <TD>${CORE_SERVER_MD5}</TD>
      </TR>
      <TR>
        <TD>DSML Gateway WAR File</TD>
        <TD><A HREF="${VERSION_STRING}-DSML.war">${VERSION_STRING}-DSML.war</A></TD>
      </TR>
      <TR>
        <TD>DSML Gateway MD5 Checksum</TD>
        <TD>${DSML_GATEWAY_MD5}</TD>
      </TR>
      <TR>
        <TD>src.zip Server Source Archive</TD>
        <TD><A HREF="src.zip">src.zip</A></TD>
      </TR>
      <TR>
        <TD>src.zip MD5 Checksum</TD>
        <TD>${SRC_ZIP_MD5}</TD>
      </TR>
      <TR>
        <TD>Javadoc Documentation</TD>
        <TD><A HREF="javadoc/index.html">javadoc/index.html</A></TD>
      </TR>
      <TR>
        <TD>Changelog</TD>
        <TD><A HREF="changes.log">changes.log</A></TD>
      </TR>
      <TR>
        <TD>Build Log</TD>
        <TD><A HREF="${VERSION_STRING}.log">${VERSION_STRING}.log</A></TD>
      </TR>
    </TABLE>
    <BR>
    <A HREF="/promoted-builds/">See All Weekly Builds</A><BR>
    <A HREF="http://www.opends.org/">http://www.opends.org/</A><BR>
    <!-- Omniture -->
    <script src="https://www.opends.org/wiki/scripts/s_code_remote.js" language="JavaScript"/>
  </BODY>
</HTML>
ENDOFHTML
# Create a "candidate" symbolic link to this build.
#JPI
#${RM} -f "${BUILDS_DIR}/candidate"
#${LN} -s "${BUILD_DIR}" "${BUILDS_DIR}/candidate"
# Create a temporary file to use for the e-mail message.
BODY_FILE=`${MKTEMP}`
echo "A new OpenDS weekly build candidate is available at" > ${BODY_FILE}
#echo "http://www2.opends.org/promoted-builds/candidate/" >> ${BODY_FILE}
echo "http://www.opends.org/${BUILDS_DIR}/candidate/" >> ${BODY_FILE}
# Send the message and delete the temporary file.
${SENDMAIL} --from "${SENDER}" --to "${RECIPIENT}" --subject "${STATUS} ${SUBJECT}" \
            --body "${BODY_FILE}" --attach "${BUILD_DIR}/index.html" \
            --attach "${LOG_FILE}"
${RM} "${BODY_FILE}"
re-scripts/bin/branch_1.2/send-mail.sh
New file
@@ -0,0 +1,11 @@
#!/bin/sh
JAVA_HOME=/java/jdk6
export JAVA_HOME
SCRIPT_DIR=`dirname ${0}`
CLASSPATH=${SCRIPT_DIR}/lib/OpenDS.jar:${SCRIPT_DIR}/lib/mail.jar:${SCRIPT_DIR}/lib/activation.jar
export CLASSPATH
${JAVA_HOME}/bin/java org.opends.server.util.EMailMessage --host global-zone "${@}"
re-scripts/bin/branch_1.2/weekly-build.sh
New file
@@ -0,0 +1,377 @@
#!/bin/sh
# Define the Java versions that we will use to perform the build.
# These values should correspond to subdirectories below /java
#JAVA_VERSIONS="jdk5 jdk6"
# Define absolute paths to all commands that we will use in this script.
AWK="/usr/bin/awk"
BASENAME=/usr/bin/basename
CAT="/usr/bin/cat"
CHMOD="/usr/bin/chmod"
DATE="/usr/bin/date"
DIGEST="/usr/bin/digest"
DIRNAME="/usr/bin/dirname"
GREP="/usr/bin/grep"
LN="/usr/bin/ln"
MKDIR="/usr/bin/mkdir"
MKTEMP="/usr/bin/mktemp"
MV="/usr/bin/mv"
PS="/usr/bin/ps"
RM="/usr/bin/rm"
SVN="/opt/csw/bin/svn"
SENDMAIL="/export/home/builds/bin/send-mail.sh"
TEST=/usr/bin/test
#If an argument is provided, let's assume we run a sanity check (no mail)
if ${TEST} $# -gt 0
then
  SANITY=1
else
  SANITY=0
fi
# Change to the directory that contains this script.
cd `${DIRNAME} $0`
# Explicitly set a minimal PATH so we don't run anything unexpected.
PATH="/bin:/usr/bin"
export PATH
# Sanity checks
# Removes directory that might be still there if test failed before @AfterClass
# that normaly performs the cleanup
FSCACHE=/tmp/OpenDS.FSCache
if ${TEST} -d FSCACHE
then
  ${RM} -rf ${FSCACHE}
fi
# Checks that no weekly build is running
${PS} | grep `${BASENAME} $0`
if ${TEST} $? -eq 0
  then
  echo "This script is already running. Aborting..."
  exit 1
fi
# Checks that no daily build is running
${PS} | grep daily\.sh
if ${TEST} $? -eq 0
  then
  echo "The daily script is currently running. Aborting..."
  exit 1
fi
# Define paths that will be used during this script.
SCRIPT_DIR=`pwd`
BUILDS_DIR=/promoted-builds/1.2
# Define the URL to use to access the repository.
SVN_URL=file:///svn-mirror/branches/b1.2/
# Start creating a log file that will be used to record progress.
LOG_FILE=`${MKTEMP}`
BUILD_DATE=`${DATE} '+%Y%m%d%H%M%S'`
echo "Beginning weekly build processing at ${BUILD_DATE}" > "${LOG_FILE}"
echo "" >> "${LOG_FILE}"
# Define paths to all directories that we will access in this script.
# These should all be absolute paths.
BUILD_NUMBER_FILE="buildnumber.txt"
REVISION_NUMBER_FILE="revision.txt"
VERSION_NUMBER_FILE="version.txt"
# Look at what is currently the latest weekly build to get information we need
# to bootstrap this build.
LAST_BUILD_DIR="${BUILDS_DIR}/latest"
LAST_BUILD_NUMBER=`cat ${LAST_BUILD_DIR}/${BUILD_NUMBER_FILE}`
LAST_REVISION_NUMBER=`cat ${LAST_BUILD_DIR}/${REVISION_NUMBER_FILE}`
BUILD_NUMBER=`echo "${LAST_BUILD_NUMBER} + 1" | bc`
if test ${BUILD_NUMBER} -le 9
then
  BUILD_NUMBER_STR="00${BUILD_NUMBER}"
else
  if test ${BUILD_NUMBER} -le 99
  then
    BUILD_NUMBER_STR="0${BUILD_NUMBER}"
  else
    BUILD_NUMBER_STR="${BUILD_NUMBER}"
  fi
fi
echo "*** Build Number Information ***" >> "${LOG_FILE}"
echo "LAST_BUILD_DIR=${LAST_BUILD_DIR}" >> "${LOG_FILE}"
echo "LAST_BUILD_NUMBER=${LAST_BUILD_NUMBER}" >> "${LOG_FILE}"
echo "LAST_REVISION_NUMBER=${LAST_REVISION_NUMBER}" >> "${LOG_FILE}"
echo "BUILD_NUMBER=${BUILD_NUMBER}" >> "${LOG_FILE}"
echo "BUILD_NUMBER_STR=${BUILD_NUMBER_STR}" >> "${LOG_FILE}"
echo "" >> "${LOG_FILE}"
# Define information that we will use to access the repository.
PRODUCT_URL="${SVN_URL}/PRODUCT"
# Parse the contents of the PRODUCT file to get the version information.
echo "*** Product Version Information ***" >> "${LOG_FILE}"
PRODUCT_FILE=`${MKTEMP}`
echo ${SVN} cat --non-interactive "${PRODUCT_URL}" \> "${PRODUCT_FILE}" >> "${LOG_FILE}"
${SVN} cat --non-interactive "${PRODUCT_URL}" > "${PRODUCT_FILE}"
SHORT_NAME=`${GREP} SHORT_NAME "${PRODUCT_FILE}" | cut -d= -f2`
MAJOR_VERSION=`${GREP} MAJOR_VERSION "${PRODUCT_FILE}" | cut -d= -f2`
MINOR_VERSION=`${GREP} MINOR_VERSION "${PRODUCT_FILE}" | cut -d= -f2`
POINT_VERSION=`${GREP} POINT_VERSION "${PRODUCT_FILE}" | cut -d= -f2`
VERSION_QUALIFIER=`${GREP} VERSION_QUALIFIER "${PRODUCT_FILE}" | cut -d= -f2`
VERSION_NUMBER_STRING="${MAJOR_VERSION}.${MINOR_VERSION}.${POINT_VERSION}${VERSION_QUALIFIER}-build${BUILD_NUMBER_STR}"
VERSION_STRING="${SHORT_NAME}-${VERSION_NUMBER_STRING}"
${RM} "${PRODUCT_FILE}"
echo "SHORT_NAME=${SHORT_NAME}" >> "${LOG_FILE}"
echo "MAJOR_VERSION=${MAJOR_VERSION}" >> "${LOG_FILE}"
echo "MINOR_VERSION=${MINOR_VERSION}" >> "${LOG_FILE}"
echo "POINT_VERSION=${POINT_VERSION}" >> "${LOG_FILE}"
echo "VERSION_QUALIFIER=${VERSION_QUALIFIER}" >> "${LOG_FILE}"
echo "VERSION_STRING=${VERSION_STRING}" >> "${LOG_FILE}"
echo "" >> "${LOG_FILE}"
# Define variables that will be used when sending the e-mail message.
#RECIPIENT="qa@opends.dev.java.net"
RECIPIENT="jeanine.pikus@sun.com,Carole.Hebrard@Sun.COM"
SENDER="opends@dev.java.net"
SUBJECT="OpenDS Weekly Build Candidate ${VERSION_NUMBER_STRING}"
# Create a new directory to hold the build.
echo "*** Checking Out the Server ***" >> "${LOG_FILE}"
BUILD_DIR="${BUILDS_DIR}/${VERSION_NUMBER_STRING}"
if test -d "${BUILD_DIR}"
then
  echo "ERROR:  Target build directory ${BUILD_DIR} already exists"
  echo "ERROR:  Aborting the weekly build attempt."
  exit 1
fi
echo ${MKDIR} -p "${BUILDS_DIR}/${VERSION_NUMBER_STRING}" >> "${LOG_FILE}"
${MKDIR} -p "${BUILDS_DIR}/${VERSION_NUMBER_STRING}"
echo cd "${BUILDS_DIR}/${VERSION_NUMBER_STRING}" >> "${LOG_FILE}"
cd "${BUILD_DIR}"
echo ${MV} "${LOG_FILE}" "${VERSION_STRING}.log" >> "${LOG_FILE}"
${MV} "${LOG_FILE}" "${VERSION_STRING}.log" && LOG_FILE="${BUILD_DIR}/${VERSION_STRING}.log"
${CHMOD} 0644 "${LOG_FILE}"
echo "LOG_FILE=${LOG_FILE}" >> "${LOG_FILE}"
# Check out the head revision from the repository.
echo ${SVN} checkout -q --non-interactive ${SVN_URL} OpenDS >> "${LOG_FILE}" 2>&1
${SVN} checkout -q --non-interactive ${SVN_URL} OpenDS >> ${LOG_FILE} 2>&1
cd OpenDS
REVISION_NUMBER=`${SVN} info | ${GREP} '^Revision:' | ${AWK} '{print $2}'`
echo "REVISION_NUMBER=${REVISION_NUMBER}" >> "${LOG_FILE}"
echo "" >> "${LOG_FILE}"
# Add information about the checked out revision to the log file.
echo ${SVN} info >> "${LOG_FILE}" 2>&1
${SVN} info >> "${LOG_FILE}" 2>&1
echo "" >> "${LOG_FILE}"
# jp146654 :add path to OpenDMK
cd ${BUILD_DIR}/OpenDS
OLD_BUILDPROP_FILE=build.properties.origin
NEW_BUILDPROP_FILE=build.properties
echo update Opendmk lib path in OpenDS/build.properties>> ${LOG_FILE} 2>&1
echo cp ${NEW_BUILDPROP_FILE} ${NEW_BUILDPROP_FILE}.origin >> ${LOG_FILE} 2>&1
cp ${NEW_BUILDPROP_FILE} ${NEW_BUILDPROP_FILE}.origin
echo add new path   : /export/home/builds/OpenDMK-bin/lib>> ${LOG_FILE} 2>&1
${CAT}  ${OLD_BUILDPROP_FILE} | sed "s/opendmk\.lib\.dir\=/opendmk\.lib\.dir\=\/export\/home\/builds\/OpenDMK-bin\/lib/g" > ${NEW_BUILDPROP_FILE}
echo >> ${LOG_FILE}
echo >> ${LOG_FILE}
# end jp146654
JAVA_HOME=/java/jdk5
export JAVA_HOME
# Perform a build of the server using the "weekly" target.
echo "*** Building the Server ***" >> "${LOG_FILE}"
echo ./build.sh weekly svr4 -DBUILD_NUMBER=${BUILD_NUMBER} -Ddisable.test.help=true -DMEM=512M >> "${LOG_FILE}" 2>&1
./build.sh weekly svr4 -DBUILD_NUMBER=${BUILD_NUMBER} -Ddisable.test.help=true -DMEM=512M >> "${LOG_FILE}" 2>&1
if test $? -eq 0
then
  STATUS="Successful"
else
  STATUS="FAILED"
fi
echo "STATUS=${STATUS}" >> "${LOG_FILE}"
echo "" >> "${LOG_FILE}"
# Create the Java Web Start Install Archive.
ADDRESS="www.opends.org"
export ADDRESS
echo "*** Creating Java Web Start Install Archive ***" >> "${LOG_FILE}"
BASE_PATH="/promoted-builds/${VERSION_NUMBER_STRING}/install"
export BASE_PATH
echo "BASE_PATH=${BASE_PATH}" >> "${LOG_FILE}"
echo resource/webstart/create-webstart-standalone.sh >> "${LOG_FILE}" 2>&1
resource/webstart/create-webstart-standalone.sh  >> "${LOG_FILE}" 2>&1
echo "" >> "${LOG_FILE}"
# Symlink all of the appropriate files into place in the base build directory.
#${LN} -s "${BUILD_DIR}/OpenDS/build/package/${VERSION_STRING}.zip" "${BUILD_DIR}/${VERSION_STRING}.zip"
#${LN} -s "${BUILD_DIR}/OpenDS/build/package/${VERSION_STRING}-DSML.war" "${BUILD_DIR}/${VERSION_STRING}-DSML.war"
#${LN} -s "${BUILD_DIR}/OpenDS/build/src.zip" "${BUILD_DIR}/src.zip"
#${LN} -s "${BUILD_DIR}/OpenDS/build/webstart/install" "${BUILD_DIR}/install"
#${LN} -s "${BUILD_DIR}/OpenDS/build/javadoc" "${BUILD_DIR}/javadoc"
${LN} -s "OpenDS/build/package/${VERSION_STRING}.zip" "${BUILD_DIR}/${VERSION_STRING}.zip"
${LN} -s "OpenDS/build/package/${VERSION_STRING}-DSML.war" "${BUILD_DIR}/${VERSION_STRING}-DSML.war"
${LN} -s "OpenDS/build/src.zip" "${BUILD_DIR}/src.zip"
${LN} -s "OpenDS/build/webstart/install" "${BUILD_DIR}/install"
${LN} -s "OpenDS/build/javadoc" "${BUILD_DIR}/javadoc"
# Create MD5 digests of the appropriate files.
echo "*** Calculating MD5 Digests of Build Files ***" >> "${LOG_FILE}"
${DIGEST} -a md5 "${BUILD_DIR}/OpenDS/build/package/${VERSION_STRING}.zip" > "${BUILD_DIR}/${VERSION_STRING}.zip.md5"
${DIGEST} -a md5 "${BUILD_DIR}/OpenDS/build/package/${VERSION_STRING}-DSML.war" > "${BUILD_DIR}/${VERSION_STRING}-DSML.war.md5"
${DIGEST} -a md5 "${BUILD_DIR}/OpenDS/build/src.zip" > "${BUILD_DIR}/src.zip.md5"
CORE_SERVER_MD5=`${CAT} "${BUILD_DIR}/${VERSION_STRING}.zip.md5"`
DSML_GATEWAY_MD5=`${CAT} "${BUILD_DIR}/${VERSION_STRING}-DSML.war.md5"`
SRC_ZIP_MD5=`${CAT} "${BUILD_DIR}/src.zip.md5"`
echo "CORE_SERVER_MD5=${CORE_SERVER_MD5}" >> "${LOG_FILE}"
echo "DSML_GATEWAY_MD5=${DSML_GATEWAY_MD5}" >> "${LOG_FILE}"
echo "SRC_ZIP_MD5=${SRC_ZIP_MD5}" >> "${LOG_FILE}"
echo "" >> "${LOG_FILE}"
# Write the build number and revision numbers to text files.
echo "${BUILD_NUMBER}" > "${BUILD_DIR}/${BUILD_NUMBER_FILE}"
echo "${REVISION_NUMBER}" > "${BUILD_DIR}/${REVISION_NUMBER_FILE}"
echo "${VERSION_NUMBER_STRING}" > "${BUILD_DIR}/${VERSION_NUMBER_FILE}"
# Get a log of changes since the last build.
echo "*** Getting changelog data ***" >> "${LOG_FILE}"
LAST_REV_PLUS_ONE=`echo "${LAST_REVISION_NUMBER}+1" | bc`
echo ${SVN} log -r ${LAST_REV_PLUS_ONE}:${REVISION_NUMBER} >> "${LOG_FILE}" 2>&1
${SVN} log -r ${LAST_REV_PLUS_ONE}:${REVISION_NUMBER} > "${BUILD_DIR}/changes.log" 2>&1
echo "" >> "${LOG_FILE}"
#If this is a sanity check, exit
if ${TEST} ${SANITY} -eq 1
then
  echo "Sanity check done."
  exit 1
fi
# Create an index.html in the build directory.
${CAT} > "${BUILD_DIR}/index.html" <<ENDOFHTML
<!DOCTYPE html PUBLIC "-//Tigris//DTD XHTML 1.0 Transitional//EN" "http://style.tigris.org/nonav/tigris_transitional.dtd">
<HTML>
  <HEAD>
    <TITLE>OpenDS Weekly Build ${VERSION_NUMBER_STRING}</TITLE>
    <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">
    <LINK REL="SHORTCUT ICON" HREF="/public/images/opends_favicon.gif">
    <LINK REL="stylesheet" HREF="/public/css/opends.css" TYPE="text/css">
    <STYLE>
      tr { text-align:left; vertical-align:top; padding:5px 10px; width:180px; background-color:#f5f5f5 }
    </STYLE>
  </HEAD>
  <BODY>
    <TABLE BORDER="0" CELLPADDING="10">
      <TR STYLE="background-color:#ffffff">
        <TD VALIGN="MIDDLE">
          <IMG SRC="/images/opends_logo_welcome.png" ALT="OpenDS Logo" WIDTH="197" HEIGHT="57">
        </TD>
        <TD VALIGN="MIDDLE">
          <H1>OpenDS Weekly Build ${VERSION_NUMBER_STRING}</H1>
        </TD>
      </TR>
      <TR>
        <TD>Weekly Build Number</TD>
        <TD>${BUILD_NUMBER}</TD>
      </TR>
      <TR>
        <TD>Subversion Revision Number</TD>
        <TD>${REVISION_NUMBER}</TD>
      </TR>
      <TR>
        <TD>QuickSetup Installer</TD>
        <TD><A HREF="install/QuickSetup.jnlp">install/QuickSetup.jnlp</A></TD>
      </TR>
      <TR>
        <TD>Core Server Zip File</TD>
        <TD><A HREF="${VERSION_STRING}.zip">${VERSION_STRING}.zip</A></TD>
      </TR>
      <TR>
        <TD>Core Server MD5 Checksum</TD>
        <TD>${CORE_SERVER_MD5}</TD>
      </TR>
      <TR>
        <TD>DSML Gateway WAR File</TD>
        <TD><A HREF="${VERSION_STRING}-DSML.war">${VERSION_STRING}-DSML.war</A></TD>
      </TR>
      <TR>
        <TD>DSML Gateway MD5 Checksum</TD>
        <TD>${DSML_GATEWAY_MD5}</TD>
      </TR>
      <TR>
        <TD>src.zip Server Source Archive</TD>
        <TD><A HREF="src.zip">src.zip</A></TD>
      </TR>
      <TR>
        <TD>src.zip MD5 Checksum</TD>
        <TD>${SRC_ZIP_MD5}</TD>
      </TR>
      <TR>
        <TD>Javadoc Documentation</TD>
        <TD><A HREF="javadoc/index.html">javadoc/index.html</A></TD>
      </TR>
      <TR>
        <TD>Changelog</TD>
        <TD><A HREF="changes.log">changes.log</A></TD>
      </TR>
      <TR>
        <TD>Build Log</TD>
        <TD><A HREF="${VERSION_STRING}.log">${VERSION_STRING}.log</A></TD>
      </TR>
    </TABLE>
    <BR>
    <A HREF="/promoted-builds/">See All Weekly Builds</A><BR>
    <A HREF="http://www.opends.org/">http://www.opends.org/</A><BR>
    <!-- Omniture -->
    <script src="https://www.opends.org/wiki/scripts/s_code_remote.js" language="JavaScript"/>
  </BODY>
</HTML>
ENDOFHTML
# Create a "candidate" symbolic link to this build.
${RM} -f "${BUILDS_DIR}/candidate"
${LN} -s "${BUILD_DIR}" "${BUILDS_DIR}/candidate"
# Create a temporary file to use for the e-mail message.
BODY_FILE=`${MKTEMP}`
echo "A new OpenDS weekly build candidate is available at" > ${BODY_FILE}
#echo "http://www2.opends.org/promoted-builds/candidate/" >> ${BODY_FILE}
echo "http://www.opends.org/promoted-builds/candidate/" >> ${BODY_FILE}
# Send the message and delete the temporary file.
${SENDMAIL} --from "${SENDER}" --to "${RECIPIENT}" --subject "${STATUS} ${SUBJECT}" \
            --body "${BODY_FILE}" --attach "${BUILD_DIR}/index.html" \
            --attach "${LOG_FILE}"
${RM} "${BODY_FILE}"
re-scripts/bin/build-ndb.sh
New file
@@ -0,0 +1,308 @@
#!/bin/sh
# If an option is given to this script, it is assumed as running in
# sanity check mode
# do not checkout the code ; use the same as nightly builds
ARG1=$1
ARG2=$2
echo "Building NDB Backend "
echo "BUILD_DATE=$ARG1"
echo "BUILDS_DIR=$ARG2"
# Define the Java versions that we will use to perform the build.
# These values should correspond to subdirectories below /java
JAVA_VERSIONS="jdk6"
# Define absolute paths to all commands we will use in this script.
AWK=/usr/bin/awk
NAWK=/usr/bin/nawk
CAT=/usr/bin/cat
CHMOD=/usr/bin/chmod
CUT=/usr/bin/cut
DATE=/usr/bin/date
DIRNAME=/usr/bin/dirname
GREP=/usr/bin/grep
GZIP=/usr/bin/gzip
HEAD=/usr/bin/head
LN=/usr/bin/ln
LS=/usr/bin/ls
MKDIR=/usr/bin/mkdir
MKTEMP=/usr/bin/mktemp
MV=/usr/bin/mv
RM=/usr/bin/rm
SORT=/usr/bin/sort
SVN=/opt/csw/bin/svn
TAR=/usr/bin/tar
TEST=/usr/bin/test
WC=/usr/bin/wc
SENDMAIL=/export/home/builds/bin/send-mail.sh
#If an argument is provided, let's assume we run a sanity check (no mail)
if ${TEST} $# -gt 0
then
  SANITY=1
else
  SANITY=0
fi
# Change to the directory that contains this script.
cd `${DIRNAME} $0`
# Explicitly set a minimal PATH so we don't run anything unexpected.
PATH="/bin:/usr/bin"
export PATH
# Define paths that will be used during this script.
SCRIPT_DIR=`pwd`
#JPIBUILDS_DIR=/daily-builds
# Define the URL to use to access the repository.
#JPISVN_URL=file:///svn-mirror/trunk/opends
# Define variables that will be used when sending the e-mail message.
#RECIPIENT="opends-staff@sun.com"
RECIPIENT="dir-release-dev@sun.com"
SENDER="opends@dev.java.net"
SUBJECT_DATE=`${DATE} '+%Y%m%d'`
SUBJECT="NDB Backend OpenDS Daily Build ${SUBJECT_DATE}"
# Create a new directory to hold the build.
BUILD_DATE=`${DATE} '+%Y%m%d%H%M%S'`
#JPIBUILD_DIR="${BUILDS_DIR}/${BUILD_DATE}"
#JPI${MKDIR} -p ${BUILD_DIR}
BUILD_DATE="${ARG1}"
BUILDS_DIR="${ARG2}"
BUILD_DIR="${BUILDS_DIR}/${BUILD_DATE}"
# Start generating a log file for the build.
LOG_FILE="${BUILD_DIR}/buildNDBBackend-${BUILD_DATE}.log"
SERVER_NAME="www.opends.org"
BUILD_URL="http://${SERVER_NAME}/${BUILDS_DIR}/${BUILD_DATE}/"
echo "OpenDS Daily Build ${SUBJECT_DATE}" > ${LOG_FILE}
echo "Build Time:  ${BUILD_DATE}" >> ${LOG_FILE}
echo "Build URL:   ${BUILD_URL}" >> ${LOG_FILE}
echo >> ${LOG_FILE}
echo >> ${LOG_FILE}
# Check out the head revision from the repository.
# JPI no ; use the same code source as the daily build
cd ${BUILD_DIR}
#JPIecho ${SVN} checkout -q --non-interactive ${SVN_URL} OpenDS >> ${LOG_FILE} 2>&1
#JPI${SVN} checkout -q --non-interactive ${SVN_URL} OpenDS >> ${LOG_FILE} 2>&1
#JPIecho >> ${LOG_FILE}
#JPIecho >> ${LOG_FILE}
# Add information about the checked-out revision to the log.
cd OpenDS
echo ${SVN} info >> ${LOG_FILE} 2>&1
${SVN} info >> ${LOG_FILE} 2>&1
echo >> ${LOG_FILE}
echo >> ${LOG_FILE}
# jp146654 :add path to OpenDMK
cd ${BUILD_DIR}/OpenDS
#JPIOLD_BUILDPROP_FILE=build.properties.origin
#JPINEW_BUILDPROP_FILE=build.properties
#JPIecho update Opendmk lib path in OpenDS/build.properties>> ${LOG_FILE} 2>&1
#JPIecho cp ${NEW_BUILDPROP_FILE} ${NEW_BUILDPROP_FILE}.origin >> ${LOG_FILE} 2>&1
#JPIcp ${NEW_BUILDPROP_FILE} ${NEW_BUILDPROP_FILE}.origin
#JPIecho add new path   : /export/home/builds/OpenDMK-bin/lib>> ${LOG_FILE} 2>&1
#JPI${CAT}  ${OLD_BUILDPROP_FILE} | sed "s/opendmk\.lib\.dir\=/opendmk\.lib\.dir\=\/export\/home\/builds\/OpenDMK-bin\/lib/g" > ${NEW_BUILDPROP_FILE}
#
#JPIecho >> ${LOG_FILE}
#JPIecho >> ${LOG_FILE}
# end
# Parse the PRODUCT file to get the version information.
SHORT_NAME=`${GREP} SHORT_NAME PRODUCT | ${CUT} -d= -f2`
MAJOR_VERSION=`${GREP} MAJOR_VERSION PRODUCT | ${CUT} -d= -f2`
MINOR_VERSION=`${GREP} MINOR_VERSION PRODUCT | ${CUT} -d= -f2`
POINT_VERSION=`${GREP} POINT_VERSION PRODUCT | ${CUT} -d= -f2`
VERSION_QUALIFIER=`${GREP} VERSION_QUALIFIER PRODUCT | ${CUT} -d= -f2`
VERSION_NUMBER_STRING="${MAJOR_VERSION}.${MINOR_VERSION}.${POINT_VERSION}${VERSION_QUALIFIER}"
VERSION_STRING="${SHORT_NAME}-${VERSION_NUMBER_STRING}"
# Loop through the JDK versions and build usin gthe "nightly" target.
# We'll set JAVA_HOME each time, and when we're done, we can continue using
# the last one.
ANY_BUILD_FAILED=0
ALL_BUILD_FAILED=1
TEST_FAILED=0
for VERSION in ${JAVA_VERSIONS}
do
  # Removes directory that might be still there if test failed before
  # @AfterClass that normaly performs the cleanup
  FSCACHE=/tmp/OpenDS.FSCache
  if ${TEST} -d FSCACHE
  then
    ${RM} -rf ${FSCACHE}
  fi
  JAVA_HOME=/java/${VERSION}
  export JAVA_HOME
  echo "Building NDB Backend with Java version ${VERSION}" >> ${LOG_FILE}
#JPI  echo ./build.sh nightlybuild -Ddisable.test.help=true -DMEM=512M >> ${LOG_FILE} 2>&1
#JPI  ./build.sh nightlybuild -Ddisable.test.help=true -DMEM=512M >> ${LOG_FILE} 2>&1
  echo  ./build.sh -Dmysql.lib.dir=/usr/local/mysql/share/java package >> ${LOG_FILE} 2>&1
   ./build.sh -Dmysql.lib.dir=/usr/local/mysql/share/java package >> ${LOG_FILE} 2>&1
  if ${TEST} $? -ne 0
  then
    ANY_BUILD_FAILED=1
  fi
  # Create the Java Web Start install archive.
  ADDRESS="www.opends.org"
  export ADDRESS
#JPI  BASE_PATH=/${BUILDS_DIR}/latest/OpenDS/build/webstart/install
#JPI  export BASE_PATH
#JPI  echo resource/webstart/create-webstart-standalone.sh >> ${LOG_FILE} 2>&1
#JPI  resource/webstart/create-webstart-standalone.sh >> ${LOG_FILE} 2>&1
#JPI  # fix to make create-webstart-standalone.sh support jdk5 and jdk6
#JPI  NEW_QUICKSETUP_FILE=`${MKTEMP}`
#JPI  JWS_QUICKSETUP_FILE=build/webstart/install/QuickSetup.jnlp
#JPI  cat ${JWS_QUICKSETUP_FILE} | sed "s/\/build\//\//buildNDBBackend.${VERSION}\//g" > ${NEW_QUICKSETUP_FILE}
#JPI  mv ${JWS_QUICKSETUP_FILE} ${JWS_QUICKSETUP_FILE}.moved
#JPI  mv ${NEW_QUICKSETUP_FILE} ${JWS_QUICKSETUP_FILE}
#JPI  ${CHMOD} +r ${JWS_QUICKSETUP_FILE}
  echo >> ${LOG_FILE}
  echo >> ${LOG_FILE}
  ${MV} build ./buildNDBBackend.${VERSION}
done
echo "end README  ${BUILD_DIR}/README_NDBBackend.html "
# Create a README_NDBBackend.html file in for this build.
cat > ${BUILD_DIR}/README_NDBBackend.html <<ENDOFREADME
<TABLE BORDER="0">
  <TR>
    <TD>
      <IMG SRC="http://${SERVER_NAME}/images/opends_logo_welcome.png" ALT="OpenDS Logo" WIDTH="197" HEIGHT="57">
    </TD>
    <TD>
      <H2>OpenDS Daily Build ${SUBJECT_DATE}</H2>
      <A HREF="${BUILD_URL}/buildNDBBackend-${BUILD_DATE}.log">Build Log File</A>
ENDOFREADME
for VERSION in ${JAVA_VERSIONS}
do
cat >> ${BUILD_DIR}/README_NDBBackend.html <<ENDOFREADME
      <BR>
      <B>Build with Java Version ${VERSION}</B>
      <A HREF="${BUILD_URL}OpenDS//buildNDBBackend.${VERSION}/package/${VERSION_STRING}.zip">${VERSION_STRING}.zip Build Package File</A><BR>
ENDOFREADME
done
cat >> ${BUILD_DIR}/README_NDBBackend.html <<ENDOFREADME
    </TD>
  </TR>
</TABLE>
ENDOFREADME
echo "end README  ${BUILD_DIR}/README_NDBBackend.html "
# Remove the "latest" symlink (if it exists) and recreate it pointing to
# the new build.
#JPIcd ${BUILDS_DIR}
#JPI${RM} -f latest
#JPI${LN} -s ${BUILD_DIR} ${BUILDS_DIR}/latest
# Remove an old directory if appropriate.  We want to keep up to 30 builds.
#JPICOUNT=`${LS} | ${SORT} | ${GREP} -v latest | ${WC} -l | ${AWK} '{print $1}'`
#JPIif ${TEST} ${COUNT} -gt 30
#JPIthen
#JPI  OLDEST=`${LS} | ${SORT} | ${GREP} -v latest | ${HEAD} -1`
#JPI  ${RM} -rf ${OLDEST}
#JPIfi
#JPI : to be able to access unit tests logs wia http
#JPIif test -d "/${BUILDS_DIR}/latest/OpenDS/build.jdk5/unit-tests/package-instance/logs"
#JPIthen
#JPI   chmod -R 777 /${BUILDS_DIR}/latest/OpenDS/build.jdk5/unit-tests/package-instance/logs
#JPIfi
#JPIif test -d "/${BUILDS_DIR}/latest/OpenDS/build.jdk6/unit-tests/package-instance/logs"
#JPIthen
#JPI   chmod -R 777 /${BUILDS_DIR}/latest/OpenDS/build.jdk6/unit-tests/package-instance/logs
#JPIfi
####
# Send an e-mail message to indicate that the build is complete.
BODY_FILE=`${MKTEMP}`
echo "NDB Backend OpenDS Build ${SUBJECT_DATE}" > ${BODY_FILE}
echo "Java Versions Tested:  ${JAVA_VERSIONS}" >> ${BODY_FILE}
if ${TEST} ${ANY_BUILD_FAILED} -eq 0
then
  echo "Build Status:  Succeeded for all Java versions" >> ${BODY_FILE}
  if ${TEST} ${TEST_FAILED} -eq 0
  then
    SUBJECT_WITH_STATUS="${SUBJECT} (success)"
  else
    RESULT5_FILE=/$BUILD_DIR/OpenDS/build.jdk5/unit-tests/report/results.txt
    RESULT6_FILE=/$BUILD_DIR/OpenDS/build.jdk6/unit-tests/report/results.txt
    if ${TEST} -f ${RESULT5_FILE} && ${TEST} -f ${RESULT6_FILE}
    then
      RES=`cat ${RESULT5_FILE} ${RESULT6_FILE} | ${NAWK} ' BEGIN {F=0;T=0} /# Tests failed/ {F=F+$4} /# Test classes:/ {T=T+$4}  END {printf("%.2f\n",100-F/T*100)}`
      SUBJECT_WITH_STATUS="${SUBJECT} (build successful - ${RES}% tests passed)"
    elif ${TEST} -f ${RESULT5_FILE}
    then
      RES=`cat ${RESULT5_FILE} | ${NAWK} ' BEGIN {F=0;T=0} /# Tests failed/ {F=F+$4} /# Test classes:/ {T=T+$4}  END {printf("%.2f\n",100-F/T*100)}`
      SUBJECT_WITH_STATUS="${SUBJECT} (build successful - JDK5: ${RES}% tests passed - JDK6: no test result)"
    elif ${TEST} -f ${RESULT6_FILE}
    then
      RES=`cat ${RESULT6_FILE} | ${NAWK} ' BEGIN {F=0;T=0} /# Tests failed/ {F=F+$4} /# Test classes:/ {T=T+$4}  END {printf("%.2f\n",100-F/T*100)}`
      SUBJECT_WITH_STATUS="${SUBJECT} (build successful - JDK5: no test result - JDK6: ${RES}% tests passed)"
    else
      SUBJECT_WITH_STATUS="${SUBJECT} (build successful - No test result)"
    fi
  fi
else
  if ${TEST} ${ALL_BUILD_FAILED} -eq 0
  then
    echo "Build Status:  Failed for some Java versions" >> ${BODY_FILE}
  else
    echo "Build Status:  Failed for all Java versions" >> ${BODY_FILE}
  fi
  SUBJECT_WITH_STATUS="${SUBJECT} (failure)"
fi
echo "Build URL:  ${BUILD_URL}" >> ${BODY_FILE}
echo '
${SENDMAIL} --from "${SENDER}" --to "${RECIPIENT}" --subject "${SUBJECT_WITH_STATUS}" \
            --body "${BODY_FILE}" --attach "${BUILD_DIR}/README_NDBBackend.html" \
            --attach "${LOG_FILE}" '
${SENDMAIL} --from "${SENDER}" --to "${RECIPIENT}" --subject "${SUBJECT_WITH_STATUS}" \
            --body "${BODY_FILE}" --attach "${BUILD_DIR}/README_NDBBackend.html" \
            --attach "${LOG_FILE}"
${RM} ${BODY_FILE}
re-scripts/bin/build-status.sh
New file
@@ -0,0 +1,13 @@
#!/bin/sh
# Define absolute paths to all commands we will use in this script.
DIRNAME=/usr/bin/dirname
# Change to the directory that contains this script.
cd `${DIRNAME} $0`
# Explicitly set a minimal PATH so we don't run anything unexpected.
PATH="/bin:/usr/bin"
export PATH
/java/jdk6/bin/java -classpath /export/home/builds/bin/build-status/classes org.opends.tools.BuildStatus
re-scripts/bin/build-status/README
New file
@@ -0,0 +1,5 @@
In a small piece of Java that generates a build status page in /daily-builds/status.html
/java/jdk6/bin/java -classpath classes org.opends.tools.BuildStatus
/java/jdk6/bin/javac -classpath src -d classes src/org/opends/tools/BuildStatus.java
re-scripts/bin/build-status/classes/org/opends/tools/BuildStatus$1.class
Binary files differ
re-scripts/bin/build-status/classes/org/opends/tools/BuildStatus$2.class
Binary files differ
re-scripts/bin/build-status/classes/org/opends/tools/BuildStatus$Build.class
Binary files differ
re-scripts/bin/build-status/classes/org/opends/tools/BuildStatus$DailyBuild.class
Binary files differ
re-scripts/bin/build-status/classes/org/opends/tools/BuildStatus$JDK.class
Binary files differ
re-scripts/bin/build-status/classes/org/opends/tools/BuildStatus$TestFailure.class
Binary files differ
re-scripts/bin/build-status/classes/org/opends/tools/BuildStatus.class
Binary files differ
re-scripts/bin/build-status/src/org/opends/tools/BuildStatus.java
New file
@@ -0,0 +1,275 @@
package org.opends.tools;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileWriter;
import java.io.FilenameFilter;
import java.io.InputStreamReader;
import java.net.URL;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Comparator;
import java.util.List;
import java.util.TreeSet;
/**
 *
 * @author Sun Microsystems Inc.
 */
public class BuildStatus {
  // builds location
  private static final String ROOT_DIR = "/daily-builds";
  // constants for html
  private static final String GREEN = "background-color: rgb(51, 255, 51);";
  private static final String RED = "background-color: rgb(255, 102, 102);";
  private static final String BODY = "#BODY#";
  private static final String TABLES = "#TABLES#";
  private static final String PAGE =
          "<html>" +
          " <head>" +
          "  <meta content=\"text/html; charset=ISO-8859-1\" http-equiv=\"content-type\">" +
          "  <title>OpenDS builds status</title>" +
          " </head>" +
          " <body>" +
          "  <div style=\"text-align: center;\"><big style=\"font-weight: bold;\">Daily builds status</big><br></div>" +
          "  <br>" +
          TABLES +
          " </body>" +
          "</html>\n";
  /**
   * @param args the command line arguments
   */
  public static void main(String[] args) {
    // a collection of builds ordered from yougest to oldest
    Collection<DailyBuild> dailyBuilds = new TreeSet<DailyBuild>(
            new Comparator<DailyBuild>() {
              public int compare(DailyBuild o1, DailyBuild o2) {
                String date1 = o1.id.substring(0, 8);
                String date2 = o2.id.substring(0, 8);
                return date2.compareTo(date1);
              }
              });
    try {
      // list directories in daily build directory
      String[] filenames = new File(ROOT_DIR).list(new FilenameFilter() {
        public boolean accept(File dir, String name) {
          for (int i = 0; i < name.length(); i++) {
            if (!Character.isDigit(name.charAt(i))) {
              return false;
            }
          }
          return true;
        }
      });
      for (String filename : filenames) {
        try {
          // dedicated to Unix only !!!
          URL url = new URL("file:///" + ROOT_DIR + "/" + filename + "/build-" + filename + ".log");
          DailyBuild dailyBuild = new DailyBuild(filename);
          Build build = null;
          TestFailure failure = null;
          boolean skip = false;
          BufferedReader reader = new BufferedReader(new InputStreamReader(url.openStream()));
          String line;
          boolean firstTarget = true;
          while ((line = reader.readLine()) != null) {
            if (skip) {
              skip = false;
            } else if (line.startsWith("Building with Java version")) {
              // build beginning
              firstTarget = true;
              build = new Build(JDK.valueOf(line.substring(27, 31)));
            } else if (line.startsWith("BUILD")) {
              // build ending. Status can be : FAILED SUCCESSFUL
              if (firstTarget) {
                build.setSuccess(line.substring(6, line.length()).equals("SUCCESSFUL"));
                dailyBuild.setBuild(build);
                firstTarget = false;
              } else {
                if (build.isSuccess()) {
                  build.setSuccess(line.substring(6, line.length()).equals("SUCCESSFUL"));
                }
              }
            } else if (line.contains("F A I L U R E ! ! !")) {
              // test failed
              failure = new TestFailure(line);
              skip = true; // skip next empty line
            } else if (failure != null && line.equals("   [testng] ")) {
              // end of test failure trace
              build.addFailure(failure);
              failure = null;
            } else {
              if (failure != null) {
                failure.appendLog(line.replace("<", "&lt;").replace(">", "&gt;"));
              }
            }
          }
          dailyBuilds.add(dailyBuild);
          reader.close();
        } catch (Throwable t) {
        // may have lost one build
        }
      }
      StringBuilder allBuilds = new StringBuilder();
      for (DailyBuild daily : dailyBuilds) {
        allBuilds.append(daily.toString());
      }
      String html = PAGE.replace(TABLES, allBuilds);
      // write status.html page
      FileWriter writer = new FileWriter(ROOT_DIR + "/status.html", false);
      writer.write(html);
      writer.close();
    } catch (Throwable t) {
    }
  }
  private static enum JDK {
    jdk5, jdk6
  }
  /*
   * A DailyBuild has an identifier (date) and two builds (jdk5+jdk6).
   */
  private static class DailyBuild {
    private static final String DATE = "#DATE#";
    private static final String JDK5 = "#JDK5#";
    private static final String JDK6 = "#JDK6#";
    private static final String COLOR = "#COLOR#";
    private static final String TEMPLATE = "<table style=\"width: 100%; text-align: center;\" border=\"1\" cellpadding=\"2\" cellspacing=\"2\">" +
            "<tbody>" +
            "<tr>" +
            "<td colspan=\"2\" rowspan=\"1\" style=\"" + COLOR +
            "vertical-align: middle; text-align: center;\">" + DATE +
            "</td>" +
            "</tr>" +
            "<tr>" + JDK5 + "</tr>" +
            "<tr>" + JDK6 + "</tr>" +
            "<br>";
    private static final String JDK_MISSING = "<td style=\"background-color: rgb(255, 204, 0);\">Unknown</td><td></td>";
    private Build jdk5;
    private Build jdk6;
    private String id;
    public DailyBuild(String id) {
      this.id = id;
    }
    public boolean isSuccess() {
      return this.jdk5 != null && this.jdk5.isSuccess() && this.jdk6 != null && this.jdk6.isSuccess();
    }
    public void setBuild(Build build) {
      if (build.getJDK().equals(JDK.jdk5)) {
        this.jdk5 = build;
      } else {
        this.jdk6 = build;
      }
    }
    @Override
    public String toString() {
      //String date = this.id.substring(0, 4) + "." + this.id.substring(4, 6) + "." + this.id.substring(6, 8);
      String date = "<a href=\"" + this.id + "/build-" + this.id + ".log\">" + this.id.substring(0, 4) + "." + this.id.substring(4, 6) + "." + this.id.substring(6, 8) + "</a>";
      String result = TEMPLATE.replace(DATE, date).replace(JDK5, this.jdk5 == null ? JDK_MISSING : this.jdk5.toString()).replace(JDK6, this.jdk6 == null ? JDK_MISSING : this.jdk6.toString());
      if (this.isSuccess()) {
        result = result.replace(COLOR, GREEN);
      } else {
        result = result.replace(COLOR, RED);
      }
      return result;
    }
  }
  /*
   * A Build has a JDK version (5 or 6), a success and an optional list of
   * failures.
   */
  private static class Build {
    private static final String FAILURES = "#FAILURES#";
    private static final String VERSIONS = "#VERSIONS#";
    private static final String TEMPLATE =
            "<td style=\"" + DailyBuild.COLOR + "width: 10%; vertical-align: middle; text-align: center;\">" + VERSIONS + "</td>" +
            "<td style=\"font-family: monospace; text-align: left;\">" + FAILURES + "</td>";
    private JDK jdk;
    private boolean success;
    private List<TestFailure> failures;
    public Build(JDK jdk) {
      this.jdk = jdk;
    }
    public JDK getJDK() {
      return this.jdk;
    }
    public boolean isSuccess() {
      return this.success;
    }
    public void setSuccess(boolean success) {
      this.success = success;
    }
    public void addFailure(TestFailure failure) {
      if (this.failures == null) {
        this.failures = new ArrayList<TestFailure>();
      }
      this.failures.add(failure);
    }
    @Override
    public String toString() {
      String result = TEMPLATE.replace(VERSIONS, this.jdk.name());
      if (!this.success) {
        StringBuilder sb = new StringBuilder();
        if (this.failures != null) {
          for (TestFailure failure : this.failures) {
            sb.append(failure.sb).append("<br>");
          }
        } else {
          sb.append("<b>Unknown error.</b>");
        }
        result = result.replace(FAILURES, sb).replace(DailyBuild.COLOR, RED);
      } else {
        result = result.replace(FAILURES, "").replace(DailyBuild.COLOR, GREEN);
      }
      return result;
    }
  }
  /*
   * A TestFailure encapsulates a list of relevant logs.
   */
  private static class TestFailure {
    private StringBuilder sb;
    private String title;
    public TestFailure(String title) {
      this.title = title.substring(12, title.length());
    }
    public void appendLog(String log) {
      if (this.sb == null) {
        this.sb = new StringBuilder("<p><b>").append(this.title).append("</b><br>");
      }
      this.sb.append(log.substring(12, log.length())).append("<br>");
    }
  }
}
re-scripts/bin/daily-build-for-release-eng.sh
New file
@@ -0,0 +1,271 @@
#!/bin/sh
# If an option is given to this script, it is assumed as running in
# sanity check mode
# Define the Java versions that we will use to perform the build.
# These values should correspond to subdirectories below /java
JAVA_VERSIONS="jdk5 jdk6"
# Define absolute paths to all commands we will use in this script.
AWK=/usr/bin/awk
CAT=/usr/bin/cat
CHMOD=/usr/bin/chmod
CUT=/usr/bin/cut
DATE=/usr/bin/date
DIRNAME=/usr/bin/dirname
GREP=/usr/bin/grep
GZIP=/usr/bin/gzip
HEAD=/usr/bin/head
LN=/usr/bin/ln
LS=/usr/bin/ls
MKDIR=/usr/bin/mkdir
MKTEMP=/usr/bin/mktemp
MV=/usr/bin/mv
RM=/usr/bin/rm
SORT=/usr/bin/sort
SVN=/opt/csw/bin/svn
TAR=/usr/bin/tar
TEST=/usr/bin/test
WC=/usr/bin/wc
SENDMAIL=/export/home/builds/bin/send-mail.sh
#If an argument is provided, let's assume we run a sanity check (no mail)
if ${TEST} $# -gt 0
then
  SANITY=1
else
  SANITY=0
fi
# Change to the directory that contains this script.
cd `${DIRNAME} $0`
# Explicitly set a minimal PATH so we don't run anything unexpected.
PATH="/bin:/usr/bin"
export PATH
# Define paths that will be used during this script.
SCRIPT_DIR=`pwd`
BUILDS_DIR=/daily-builds/
# Define the URL to use to access the repository.
SVN_URL=file:///svn-mirror/trunk/opends
# Define variables that will be used when sending the e-mail message.
#RECIPIENT="opends-staff@sun.com"
RECIPIENT="jcduff@dev.java.net"
SENDER="opends@dev.java.net"
SUBJECT_DATE=`${DATE} '+%Y%m%d'`
SUBJECT="Trunk: OpenDS Daily Build ${SUBJECT_DATE}"
# Create a new directory to hold the build.
BUILD_DATE=`${DATE} '+%Y%m%d%H%M%S'`
BUILD_DIR="${BUILDS_DIR}/fake${BUILD_DATE}"
${MKDIR} -p ${BUILD_DIR}
# Start generating a log file for the build.
LOG_FILE="${BUILD_DIR}/build-${BUILD_DATE}.log"
#SERVER_NAME="www2.opends.org"
SERVER_NAME="www.opends.org"
BUILD_URL="http://${SERVER_NAME}/daily-builds/${BUILD_DATE}/"
echo "OpenDS Daily Build ${SUBJECT_DATE}" > ${LOG_FILE}
echo "Build Time:  ${BUILD_DATE}" >> ${LOG_FILE}
echo "Build URL:   ${BUILD_URL}" >> ${LOG_FILE}
echo >> ${LOG_FILE}
echo >> ${LOG_FILE}
# Check out the head revision from the repository.
cd ${BUILD_DIR}
echo ${SVN} checkout -q --non-interactive ${SVN_URL} OpenDS >> ${LOG_FILE} 2>&1
${SVN} checkout -q --non-interactive ${SVN_URL} OpenDS >> ${LOG_FILE} 2>&1
echo >> ${LOG_FILE}
echo >> ${LOG_FILE}
# Add information about the checked-out revision to the log.
cd OpenDS
echo ${SVN} info >> ${LOG_FILE} 2>&1
${SVN} info >> ${LOG_FILE} 2>&1
echo >> ${LOG_FILE}
echo >> ${LOG_FILE}
# jp146654 :add path to OpenDMK
cd ${BUILD_DIR}/OpenDS
OLD_BUILDPROP_FILE=build.properties.origin
NEW_BUILDPROP_FILE=build.properties
echo update Opendmk lib path in OpenDS/build.properties>> ${LOG_FILE} 2>&1
echo cp ${NEW_BUILDPROP_FILE} ${NEW_BUILDPROP_FILE}.origin >> ${LOG_FILE} 2>&1
cp ${NEW_BUILDPROP_FILE} ${NEW_BUILDPROP_FILE}.origin
echo add new path   : /export/home/builds/OpenDMK-bin/lib>> ${LOG_FILE} 2>&1
${CAT}  ${OLD_BUILDPROP_FILE} | sed "s/opendmk\.lib\.dir\=/opendmk\.lib\.dir\=\/export\/home\/builds\/OpenDMK-bin\/lib/g" > ${NEW_BUILDPROP_FILE}
echo >> ${LOG_FILE}
echo >> ${LOG_FILE}
# end
# Parse the PRODUCT file to get the version information.
SHORT_NAME=`${GREP} SHORT_NAME PRODUCT | ${CUT} -d= -f2`
MAJOR_VERSION=`${GREP} MAJOR_VERSION PRODUCT | ${CUT} -d= -f2`
MINOR_VERSION=`${GREP} MINOR_VERSION PRODUCT | ${CUT} -d= -f2`
POINT_VERSION=`${GREP} POINT_VERSION PRODUCT | ${CUT} -d= -f2`
VERSION_QUALIFIER=`${GREP} VERSION_QUALIFIER PRODUCT | ${CUT} -d= -f2`
VERSION_NUMBER_STRING="${MAJOR_VERSION}.${MINOR_VERSION}.${POINT_VERSION}${VERSION_QUALIFIER}"
VERSION_STRING="${SHORT_NAME}-${VERSION_NUMBER_STRING}"
# Loop through the JDK versions and build usin gthe "nightly" target.
# We'll set JAVA_HOME each time, and when we're done, we can continue using
# the last one.
ANY_FAILED=0
ALL_FAILED=1
for VERSION in ${JAVA_VERSIONS}
do
  # Removes directory that might be still there if test failed before
  # @AfterClass that normaly performs the cleanup
  FSCACHE=/tmp/OpenDS.FSCache
  if ${TEST} -d FSCACHE
  then
    ${RM} -rf ${FSCACHE}
  fi
  JAVA_HOME=/java/${VERSION}
  export JAVA_HOME
  echo "Building with Java version ${VERSION}" >> ${LOG_FILE}
  echo ./build.sh nightly -Ddisable.test.help=true -DMEM=512M >> ${LOG_FILE} 2>&1
  ./build.sh nightly -Ddisable.test.help=true -DMEM=512M >> ${LOG_FILE} 2>&1
  if ${TEST} $? -eq 0
  then
    ALL_FAILED=0
  else
    ANY_FAILED=1
  fi
  echo ./build.sh svr4 -Ddisable.test.help=true -DMEM=512M >> ${LOG_FILE} 2>&1
  ./build.sh svr4 -Ddisable.test.help=true -DMEM=512M >> ${LOG_FILE} 2>&1
  if ${TEST} $? -ne 0
  then
    ANY_FAILED=1
  fi
  # Create the Java Web Start install archive.
  ADDRESS="www.opends.org"
  export ADDRESS
  BASE_PATH=/daily-builds/latest/OpenDS/build/webstart/install
  export BASE_PATH
  echo resource/webstart/create-webstart-standalone.sh >> ${LOG_FILE} 2>&1
  resource/webstart/create-webstart-standalone.sh >> ${LOG_FILE} 2>&1
  # fix to make create-webstart-standalone.sh support jdk5 and jdk6
  NEW_QUICKSETUP_FILE=`${MKTEMP}`
  JWS_QUICKSETUP_FILE=build/webstart/install/QuickSetup.jnlp
  cat ${JWS_QUICKSETUP_FILE} | sed "s/\/build\//\/build.${VERSION}\//g" > ${NEW_QUICKSETUP_FILE}
  mv ${JWS_QUICKSETUP_FILE} ${JWS_QUICKSETUP_FILE}.moved
  mv ${NEW_QUICKSETUP_FILE} ${JWS_QUICKSETUP_FILE}
  ${CHMOD} +r ${JWS_QUICKSETUP_FILE}
  echo >> ${LOG_FILE}
  echo >> ${LOG_FILE}
  ${MV} build build.${VERSION}
done
#If this is a sanity check, exit
if ${TEST} ${SANITY} -eq 1
then
  exit 1
fi
# Create a README.html file in for this build.
cat > ${BUILD_DIR}/README.html <<ENDOFREADME
<TABLE BORDER="0">
  <TR>
    <TD>
      <IMG SRC="http://${SERVER_NAME}/images/opends_logo_welcome.png" ALT="OpenDS Logo" WIDTH="197" HEIGHT="57">
    </TD>
    <TD>
      <H2>OpenDS Daily Build ${SUBJECT_DATE}</H2>
      <A HREF="${BUILD_URL}build-${BUILD_DATE}.log">Build Log File</A>
ENDOFREADME
for VERSION in ${JAVA_VERSIONS}
do
cat >> ${BUILD_DIR}/README.html <<ENDOFREADME
      <BR>
      <B>Build with Java Version ${VERSION}</B>
      <A HREF="${BUILD_URL}OpenDS/build.${VERSION}/package/${VERSION_STRING}.zip">${VERSION_STRING}.zip Build Package File</A><BR>
      <A HREF="${BUILD_URL}OpenDS/build.${VERSION}/package/${VERSION_STRING}-DSML.war">${VERSION_STRING}-DSML.war DSML Gateway</A><BR>
      <A HREF="${BUILD_URL}OpenDS/build.${VERSION}/webstart/install/QuickSetup.jnlp">QuickSetup Java Web Start Installer</A><BR>
      <A HREF="${BUILD_URL}OpenDS/build.${VERSION}/javadoc/">Javadoc Documentation</A><BR>
      <A HREF="${BUILD_URL}OpenDS/build.${VERSION}/src.zip">src.zip Source Archive</A><BR>
      <A HREF="${BUILD_URL}OpenDS/build.${VERSION}/unit-tests/report/results.txt">Unit Test Report</A><BR>
      <A HREF="${BUILD_URL}OpenDS/build.${VERSION}/coverage/reports/unit/">Unit Test Code Goverage Report</A><BR>
ENDOFREADME
done
cat >> ${BUILD_DIR}/README.html <<ENDOFREADME
    </TD>
  </TR>
</TABLE>
ENDOFREADME
# Remove the "latest" symlink (if it exists) and recreate it pointing to
# the new build.
cd ${BUILDS_DIR}
${RM} -f latest
${LN} -s ${BUILD_DIR} ${BUILDS_DIR}/latest
# Remove an old directory if appropriate.  We want to keep up to 30 builds.
COUNT=`${LS} | ${SORT} | ${GREP} -v latest | ${WC} -l | ${AWK} '{print $1}'`
if ${TEST} ${COUNT} -gt 30
then
  OLDEST=`${LS} | ${SORT} | ${GREP} -v latest | ${HEAD} -1`
  ${RM} -rf ${OLDEST}
fi
# Send an e-mail message to indicate that the build is complete.
BODY_FILE=`${MKTEMP}`
echo "OpenDS Daily Build ${SUBJECT_DATE}" > ${BODY_FILE}
echo "Java Versions Tested:  ${JAVA_VERSIONS}" >> ${BODY_FILE}
if ${TEST} ${ANY_FAILED} -eq 0
then
  echo "Build Status:  Succeeded for all Java versions" >> ${BODY_FILE}
  SUBJECT_WITH_STATUS="${SUBJECT} (success)"
else
  if ${TEST} ${ALL_FAILED} -eq 0
  then
    echo "Build Status:  Failed for some Java versions" >> ${BODY_FILE}
  else
    echo "Build Status:  Failed for all Java versions" >> ${BODY_FILE}
  fi
  SUBJECT_WITH_STATUS="${SUBJECT} (failure)"
fi
echo "Build URL:  ${BUILD_URL}" >> ${BODY_FILE}
${SENDMAIL} --from "${SENDER}" --to "${RECIPIENT}" --subject "${SUBJECT_WITH_STATUS}" \
            --body "${BODY_FILE}" --attach "${BUILD_DIR}/README.html" \
            --attach "${LOG_FILE}"
${RM} ${BODY_FILE}
re-scripts/bin/daily-build.sh
New file
@@ -0,0 +1,317 @@
#!/bin/sh
# If an option is given to this script, it is assumed as running in
# sanity check mode
# Define the Java versions that we will use to perform the build.
# These values should correspond to subdirectories below /java
JAVA_VERSIONS="jdk5 jdk6"
# Define absolute paths to all commands we will use in this script.
AWK=/usr/bin/awk
NAWK=/usr/bin/nawk
CAT=/usr/bin/cat
CHMOD=/usr/bin/chmod
CUT=/usr/bin/cut
DATE=/usr/bin/date
DIRNAME=/usr/bin/dirname
GREP=/usr/bin/grep
GZIP=/usr/bin/gzip
HEAD=/usr/bin/head
LN=/usr/bin/ln
LS=/usr/bin/ls
MKDIR=/usr/bin/mkdir
MKTEMP=/usr/bin/mktemp
MV=/usr/bin/mv
RM=/usr/bin/rm
SORT=/usr/bin/sort
SVN=/opt/csw/bin/svn
TAR=/usr/bin/tar
TEST=/usr/bin/test
WC=/usr/bin/wc
SENDMAIL=/export/home/builds/bin/send-mail.sh
#If an argument is provided, let's assume we run a sanity check (no mail)
if ${TEST} $# -gt 0
then
  SANITY=1
else
  SANITY=0
fi
# Change to the directory that contains this script.
cd `${DIRNAME} $0`
# Explicitly set a minimal PATH so we don't run anything unexpected.
PATH="/bin:/usr/bin"
export PATH
# Define paths that will be used during this script.
SCRIPT_DIR=`pwd`
BUILDS_DIR=/daily-builds
# Define the URL to use to access the repository.
SVN_URL=file:///svn-mirror/trunk/opends
# Define variables that will be used when sending the e-mail message.
#RECIPIENT="opends-staff@sun.com"
RECIPIENT="dev@opends.dev.java.net"
SENDER="opends@dev.java.net"
SUBJECT_DATE=`${DATE} '+%Y%m%d'`
SUBJECT="OpenDS Daily Build ${SUBJECT_DATE}"
# Create a new directory to hold the build.
BUILD_DATE=`${DATE} '+%Y%m%d%H%M%S'`
BUILD_DIR="${BUILDS_DIR}/${BUILD_DATE}"
${MKDIR} -p ${BUILD_DIR}
# Start generating a log file for the build.
LOG_FILE="${BUILD_DIR}/build-${BUILD_DATE}.log"
#SERVER_NAME="www2.opends.org"
SERVER_NAME="www.opends.org"
BUILD_URL="http://${SERVER_NAME}/${BUILDS_DIR}/${BUILD_DATE}/"
echo "OpenDS Daily Build ${SUBJECT_DATE}" > ${LOG_FILE}
echo "Build Time:  ${BUILD_DATE}" >> ${LOG_FILE}
echo "Build URL:   ${BUILD_URL}" >> ${LOG_FILE}
echo >> ${LOG_FILE}
echo >> ${LOG_FILE}
# Check out the head revision from the repository.
cd ${BUILD_DIR}
echo ${SVN} checkout -q --non-interactive ${SVN_URL} OpenDS >> ${LOG_FILE} 2>&1
${SVN} checkout -q --non-interactive ${SVN_URL} OpenDS >> ${LOG_FILE} 2>&1
echo >> ${LOG_FILE}
echo >> ${LOG_FILE}
# Add information about the checked-out revision to the log.
cd OpenDS
echo ${SVN} info >> ${LOG_FILE} 2>&1
${SVN} info >> ${LOG_FILE} 2>&1
echo >> ${LOG_FILE}
echo >> ${LOG_FILE}
# jp146654 :add path to OpenDMK
cd ${BUILD_DIR}/OpenDS
OLD_BUILDPROP_FILE=build.properties.origin
NEW_BUILDPROP_FILE=build.properties
echo update Opendmk lib path in OpenDS/build.properties>> ${LOG_FILE} 2>&1
echo cp ${NEW_BUILDPROP_FILE} ${NEW_BUILDPROP_FILE}.origin >> ${LOG_FILE} 2>&1
cp ${NEW_BUILDPROP_FILE} ${NEW_BUILDPROP_FILE}.origin
echo add new path   : /export/home/builds/OpenDMK-bin/lib>> ${LOG_FILE} 2>&1
${CAT}  ${OLD_BUILDPROP_FILE} | sed "s/opendmk\.lib\.dir\=/opendmk\.lib\.dir\=\/export\/home\/builds\/OpenDMK-bin\/lib/g" > ${NEW_BUILDPROP_FILE}
echo >> ${LOG_FILE}
echo >> ${LOG_FILE}
# end
# Parse the PRODUCT file to get the version information.
SHORT_NAME=`${GREP} SHORT_NAME PRODUCT | ${CUT} -d= -f2`
MAJOR_VERSION=`${GREP} MAJOR_VERSION PRODUCT | ${CUT} -d= -f2`
MINOR_VERSION=`${GREP} MINOR_VERSION PRODUCT | ${CUT} -d= -f2`
POINT_VERSION=`${GREP} POINT_VERSION PRODUCT | ${CUT} -d= -f2`
VERSION_QUALIFIER=`${GREP} VERSION_QUALIFIER PRODUCT | ${CUT} -d= -f2`
VERSION_NUMBER_STRING="${MAJOR_VERSION}.${MINOR_VERSION}.${POINT_VERSION}${VERSION_QUALIFIER}"
VERSION_STRING="${SHORT_NAME}-${VERSION_NUMBER_STRING}"
# Loop through the JDK versions and build usin gthe "nightly" target.
# We'll set JAVA_HOME each time, and when we're done, we can continue using
# the last one.
ANY_BUILD_FAILED=0
ALL_BUILD_FAILED=1
TEST_FAILED=0
for VERSION in ${JAVA_VERSIONS}
do
  # Removes directory that might be still there if test failed before
  # @AfterClass that normaly performs the cleanup
  FSCACHE=/tmp/OpenDS.FSCache
  if ${TEST} -d FSCACHE
  then
    ${RM} -rf ${FSCACHE}
  fi
  JAVA_HOME=/java/${VERSION}
  export JAVA_HOME
  echo "Building with Java version ${VERSION}" >> ${LOG_FILE}
  echo ./build.sh nightlybuild -Ddisable.test.help=true -DMEM=512M >> ${LOG_FILE} 2>&1
  ./build.sh nightlybuild -Ddisable.test.help=true -DMEM=512M >> ${LOG_FILE} 2>&1
  if ${TEST} $? -eq 0
  then
    ALL_BUILD_FAILED=0
    echo ./build.sh nightlytests -Ddisable.test.help=true -DMEM=512M >> ${LOG_FILE} 2>&1
    ./build.sh nightlytests -Ddisable.test.help=true -DMEM=512M >> ${LOG_FILE} 2>&1
    if ${TEST} $? -ne 0
    then
      TEST_FAILED=1
    fi
  else
    ANY_BUILD_FAILED=1
  fi
  echo ./build.sh svr4 -Ddisable.test.help=true -DMEM=512M >> ${LOG_FILE} 2>&1
  ./build.sh svr4  -Ddisable.test.help=true -DMEM=512M >> ${LOG_FILE} 2>&1
  if ${TEST} $? -ne 0
  then
    ANY_BUILD_FAILED=1
  fi
  # Create the Java Web Start install archive.
  ADDRESS="www.opends.org"
  export ADDRESS
  BASE_PATH=/${BUILDS_DIR}/latest/OpenDS/build/webstart/install
  export BASE_PATH
  echo resource/webstart/create-webstart-standalone.sh >> ${LOG_FILE} 2>&1
  resource/webstart/create-webstart-standalone.sh >> ${LOG_FILE} 2>&1
  # fix to make create-webstart-standalone.sh support jdk5 and jdk6
  NEW_QUICKSETUP_FILE=`${MKTEMP}`
  JWS_QUICKSETUP_FILE=build/webstart/install/QuickSetup.jnlp
  cat ${JWS_QUICKSETUP_FILE} | sed "s/\/build\//\/build.${VERSION}\//g" > ${NEW_QUICKSETUP_FILE}
  mv ${JWS_QUICKSETUP_FILE} ${JWS_QUICKSETUP_FILE}.moved
  mv ${NEW_QUICKSETUP_FILE} ${JWS_QUICKSETUP_FILE}
  ${CHMOD} +r ${JWS_QUICKSETUP_FILE}
  echo >> ${LOG_FILE}
  echo >> ${LOG_FILE}
  ${MV} build build.${VERSION}
done
#If this is a sanity check, exit
if ${TEST} ${SANITY} -eq 1
then
  exit 1
fi
# Create a README.html file in for this build.
cat > ${BUILD_DIR}/README.html <<ENDOFREADME
<TABLE BORDER="0">
  <TR>
    <TD>
      <IMG SRC="http://${SERVER_NAME}/images/opends_logo_welcome.png" ALT="OpenDS Logo" WIDTH="197" HEIGHT="57">
    </TD>
    <TD>
      <H2>OpenDS Daily Build ${SUBJECT_DATE}</H2>
      <A HREF="${BUILD_URL}build-${BUILD_DATE}.log">Build Log File</A>
ENDOFREADME
for VERSION in ${JAVA_VERSIONS}
do
cat >> ${BUILD_DIR}/README.html <<ENDOFREADME
      <BR>
      <B>Build with Java Version ${VERSION}</B>
      <A HREF="${BUILD_URL}OpenDS/build.${VERSION}/package/${VERSION_STRING}.zip">${VERSION_STRING}.zip Build Package File</A><BR>
      <A HREF="${BUILD_URL}OpenDS/build.${VERSION}/package/${VERSION_STRING}-DSML.war">${VERSION_STRING}-DSML.war DSML Gateway</A><BR>
      <A HREF="${BUILD_URL}OpenDS/build.${VERSION}/webstart/install/QuickSetup.jnlp">QuickSetup Java Web Start Installer</A><BR>
      <A HREF="${BUILD_URL}OpenDS/build.${VERSION}/javadoc/">Javadoc Documentation</A><BR>
      <A HREF="${BUILD_URL}OpenDS/build.${VERSION}/src.zip">src.zip Source Archive</A><BR>
      <A HREF="${BUILD_URL}OpenDS/build.${VERSION}/unit-tests/report/results.txt">Unit Test Report</A><BR>
      <A HREF="${BUILD_URL}OpenDS/build.${VERSION}/coverage/reports/unit/">Unit Test Code Goverage Report</A><BR>
ENDOFREADME
done
cat >> ${BUILD_DIR}/README.html <<ENDOFREADME
    </TD>
  </TR>
</TABLE>
ENDOFREADME
# Remove the "latest" symlink (if it exists) and recreate it pointing to
# the new build.
cd ${BUILDS_DIR}
${RM} -f latest
${LN} -s ${BUILD_DIR} ${BUILDS_DIR}/latest
# Remove an old directory if appropriate.  We want to keep up to 30 builds.
COUNT=`${LS} | ${SORT} | ${GREP} -v latest | ${WC} -l | ${AWK} '{print $1}'`
if ${TEST} ${COUNT} -gt 30
then
  OLDEST=`${LS} | ${SORT} | ${GREP} -v latest | ${HEAD} -1`
  ${RM} -rf ${OLDEST}
fi
#JPI : to be able to access unit tests logs wia http
if test -d "/${BUILDS_DIR}/latest/OpenDS/build.jdk5/unit-tests/package-instance/logs"
then
   chmod -R 777 /${BUILDS_DIR}/latest/OpenDS/build.jdk5/unit-tests/package-instance/logs
fi
if test -d "/${BUILDS_DIR}/latest/OpenDS/build.jdk6/unit-tests/package-instance/logs"
then
   chmod -R 777 /${BUILDS_DIR}/latest/OpenDS/build.jdk6/unit-tests/package-instance/logs
fi
####
# Send an e-mail message to indicate that the build is complete.
BODY_FILE=`${MKTEMP}`
echo "OpenDS Daily Build ${SUBJECT_DATE}" > ${BODY_FILE}
echo "Java Versions Tested:  ${JAVA_VERSIONS}" >> ${BODY_FILE}
if ${TEST} ${ANY_BUILD_FAILED} -eq 0
then
  echo "Build Status:  Succeeded for all Java versions" >> ${BODY_FILE}
  if ${TEST} ${TEST_FAILED} -eq 0
  then
    SUBJECT_WITH_STATUS="${SUBJECT} (success)"
  else
    RESULT5_FILE=/$BUILD_DIR/OpenDS/build.jdk5/unit-tests/report/results.txt
    RESULT6_FILE=/$BUILD_DIR/OpenDS/build.jdk6/unit-tests/report/results.txt
    if ${TEST} -f ${RESULT5_FILE} && ${TEST} -f ${RESULT6_FILE}
    then
      RES=`cat ${RESULT5_FILE} ${RESULT6_FILE} | ${NAWK} ' BEGIN {F=0;T=0} /# Tests failed/ {F=F+$4} /# Test classes:/ {T=T+$4}  END {printf("%.2f\n",100-F/T*100)}`
      SUBJECT_WITH_STATUS="${SUBJECT} (build successful - ${RES}% tests passed)"
    elif ${TEST} -f ${RESULT5_FILE}
    then
      RES=`cat ${RESULT5_FILE} | ${NAWK} ' BEGIN {F=0;T=0} /# Tests failed/ {F=F+$4} /# Test classes:/ {T=T+$4}  END {printf("%.2f\n",100-F/T*100)}`
      SUBJECT_WITH_STATUS="${SUBJECT} (build successful - JDK5: ${RES}% tests passed - JDK6: no test result)"
    elif ${TEST} -f ${RESULT6_FILE}
    then
      RES=`cat ${RESULT6_FILE} | ${NAWK} ' BEGIN {F=0;T=0} /# Tests failed/ {F=F+$4} /# Test classes:/ {T=T+$4}  END {printf("%.2f\n",100-F/T*100)}`
      SUBJECT_WITH_STATUS="${SUBJECT} (build successful - JDK5: no test result - JDK6: ${RES}% tests passed)"
    else
      SUBJECT_WITH_STATUS="${SUBJECT} (build successful - No test result)"
    fi
  fi
else
  if ${TEST} ${ALL_BUILD_FAILED} -eq 0
  then
    echo "Build Status:  Failed for some Java versions" >> ${BODY_FILE}
  else
    echo "Build Status:  Failed for all Java versions" >> ${BODY_FILE}
  fi
  SUBJECT_WITH_STATUS="${SUBJECT} (failure)"
fi
echo "Build URL:  ${BUILD_URL}" >> ${BODY_FILE}
${SENDMAIL} --from "${SENDER}" --to "${RECIPIENT}" --subject "${SUBJECT_WITH_STATUS}" \
            --body "${BODY_FILE}" --attach "${BUILD_DIR}/README.html" \
            --attach "${LOG_FILE}"
${RM} ${BODY_FILE}
# build NDB Backend
/export/home/builds/bin/build-ndb.sh ${BUILD_DATE} ${BUILDS_DIR}
re-scripts/bin/daily-build_wt.sh
New file
@@ -0,0 +1,297 @@
#!/bin/sh
# If an option is given to this script, it is assumed as running in
# sanity check mode
# Define the Java versions that we will use to perform the build.
# These values should correspond to subdirectories below /java
JAVA_VERSIONS="jdk5 jdk6"
# Define absolute paths to all commands we will use in this script.
AWK=/usr/bin/awk
NAWK=/usr/bin/nawk
CAT=/usr/bin/cat
CHMOD=/usr/bin/chmod
CUT=/usr/bin/cut
DATE=/usr/bin/date
DIRNAME=/usr/bin/dirname
GREP=/usr/bin/grep
GZIP=/usr/bin/gzip
HEAD=/usr/bin/head
LN=/usr/bin/ln
LS=/usr/bin/ls
MKDIR=/usr/bin/mkdir
MKTEMP=/usr/bin/mktemp
MV=/usr/bin/mv
RM=/usr/bin/rm
SORT=/usr/bin/sort
SVN=/opt/csw/bin/svn
TAR=/usr/bin/tar
TEST=/usr/bin/test
WC=/usr/bin/wc
SENDMAIL=/export/home/builds/bin/send-mail.sh
#If an argument is provided, let's assume we run a sanity check (no mail)
if ${TEST} $# -gt 0
then
  SANITY=1
else
  SANITY=0
fi
# Change to the directory that contains this script.
cd `${DIRNAME} $0`
# Explicitly set a minimal PATH so we don't run anything unexpected.
PATH="/bin:/usr/bin"
export PATH
# Define paths that will be used during this script.
SCRIPT_DIR=`pwd`
BUILDS_DIR=/daily-builds
# Define the URL to use to access the repository.
SVN_URL=file:///svn-mirror/trunk/opends
# Define variables that will be used when sending the e-mail message.
#RECIPIENT="opends-staff@sun.com"
RECIPIENT="dev@opends.dev.java.net"
SENDER="opends@dev.java.net"
SUBJECT_DATE=`${DATE} '+%Y%m%d'`
SUBJECT="OpenDS Daily Build ${SUBJECT_DATE}"
# Create a new directory to hold the build.
BUILD_DATE=`${DATE} '+%Y%m%d%H%M%S'`
BUILD_DIR="${BUILDS_DIR}/${BUILD_DATE}"
${MKDIR} -p ${BUILD_DIR}
# Start generating a log file for the build.
LOG_FILE="${BUILD_DIR}/build-${BUILD_DATE}.log"
#SERVER_NAME="www2.opends.org"
SERVER_NAME="www.opends.org"
BUILD_URL="http://${SERVER_NAME}/${BUILDS_DIR}/${BUILD_DATE}/"
echo "OpenDS Daily Build ${SUBJECT_DATE}" > ${LOG_FILE}
echo "Build Time:  ${BUILD_DATE}" >> ${LOG_FILE}
echo "Build URL:   ${BUILD_URL}" >> ${LOG_FILE}
echo >> ${LOG_FILE}
echo >> ${LOG_FILE}
# Check out the head revision from the repository.
cd ${BUILD_DIR}
echo ${SVN} checkout -q --non-interactive ${SVN_URL} OpenDS >> ${LOG_FILE} 2>&1
${SVN} checkout -q --non-interactive ${SVN_URL} OpenDS >> ${LOG_FILE} 2>&1
echo >> ${LOG_FILE}
echo >> ${LOG_FILE}
# Add information about the checked-out revision to the log.
cd OpenDS
echo ${SVN} info >> ${LOG_FILE} 2>&1
${SVN} info >> ${LOG_FILE} 2>&1
echo >> ${LOG_FILE}
echo >> ${LOG_FILE}
# jp146654 :add path to OpenDMK
cd ${BUILD_DIR}/OpenDS
OLD_BUILDPROP_FILE=build.properties.origin
NEW_BUILDPROP_FILE=build.properties
echo update Opendmk lib path in OpenDS/build.properties>> ${LOG_FILE} 2>&1
echo cp ${NEW_BUILDPROP_FILE} ${NEW_BUILDPROP_FILE}.origin >> ${LOG_FILE} 2>&1
cp ${NEW_BUILDPROP_FILE} ${NEW_BUILDPROP_FILE}.origin
echo add new path   : /export/home/builds/OpenDMK-bin/lib>> ${LOG_FILE} 2>&1
${CAT}  ${OLD_BUILDPROP_FILE} | sed "s/opendmk\.lib\.dir\=/opendmk\.lib\.dir\=\/export\/home\/builds\/OpenDMK-bin\/lib/g" > ${NEW_BUILDPROP_FILE}
echo >> ${LOG_FILE}
echo >> ${LOG_FILE}
# end
# Parse the PRODUCT file to get the version information.
SHORT_NAME=`${GREP} SHORT_NAME PRODUCT | ${CUT} -d= -f2`
MAJOR_VERSION=`${GREP} MAJOR_VERSION PRODUCT | ${CUT} -d= -f2`
MINOR_VERSION=`${GREP} MINOR_VERSION PRODUCT | ${CUT} -d= -f2`
POINT_VERSION=`${GREP} POINT_VERSION PRODUCT | ${CUT} -d= -f2`
VERSION_QUALIFIER=`${GREP} VERSION_QUALIFIER PRODUCT | ${CUT} -d= -f2`
VERSION_NUMBER_STRING="${MAJOR_VERSION}.${MINOR_VERSION}.${POINT_VERSION}${VERSION_QUALIFIER}"
VERSION_STRING="${SHORT_NAME}-${VERSION_NUMBER_STRING}"
# Loop through the JDK versions and build usin gthe "nightly" target.
# We'll set JAVA_HOME each time, and when we're done, we can continue using
# the last one.
ANY_BUILD_FAILED=0
ALL_BUILD_FAILED=1
TEST_FAILED=0
for VERSION in ${JAVA_VERSIONS}
do
  # Removes directory that might be still there if test failed before
  # @AfterClass that normaly performs the cleanup
  FSCACHE=/tmp/OpenDS.FSCache
  if ${TEST} -d FSCACHE
  then
    ${RM} -rf ${FSCACHE}
  fi
  JAVA_HOME=/java/${VERSION}
  export JAVA_HOME
  echo "Building with Java version ${VERSION}" >> ${LOG_FILE}
  echo ./build.sh nightlybuild -Ddisable.test.help=true -DMEM=512M >> ${LOG_FILE} 2>&1
  ./build.sh nightlybuild -Ddisable.test.help=true -DMEM=512M >> ${LOG_FILE} 2>&1
  if ${TEST} $? -eq 0
  then
    ALL_BUILD_FAILED=0
    echo ./build.sh nightlytests -Ddisable.test.help=true -DMEM=512M >> ${LOG_FILE} 2>&1
#    ./build.sh nightlytests -Ddisable.test.help=true -DMEM=512M >> ${LOG_FILE} 2>&1
    if ${TEST} $? -ne 0
    then
      TEST_FAILED=1
    fi
  else
    ANY_BUILD_FAILED=1
  fi
  echo ./build.sh svr4 -Ddisable.test.help=true -DMEM=512M >> ${LOG_FILE} 2>&1
  ./build.sh svr4  -Ddisable.test.help=true -DMEM=512M >> ${LOG_FILE} 2>&1
  if ${TEST} $? -ne 0
  then
    ANY_BUILD_FAILED=1
  fi
  # Create the Java Web Start install archive.
  ADDRESS="www.opends.org"
  export ADDRESS
  BASE_PATH=/${BUILDS_DIR}/latest/OpenDS/build/webstart/install
  export BASE_PATH
  echo resource/webstart/create-webstart-standalone.sh >> ${LOG_FILE} 2>&1
  resource/webstart/create-webstart-standalone.sh >> ${LOG_FILE} 2>&1
  # fix to make create-webstart-standalone.sh support jdk5 and jdk6
  NEW_QUICKSETUP_FILE=`${MKTEMP}`
  JWS_QUICKSETUP_FILE=build/webstart/install/QuickSetup.jnlp
  cat ${JWS_QUICKSETUP_FILE} | sed "s/\/build\//\/build.${VERSION}\//g" > ${NEW_QUICKSETUP_FILE}
  mv ${JWS_QUICKSETUP_FILE} ${JWS_QUICKSETUP_FILE}.moved
  mv ${NEW_QUICKSETUP_FILE} ${JWS_QUICKSETUP_FILE}
  ${CHMOD} +r ${JWS_QUICKSETUP_FILE}
  echo >> ${LOG_FILE}
  echo >> ${LOG_FILE}
  ${MV} build build.${VERSION}
done
#If this is a sanity check, exit
if ${TEST} ${SANITY} -eq 1
then
  exit 1
fi
# Create a README.html file in for this build.
cat > ${BUILD_DIR}/README.html <<ENDOFREADME
<TABLE BORDER="0">
  <TR>
    <TD>
      <IMG SRC="http://${SERVER_NAME}/images/opends_logo_welcome.png" ALT="OpenDS Logo" WIDTH="197" HEIGHT="57">
    </TD>
    <TD>
      <H2>OpenDS Daily Build ${SUBJECT_DATE}</H2>
      <A HREF="${BUILD_URL}build-${BUILD_DATE}.log">Build Log File</A>
ENDOFREADME
for VERSION in ${JAVA_VERSIONS}
do
cat >> ${BUILD_DIR}/README.html <<ENDOFREADME
      <BR>
      <B>Build with Java Version ${VERSION}</B>
      <A HREF="${BUILD_URL}OpenDS/build.${VERSION}/package/${VERSION_STRING}.zip">${VERSION_STRING}.zip Build Package File</A><BR>
      <A HREF="${BUILD_URL}OpenDS/build.${VERSION}/package/${VERSION_STRING}-DSML.war">${VERSION_STRING}-DSML.war DSML Gateway</A><BR>
      <A HREF="${BUILD_URL}OpenDS/build.${VERSION}/webstart/install/QuickSetup.jnlp">QuickSetup Java Web Start Installer</A><BR>
      <A HREF="${BUILD_URL}OpenDS/build.${VERSION}/javadoc/">Javadoc Documentation</A><BR>
      <A HREF="${BUILD_URL}OpenDS/build.${VERSION}/src.zip">src.zip Source Archive</A><BR>
      <A HREF="${BUILD_URL}OpenDS/build.${VERSION}/unit-tests/report/results.txt">Unit Test Report</A><BR>
      <A HREF="${BUILD_URL}OpenDS/build.${VERSION}/coverage/reports/unit/">Unit Test Code Goverage Report</A><BR>
ENDOFREADME
done
cat >> ${BUILD_DIR}/README.html <<ENDOFREADME
    </TD>
  </TR>
</TABLE>
ENDOFREADME
# Remove the "latest" symlink (if it exists) and recreate it pointing to
# the new build.
cd ${BUILDS_DIR}
${RM} -f latest
${LN} -s ${BUILD_DIR} ${BUILDS_DIR}/latest
# Remove an old directory if appropriate.  We want to keep up to 30 builds.
COUNT=`${LS} | ${SORT} | ${GREP} -v latest | ${WC} -l | ${AWK} '{print $1}'`
if ${TEST} ${COUNT} -gt 30
then
  OLDEST=`${LS} | ${SORT} | ${GREP} -v latest | ${HEAD} -1`
  ${RM} -rf ${OLDEST}
fi
#JPI : to be able to access unit tests logs wia http
if test -d "/${BUILDS_DIR}/latest/OpenDS/build.jdk5/unit-tests/package-instance/logs"
then
   chmod -R 777 /${BUILDS_DIR}/latest/OpenDS/build.jdk5/unit-tests/package-instance/logs
fi
if test -d "/${BUILDS_DIR}/latest/OpenDS/build.jdk6/unit-tests/package-instance/logs"
then
   chmod -R 777 /${BUILDS_DIR}/latest/OpenDS/build.jdk6/unit-tests/package-instance/logs
fi
####
# Send an e-mail message to indicate that the build is complete.
BODY_FILE=`${MKTEMP}`
echo "OpenDS Daily Build ${SUBJECT_DATE}" > ${BODY_FILE}
echo "Java Versions Tested:  ${JAVA_VERSIONS}" >> ${BODY_FILE}
if ${TEST} ${ANY_BUILD_FAILED} -eq 0
then
  echo "Build Status:  Succeeded for all Java versions" >> ${BODY_FILE}
  if ${TEST} ${TEST_FAILED} -eq 0
  then
    SUBJECT_WITH_STATUS="${SUBJECT} (success)"
  else
    RES=`cat /$BUILD_DIR/OpenDS/build.jdk?/unit-tests/report/results.txt | ${NAWK} ' BEGIN {F=0;T=0} /# Tests failed/ {F=F+$4} /# Test classes:/ {T=T+$4}  END {printf("%.2f\n",100-F/T*100)}`
    SUBJECT_WITH_STATUS="${SUBJECT} (build successful - ${RES}% tests passed)"
  fi
else
  if ${TEST} ${ALL_BUILD_FAILED} -eq 0
  then
    echo "Build Status:  Failed for some Java versions" >> ${BODY_FILE}
  else
    echo "Build Status:  Failed for all Java versions" >> ${BODY_FILE}
  fi
  SUBJECT_WITH_STATUS="${SUBJECT} (failure)"
fi
echo "Build URL:  ${BUILD_URL}" >> ${BODY_FILE}
${SENDMAIL} --from "${SENDER}" --to "${RECIPIENT}" --subject "${SUBJECT_WITH_STATUS}" \
            --body "${BODY_FILE}" --attach "${BUILD_DIR}/README.html" \
            --attach "${LOG_FILE}"
${RM} ${BODY_FILE}
re-scripts/bin/lib/OpenDS.jar
Binary files differ
re-scripts/bin/lib/activation.jar
Binary files differ
re-scripts/bin/lib/mail.jar
Binary files differ
re-scripts/bin/promote-weekly-build-candidate.sh
New file
@@ -0,0 +1,45 @@
#!/bin/sh
# Change to the directory that contains this script.
cd `dirname $0`
# Explicitly set a minimal PATH so we won't run anything unexpected.
PATH="/bin:/usr/bin"
export PATH
# Define absolute paths to all commands that we will use in this script.
CAT="/usr/bin/cat"
RM="/usr/bin/rm"
GREP="/usr/bin/grep"
LN="/usr/bin/ln"
# Find the latest candidate.  If there isn't one, then fail.
SCRIPT_DIR=`/usr/bin/pwd`
BUILDS_DIR="/promoted-builds"
BUILD_NUMBER_FILE="buildnumber.txt"
CANDIDATE_DIR_NAME="candidate"
LATEST_DIR_NAME="latest"
CANDIDATE_DIR="${BUILDS_DIR}/${CANDIDATE_DIR_NAME}"
if test ! -L "${CANDIDATE_DIR}"
then
  echo "ERROR:  No candidate directory ${CANDIDATE_DIR} could be found"
  echo "Does a candidate build exist?"
  exit 1
fi
# Get the version number for this build.
VERSION_NUMBER_FILE=version.txt
VERSION_NUMBER_STRING=`${CAT} "${CANDIDATE_DIR}/${VERSION_NUMBER_FILE}"`
# Remove the existing "latest" symlink and create a new one pointing to the
# current candidate build.
cd "${BUILDS_DIR}"
${RM} -f "${LATEST_DIR_NAME}"
${LN} -s "${BUILDS_DIR}/${VERSION_NUMBER_STRING}" "${BUILDS_DIR}/${LATEST_DIR_NAME}"
${RM} -f "${CANDIDATE_DIR_NAME}"
re-scripts/bin/respin-weekly-build.sh
New file
@@ -0,0 +1,45 @@
#!/bin/sh
# Change to the directory that contains this script.
cd `dirname $0`
# Explicitly set a minimal PATH so we won't run anything unexpected.
PATH="/bin:/usr/bin"
export PATH
# Define absolute paths to all commands that we will use in this script.
CAT="/usr/bin/cat"
RM="/usr/bin/rm"
GREP="/usr/bin/grep"
# Find the latest candidate.  If there isn't one, then fail.
SCRIPT_DIR=`/usr/bin/pwd`
BUILDS_DIR="/promoted-builds"
BUILD_NUMBER_FILE="buildnumber.txt"
CANDIDATE_DIR_NAME="candidate"
CANDIDATE_DIR="${BUILDS_DIR}/${CANDIDATE_DIR_NAME}"
if test ! -L "${CANDIDATE_DIR}"
then
  echo "ERROR:  No candidate directory ${CANDIDATE_DIR} could be found"
  echo "Does a candidate build exist?"
  exit 1
fi
# Get the version number for this build.
VERSION_NUMBER_FILE=version.txt
VERSION_NUMBER_STRING=`${CAT} "${CANDIDATE_DIR}/${VERSION_NUMBER_FILE}"`
VERSION_STRING="OpenDS-${VERSION_NUMBER_STRING}"
# Remove the existing candidate and build directory.
cd "${BUILDS_DIR}"
${RM} -rf "${VERSION_NUMBER_STRING}" "${CANDIDATE_DIR_NAME}"
# Kick off the weekly build again.
"${SCRIPT_DIR}/weekly-build.sh"
re-scripts/bin/rtm-build.sh
New file
@@ -0,0 +1,392 @@
#!/bin/sh
# Define the Java versions that we will use to perform the build.
# These values should correspond to subdirectories below /java
#JAVA_VERSIONS="jdk5 jdk6"
# Define absolute paths to all commands that we will use in this script.
AWK="/usr/bin/awk"
BASENAME=/usr/bin/basename
CAT="/usr/bin/cat"
CHMOD="/usr/bin/chmod"
DATE="/usr/bin/date"
DIGEST="/usr/bin/digest"
DIRNAME="/usr/bin/dirname"
GREP="/usr/bin/grep"
LN="/usr/bin/ln"
MKDIR="/usr/bin/mkdir"
MKTEMP="/usr/bin/mktemp"
MV="/usr/bin/mv"
PS="/usr/bin/ps"
RM="/usr/bin/rm"
SVN="/opt/csw/bin/svn"
SENDMAIL="/export/home/builds/bin/send-mail.sh"
TEST=/usr/bin/test
#If an argument is provided, let's assume we run a sanity check (no mail)
if ${TEST} $# -gt 0
then
  SANITY=1
else
  SANITY=0
fi
# Change to the directory that contains this script.
cd `${DIRNAME} $0`
# Explicitly set a minimal PATH so we don't run anything unexpected.
PATH="/bin:/usr/bin"
export PATH
# Sanity checks
# Removes directory that might be still there if test failed before @AfterClass
# that normaly performs the cleanup
FSCACHE=/tmp/OpenDS.FSCache
if ${TEST} -d FSCACHE
then
  ${RM} -rf ${FSCACHE}
fi
# Checks that no weekly build is running
${PS} | grep `${BASENAME} $0`
if ${TEST} $? -eq 0
  then
  echo "This script is already running. Aborting..."
  exit 1
fi
# Checks that no daily build is running
${PS} | grep daily\.sh
if ${TEST} $? -eq 0
  then
  echo "The daily script is currently running. Aborting..."
  exit 1
fi
# Define paths that will be used during this script.
SCRIPT_DIR=`pwd`
BUILDS_DIR_L=/promoted-builds
BUILDS_DIR=/candidate-1.0.0/
WIKI_HOME=https://www.opends.org/1.0
# Define the URL to use to access the repository.
SVN_URL=file:///svn-mirror/trunk/opends
# Start creating a log file that will be used to record progress.
LOG_FILE=`${MKTEMP}`
BUILD_DATE=`${DATE} '+%Y%m%d%H%M%S'`
echo "Beginning weekly build processing at ${BUILD_DATE}" > "${LOG_FILE}"
echo "" >> "${LOG_FILE}"
# Define paths to all directories that we will access in this script.
# These should all be absolute paths.
BUILD_NUMBER_FILE="buildnumber.txt"
REVISION_NUMBER_FILE="revision.txt"
VERSION_NUMBER_FILE="version.txt"
# Look at what is currently the latest weekly build to get information we need
# to bootstrap this build.
LAST_BUILD_DIR="${BUILDS_DIR_L}/latest"
LAST_BUILD_NUMBER=`cat ${LAST_BUILD_DIR}/${BUILD_NUMBER_FILE}`
LAST_REVISION_NUMBER=`cat ${LAST_BUILD_DIR}/${REVISION_NUMBER_FILE}`
BUILD_NUMBER=`echo "${LAST_BUILD_NUMBER} + 1" | bc`
#JPI
BUILD_NUMBER=""
BUILD_NUMBER_STR=""
#if test ${BUILD_NUMBER} -le 9
#then
#  BUILD_NUMBER_STR="00${BUILD_NUMBER}"
#else
#  if test ${BUILD_NUMBER} -le 99
#  then
#    BUILD_NUMBER_STR="0${BUILD_NUMBER}"
#  else
#    BUILD_NUMBER_STR="${BUILD_NUMBER}"
#  fi
#fi
echo "*** Build Number Information ***" >> "${LOG_FILE}"
echo "LAST_BUILD_DIR=${LAST_BUILD_DIR}" >> "${LOG_FILE}"
echo "LAST_BUILD_NUMBER=${LAST_BUILD_NUMBER}" >> "${LOG_FILE}"
echo "LAST_REVISION_NUMBER=${LAST_REVISION_NUMBER}" >> "${LOG_FILE}"
echo "BUILD_NUMBER=${BUILD_NUMBER}" >> "${LOG_FILE}"
echo "BUILD_NUMBER_STR=${BUILD_NUMBER_STR}" >> "${LOG_FILE}"
echo "" >> "${LOG_FILE}"
# Define information that we will use to access the repository.
PRODUCT_URL="${SVN_URL}/PRODUCT"
# Parse the contents of the PRODUCT file to get the version information.
echo "*** Product Version Information ***" >> "${LOG_FILE}"
PRODUCT_FILE=`${MKTEMP}`
echo ${SVN} cat --non-interactive "${PRODUCT_URL}" \> "${PRODUCT_FILE}" >> "${LOG_FILE}"
${SVN} cat --non-interactive "${PRODUCT_URL}" > "${PRODUCT_FILE}"
SHORT_NAME=`${GREP} SHORT_NAME "${PRODUCT_FILE}" | cut -d= -f2`
MAJOR_VERSION=`${GREP} MAJOR_VERSION "${PRODUCT_FILE}" | cut -d= -f2`
MINOR_VERSION=`${GREP} MINOR_VERSION "${PRODUCT_FILE}" | cut -d= -f2`
POINT_VERSION=`${GREP} POINT_VERSION "${PRODUCT_FILE}" | cut -d= -f2`
VERSION_QUALIFIER=`${GREP} VERSION_QUALIFIER "${PRODUCT_FILE}" | cut -d= -f2`
#JPI
#VERSION_NUMBER_STRING="${MAJOR_VERSION}.${MINOR_VERSION}.${POINT_VERSION}${VERSION_QUALIFIER}${BUILD_NUMBER_STR}"
VERSION_NUMBER_STRING="${MAJOR_VERSION}.${MINOR_VERSION}.${POINT_VERSION}${VERSION_QUALIFIER}"
VERSION_STRING="${SHORT_NAME}-${VERSION_NUMBER_STRING}"
${RM} "${PRODUCT_FILE}"
echo "SHORT_NAME=${SHORT_NAME}" >> "${LOG_FILE}"
echo "MAJOR_VERSION=${MAJOR_VERSION}" >> "${LOG_FILE}"
echo "MINOR_VERSION=${MINOR_VERSION}" >> "${LOG_FILE}"
echo "POINT_VERSION=${POINT_VERSION}" >> "${LOG_FILE}"
echo "VERSION_QUALIFIER=${VERSION_QUALIFIER}" >> "${LOG_FILE}"
echo "VERSION_STRING=${VERSION_STRING}" >> "${LOG_FILE}"
echo "" >> "${LOG_FILE}"
# Define variables that will be used when sending the e-mail message.
#RECIPIENT="qa@opends.dev.java.net"
RECIPIENT="jeanine.pikus@sun.com"
SENDER="opends@dev.java.net"
SUBJECT="OpenDS Weekly Build Candidate ${VERSION_NUMBER_STRING}"
# Create a new directory to hold the build.
echo "*** Checking Out the Server ***" >> "${LOG_FILE}"
BUILD_DIR="${BUILDS_DIR}/${VERSION_NUMBER_STRING}"
if test -d "${BUILD_DIR}"
then
  echo "ERROR:  Target build directory ${BUILD_DIR} already exists"
  echo "ERROR:  Aborting the weekly build attempt."
  exit 1
fi
echo ${MKDIR} -p "${BUILDS_DIR}/${VERSION_NUMBER_STRING}" >> "${LOG_FILE}"
${MKDIR} -p "${BUILDS_DIR}/${VERSION_NUMBER_STRING}"
echo cd "${BUILDS_DIR}/${VERSION_NUMBER_STRING}" >> "${LOG_FILE}"
cd "${BUILD_DIR}"
echo ${MV} "${LOG_FILE}" "${VERSION_STRING}.log" >> "${LOG_FILE}"
${MV} "${LOG_FILE}" "${VERSION_STRING}.log" && LOG_FILE="${BUILD_DIR}/${VERSION_STRING}.log"
${CHMOD} 0644 "${LOG_FILE}"
echo "LOG_FILE=${LOG_FILE}" >> "${LOG_FILE}"
# Check out the head revision from the repository.
# JPI : checkout svn rev = 4337 (build16)
echo ${SVN} checkout -r 4337 -q --non-interactive ${SVN_URL} OpenDS >> "${LOG_FILE}" 2>&1
${SVN} checkout -r 4337 -q --non-interactive ${SVN_URL} OpenDS >> ${LOG_FILE} 2>&1
cd OpenDS
REVISION_NUMBER=`${SVN} info | ${GREP} '^Revision:' | ${AWK} '{print $2}'`
echo "REVISION_NUMBER=${REVISION_NUMBER}" >> "${LOG_FILE}"
echo "" >> "${LOG_FILE}"
# Add information about the checked out revision to the log file.
echo ${SVN} info >> "${LOG_FILE}" 2>&1
${SVN} info >> "${LOG_FILE}" 2>&1
echo "" >> "${LOG_FILE}"
# jp146654 :add path to OpenDMK
cd ${BUILD_DIR}/OpenDS
OLD_BUILDPROP_FILE=build.properties.origin
NEW_BUILDPROP_FILE=build.properties
echo update Opendmk lib path in OpenDS/build.properties>> ${LOG_FILE} 2>&1
echo cp ${NEW_BUILDPROP_FILE} ${NEW_BUILDPROP_FILE}.origin >> ${LOG_FILE} 2>&1
cp ${NEW_BUILDPROP_FILE} ${NEW_BUILDPROP_FILE}.origin
echo add new path   : /export/home/builds/OpenDMK-bin/lib>> ${LOG_FILE} 2>&1
${CAT}  ${OLD_BUILDPROP_FILE} | sed "s/opendmk\.lib\.dir\=/opendmk\.lib\.dir\=\/export\/home\/builds\/OpenDMK-bin\/lib/g" > ${NEW_BUILDPROP_FILE}
echo >> ${LOG_FILE}
echo >> ${LOG_FILE}
# end jp146654
JAVA_HOME=/java/jdk5
export JAVA_HOME
# Perform a build of the server using the "weekly" target.
echo "*** Building the Server ***" >> "${LOG_FILE}"
#JPI
#echo ./build.sh weekly -DBUILD_NUMBER=${BUILD_NUMBER} -Ddisable.test.help=true -DMEM=512M >> "${LOG_FILE}" 2>&1
#CH
#echo ./build.sh weekly -Ddisable.test.help=true -DMEM=512M >> "${LOG_FILE}" 2>&1
echo ./build.sh weekly svr4 -Dwiki.home=${WIKI_HOME} -Ddisable.test.help=true -DMEM=512M >> "${LOG_FILE}" 2>&1
#./build.sh weekly -DBUILD_NUMBER=${BUILD_NUMBER} -Ddisable.test.help=true -DMEM=512M >> "${LOG_FILE}" 2>&1
#./build.sh weekly -Ddisable.test.help=true -DMEM=512M >> "${LOG_FILE}" 2>&1
./build.sh weekly svr4 -Dwiki.home=${WIKI_HOME} -Ddisable.test.help=true -DMEM=512M >> "${LOG_FILE}" 2>&1
if test $? -eq 0
then
  STATUS="Successful"
else
  STATUS="FAILED"
fi
echo "STATUS=${STATUS}" >> "${LOG_FILE}"
echo "" >> "${LOG_FILE}"
# Create the Java Web Start Install Archive.
ADDRESS="www.opends.org"
export ADDRESS
echo "*** Creating Java Web Start Install Archive ***" >> "${LOG_FILE}"
BASE_PATH="/promoted-builds/${VERSION_NUMBER_STRING}/install"
export BASE_PATH
echo "BASE_PATH=${BASE_PATH}" >> "${LOG_FILE}"
echo resource/webstart/create-webstart-standalone.sh >> "${LOG_FILE}" 2>&1
resource/webstart/create-webstart-standalone.sh  >> "${LOG_FILE}" 2>&1
echo "" >> "${LOG_FILE}"
# Symlink all of the appropriate files into place in the base build directory.
#${LN} -s "${BUILD_DIR}/OpenDS/build/package/${VERSION_STRING}.zip" "${BUILD_DIR}/${VERSION_STRING}.zip"
#${LN} -s "${BUILD_DIR}/OpenDS/build/package/${VERSION_STRING}-DSML.war" "${BUILD_DIR}/${VERSION_STRING}-DSML.war"
#${LN} -s "${BUILD_DIR}/OpenDS/build/src.zip" "${BUILD_DIR}/src.zip"
#${LN} -s "${BUILD_DIR}/OpenDS/build/webstart/install" "${BUILD_DIR}/install"
#${LN} -s "${BUILD_DIR}/OpenDS/build/javadoc" "${BUILD_DIR}/javadoc"
${LN} -s "OpenDS/build/package/${VERSION_STRING}.zip" "${BUILD_DIR}/${VERSION_STRING}.zip"
${LN} -s "OpenDS/build/package/${VERSION_STRING}-DSML.war" "${BUILD_DIR}/${VERSION_STRING}-DSML.war"
${LN} -s "OpenDS/build/src.zip" "${BUILD_DIR}/src.zip"
${LN} -s "OpenDS/build/webstart/install" "${BUILD_DIR}/install"
${LN} -s "OpenDS/build/javadoc" "${BUILD_DIR}/javadoc"
# Create MD5 digests of the appropriate files.
echo "*** Calculating MD5 Digests of Build Files ***" >> "${LOG_FILE}"
${DIGEST} -a md5 "${BUILD_DIR}/OpenDS/build/package/${VERSION_STRING}.zip" > "${BUILD_DIR}/${VERSION_STRING}.zip.md5"
${DIGEST} -a md5 "${BUILD_DIR}/OpenDS/build/package/${VERSION_STRING}-DSML.war" > "${BUILD_DIR}/${VERSION_STRING}-DSML.war.md5"
${DIGEST} -a md5 "${BUILD_DIR}/OpenDS/build/src.zip" > "${BUILD_DIR}/src.zip.md5"
CORE_SERVER_MD5=`${CAT} "${BUILD_DIR}/${VERSION_STRING}.zip.md5"`
DSML_GATEWAY_MD5=`${CAT} "${BUILD_DIR}/${VERSION_STRING}-DSML.war.md5"`
SRC_ZIP_MD5=`${CAT} "${BUILD_DIR}/src.zip.md5"`
echo "CORE_SERVER_MD5=${CORE_SERVER_MD5}" >> "${LOG_FILE}"
echo "DSML_GATEWAY_MD5=${DSML_GATEWAY_MD5}" >> "${LOG_FILE}"
echo "SRC_ZIP_MD5=${SRC_ZIP_MD5}" >> "${LOG_FILE}"
echo "" >> "${LOG_FILE}"
#JPI : don't sv the build number
# Write the build number and revision numbers to text files.
#echo "${BUILD_NUMBER}" > "${BUILD_DIR}/${BUILD_NUMBER_FILE}"
#echo "${REVISION_NUMBER}" > "${BUILD_DIR}/${REVISION_NUMBER_FILE}"
#echo "${VERSION_NUMBER_STRING}" > "${BUILD_DIR}/${VERSION_NUMBER_FILE}"
# Get a log of changes since the last build.
echo "*** Getting changelog data ***" >> "${LOG_FILE}"
LAST_REV_PLUS_ONE=`echo "${LAST_REVISION_NUMBER}+1" | bc`
echo ${SVN} log -r ${LAST_REV_PLUS_ONE}:${REVISION_NUMBER} >> "${LOG_FILE}" 2>&1
${SVN} log -r ${LAST_REV_PLUS_ONE}:${REVISION_NUMBER} > "${BUILD_DIR}/changes.log" 2>&1
echo "" >> "${LOG_FILE}"
#If this is a sanity check, exit
if ${TEST} ${SANITY} -eq 1
then
  echo "Sanity check done."
  exit 1
fi
# Create an index.html in the build directory.
${CAT} > "${BUILD_DIR}/index.html" <<ENDOFHTML
<!DOCTYPE html PUBLIC "-//Tigris//DTD XHTML 1.0 Transitional//EN" "http://style.tigris.org/nonav/tigris_transitional.dtd">
<HTML>
  <HEAD>
    <TITLE>OpenDS Weekly Build ${VERSION_NUMBER_STRING}</TITLE>
    <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">
    <LINK REL="SHORTCUT ICON" HREF="/public/images/opends_favicon.gif">
    <LINK REL="stylesheet" HREF="/public/css/opends.css" TYPE="text/css">
    <STYLE>
      tr { text-align:left; vertical-align:top; padding:5px 10px; width:180px; background-color:#f5f5f5 }
    </STYLE>
  </HEAD>
  <BODY>
    <TABLE BORDER="0" CELLPADDING="10">
      <TR STYLE="background-color:#ffffff">
        <TD VALIGN="MIDDLE">
          <IMG SRC="/images/opends_logo_welcome.png" ALT="OpenDS Logo" WIDTH="197" HEIGHT="57">
        </TD>
        <TD VALIGN="MIDDLE">
          <H1>OpenDS Weekly Build ${VERSION_NUMBER_STRING}</H1>
        </TD>
      </TR>
      <TR>
        <TD>Weekly Build Number</TD>
        <TD>${BUILD_NUMBER}</TD>
      </TR>
      <TR>
        <TD>Subversion Revision Number</TD>
        <TD>${REVISION_NUMBER}</TD>
      </TR>
      <TR>
        <TD>QuickSetup Installer</TD>
        <TD><A HREF="install/QuickSetup.jnlp">install/QuickSetup.jnlp</A></TD>
      </TR>
      <TR>
        <TD>Core Server Zip File</TD>
        <TD><A HREF="${VERSION_STRING}.zip">${VERSION_STRING}.zip</A></TD>
      </TR>
      <TR>
        <TD>Core Server MD5 Checksum</TD>
        <TD>${CORE_SERVER_MD5}</TD>
      </TR>
      <TR>
        <TD>DSML Gateway WAR File</TD>
        <TD><A HREF="${VERSION_STRING}-DSML.war">${VERSION_STRING}-DSML.war</A></TD>
      </TR>
      <TR>
        <TD>DSML Gateway MD5 Checksum</TD>
        <TD>${DSML_GATEWAY_MD5}</TD>
      </TR>
      <TR>
        <TD>src.zip Server Source Archive</TD>
        <TD><A HREF="src.zip">src.zip</A></TD>
      </TR>
      <TR>
        <TD>src.zip MD5 Checksum</TD>
        <TD>${SRC_ZIP_MD5}</TD>
      </TR>
      <TR>
        <TD>Javadoc Documentation</TD>
        <TD><A HREF="javadoc/index.html">javadoc/index.html</A></TD>
      </TR>
      <TR>
        <TD>Changelog</TD>
        <TD><A HREF="changes.log">changes.log</A></TD>
      </TR>
      <TR>
        <TD>Build Log</TD>
        <TD><A HREF="${VERSION_STRING}.log">${VERSION_STRING}.log</A></TD>
      </TR>
    </TABLE>
    <BR>
    <A HREF="/promoted-builds/">See All Weekly Builds</A><BR>
    <A HREF="http://www.opends.org/">http://www.opends.org/</A><BR>
    <!-- Omniture -->
    <script src="https://www.opends.org/wiki/scripts/s_code_remote.js" language="JavaScript"/>
  </BODY>
</HTML>
ENDOFHTML
# Create a "candidate" symbolic link to this build.
${RM} -f "${BUILDS_DIR}/candidate"
${LN} -s "${BUILD_DIR}" "${BUILDS_DIR}/candidate"
# Create a temporary file to use for the e-mail message.
BODY_FILE=`${MKTEMP}`
echo "A new OpenDS weekly build candidate is available at" > ${BODY_FILE}
#echo "http://www2.opends.org/promoted-builds/candidate/" >> ${BODY_FILE}
echo "http://www.opends.org/promoted-builds/candidate/" >> ${BODY_FILE}
# Send the message and delete the temporary file.
${SENDMAIL} --from "${SENDER}" --to "${RECIPIENT}" --subject "${STATUS} ${SUBJECT}" \
            --body "${BODY_FILE}" --attach "${BUILD_DIR}/index.html" \
            --attach "${LOG_FILE}"
${RM} "${BODY_FILE}"
re-scripts/bin/send-mail.sh
New file
@@ -0,0 +1,11 @@
#!/bin/sh
JAVA_HOME=/java/jdk6
export JAVA_HOME
SCRIPT_DIR=`dirname ${0}`
CLASSPATH=${SCRIPT_DIR}/lib/OpenDS.jar:${SCRIPT_DIR}/lib/mail.jar:${SCRIPT_DIR}/lib/activation.jar
export CLASSPATH
${JAVA_HOME}/bin/java org.opends.server.util.EMailMessage --host global-zone "${@}"
re-scripts/bin/test/daily-build.sh
New file
@@ -0,0 +1,264 @@
#!/bin/sh
# If an option is given to this script, it is assumed as running in
# sanity check mode
# Define the Java versions that we will use to perform the build.
# These values should correspond to subdirectories below /java
JAVA_VERSIONS="jdk5 jdk6"
# Define absolute paths to all commands we will use in this script.
AWK=/usr/bin/awk
CAT=/usr/bin/cat
CHMOD=/usr/bin/chmod
CUT=/usr/bin/cut
DATE=/usr/bin/date
DIRNAME=/usr/bin/dirname
GREP=/usr/bin/grep
GZIP=/usr/bin/gzip
HEAD=/usr/bin/head
LN=/usr/bin/ln
LS=/usr/bin/ls
MKDIR=/usr/bin/mkdir
MKTEMP=/usr/bin/mktemp
MV=/usr/bin/mv
RM=/usr/bin/rm
SORT=/usr/bin/sort
SVN=/opt/csw/bin/svn
TAR=/usr/bin/tar
TEST=/usr/bin/test
WC=/usr/bin/wc
SENDMAIL=/export/home/builds/bin/send-mail.sh
#If an argument is provided, let's assume we run a sanity check (no mail)
if ${TEST} $# -gt 0
then
  SANITY=1
else
  SANITY=0
fi
# Change to the directory that contains this script.
cd `${DIRNAME} $0`
# Explicitly set a minimal PATH so we don't run anything unexpected.
PATH="/bin:/usr/bin"
export PATH
# Define paths that will be used during this script.
SCRIPT_DIR=`pwd`
BUILDS_DIR=/daily-builds/
# Define the URL to use to access the repository.
SVN_URL=file:///svn-mirror/trunk/opends
# Define variables that will be used when sending the e-mail message.
#RECIPIENT="opends-staff@sun.com"
RECIPIENT="dev@opends.dev.java.net"
SENDER="opends@dev.java.net"
SUBJECT_DATE=`${DATE} '+%Y%m%d'`
SUBJECT="OpenDS Daily Build ${SUBJECT_DATE}"
# Create a new directory to hold the build.
BUILD_DATE=`${DATE} '+%Y%m%d%H%M%S'`
BUILD_DIR="${BUILDS_DIR}/${BUILD_DATE}"
${MKDIR} -p ${BUILD_DIR}
# Start generating a log file for the build.
LOG_FILE="${BUILD_DIR}/build-${BUILD_DATE}.log"
#SERVER_NAME="www2.opends.org"
SERVER_NAME="www.opends.org"
BUILD_URL="http://${SERVER_NAME}/daily-builds/${BUILD_DATE}/"
echo "OpenDS Daily Build ${SUBJECT_DATE}" > ${LOG_FILE}
echo "Build Time:  ${BUILD_DATE}" >> ${LOG_FILE}
echo "Build URL:   ${BUILD_URL}" >> ${LOG_FILE}
echo >> ${LOG_FILE}
echo >> ${LOG_FILE}
# Check out the head revision from the repository.
cd ${BUILD_DIR}
echo ${SVN} checkout -q --non-interactive ${SVN_URL} OpenDS >> ${LOG_FILE} 2>&1
${SVN} checkout -q --non-interactive ${SVN_URL} OpenDS >> ${LOG_FILE} 2>&1
echo >> ${LOG_FILE}
echo >> ${LOG_FILE}
# Add information about the checked-out revision to the log.
cd OpenDS
echo ${SVN} info >> ${LOG_FILE} 2>&1
${SVN} info >> ${LOG_FILE} 2>&1
echo >> ${LOG_FILE}
echo >> ${LOG_FILE}
# jp146654 :add path to OpenDMK
cd ${BUILD_DIR}/OpenDS
OLD_BUILDPROP_FILE=build.properties.origin
NEW_BUILDPROP_FILE=build.properties
echo update Opendmk lib path in OpenDS/build.properties>> ${LOG_FILE} 2>&1
echo cp ${NEW_BUILDPROP_FILE} ${NEW_BUILDPROP_FILE}.origin >> ${LOG_FILE} 2>&1
cp ${NEW_BUILDPROP_FILE} ${NEW_BUILDPROP_FILE}.origin
echo add new path   : /export/home/builds/OpenDMK-bin/lib>> ${LOG_FILE} 2>&1
${CAT}  ${OLD_BUILDPROP_FILE} | sed "s/opendmk\.lib\.dir\=/opendmk\.lib\.dir\=\/export\/home\/builds\/OpenDMK-bin\/lib/g" > ${NEW_BUILDPROP_FILE}
echo >> ${LOG_FILE}
echo >> ${LOG_FILE}
# end
# Parse the PRODUCT file to get the version information.
SHORT_NAME=`${GREP} SHORT_NAME PRODUCT | ${CUT} -d= -f2`
MAJOR_VERSION=`${GREP} MAJOR_VERSION PRODUCT | ${CUT} -d= -f2`
MINOR_VERSION=`${GREP} MINOR_VERSION PRODUCT | ${CUT} -d= -f2`
POINT_VERSION=`${GREP} POINT_VERSION PRODUCT | ${CUT} -d= -f2`
VERSION_QUALIFIER=`${GREP} VERSION_QUALIFIER PRODUCT | ${CUT} -d= -f2`
VERSION_NUMBER_STRING="${MAJOR_VERSION}.${MINOR_VERSION}.${POINT_VERSION}${VERSION_QUALIFIER}"
VERSION_STRING="${SHORT_NAME}-${VERSION_NUMBER_STRING}"
# Loop through the JDK versions and build usin gthe "nightly" target.
# We'll set JAVA_HOME each time, and when we're done, we can continue using
# the last one.
ANY_FAILED=0
ALL_FAILED=1
for VERSION in ${JAVA_VERSIONS}
do
  # Removes directory that might be still there if test failed before
  # @AfterClass that normaly performs the cleanup
  FSCACHE=/tmp/OpenDS.FSCache
  if ${TEST} -d FSCACHE
  then
    ${RM} -rf ${FSCACHE}
  fi
  JAVA_HOME=/java/${VERSION}
  export JAVA_HOME
  echo "Building with Java version ${VERSION}" >> ${LOG_FILE}
  echo ./build.sh nightly svr4 -Ddisable.test.help=true -DMEM=512M >> ${LOG_FILE} 2>&1
  ./build.sh nightly svr4 -Ddisable.test.help=true -DMEM=512M >> ${LOG_FILE} 2>&1
  if ${TEST} $? -eq 0
  then
    ALL_FAILED=0
  else
    ANY_FAILED=1
  fi
  # Create the Java Web Start install archive.
  ADDRESS="www.opends.org"
  export ADDRESS
  BASE_PATH=/daily-builds/latest/OpenDS/build/webstart/install
  export BASE_PATH
  echo resource/webstart/create-webstart-standalone.sh >> ${LOG_FILE} 2>&1
  resource/webstart/create-webstart-standalone.sh >> ${LOG_FILE} 2>&1
  # fix to make create-webstart-standalone.sh support jdk5 and jdk6
  NEW_QUICKSETUP_FILE=`${MKTEMP}`
  JWS_QUICKSETUP_FILE=build/webstart/install/QuickSetup.jnlp
  cat ${JWS_QUICKSETUP_FILE} | sed "s/\/build\//\/build.${VERSION}\//g" > ${NEW_QUICKSETUP_FILE}
  mv ${JWS_QUICKSETUP_FILE} ${JWS_QUICKSETUP_FILE}.moved
  mv ${NEW_QUICKSETUP_FILE} ${JWS_QUICKSETUP_FILE}
  ${CHMOD} +r ${JWS_QUICKSETUP_FILE}
  echo >> ${LOG_FILE}
  echo >> ${LOG_FILE}
  ${MV} build build.${VERSION}
done
#If this is a sanity check, exit
if ${TEST} ${SANITY} -eq 1
then
  exit 1
fi
# Create a README.html file in for this build.
cat > ${BUILD_DIR}/README.html <<ENDOFREADME
<TABLE BORDER="0">
  <TR>
    <TD>
      <IMG SRC="http://${SERVER_NAME}/images/opends_logo_welcome.png" ALT="OpenDS Logo" WIDTH="197" HEIGHT="57">
    </TD>
    <TD>
      <H2>OpenDS Daily Build ${SUBJECT_DATE}</H2>
      <A HREF="${BUILD_URL}build-${BUILD_DATE}.log">Build Log File</A>
ENDOFREADME
for VERSION in ${JAVA_VERSIONS}
do
cat >> ${BUILD_DIR}/README.html <<ENDOFREADME
      <BR>
      <B>Build with Java Version ${VERSION}</B>
      <A HREF="${BUILD_URL}OpenDS/build.${VERSION}/package/${VERSION_STRING}.zip">${VERSION_STRING}.zip Build Package File</A><BR>
      <A HREF="${BUILD_URL}OpenDS/build.${VERSION}/package/${VERSION_STRING}-DSML.war">${VERSION_STRING}-DSML.war DSML Gateway</A><BR>
      <A HREF="${BUILD_URL}OpenDS/build.${VERSION}/webstart/install/QuickSetup.jnlp">QuickSetup Java Web Start Installer</A><BR>
      <A HREF="${BUILD_URL}OpenDS/build.${VERSION}/javadoc/">Javadoc Documentation</A><BR>
      <A HREF="${BUILD_URL}OpenDS/build.${VERSION}/src.zip">src.zip Source Archive</A><BR>
      <A HREF="${BUILD_URL}OpenDS/build.${VERSION}/unit-tests/report/results.txt">Unit Test Report</A><BR>
      <A HREF="${BUILD_URL}OpenDS/build.${VERSION}/coverage/reports/unit/">Unit Test Code Goverage Report</A><BR>
ENDOFREADME
done
cat >> ${BUILD_DIR}/README.html <<ENDOFREADME
    </TD>
  </TR>
</TABLE>
ENDOFREADME
# Remove the "latest" symlink (if it exists) and recreate it pointing to
# the new build.
cd ${BUILDS_DIR}
${RM} -f latest
${LN} -s ${BUILD_DIR} ${BUILDS_DIR}/latest
# Remove an old directory if appropriate.  We want to keep up to 30 builds.
COUNT=`${LS} | ${SORT} | ${GREP} -v latest | ${WC} -l | ${AWK} '{print $1}'`
if ${TEST} ${COUNT} -gt 30
then
  OLDEST=`${LS} | ${SORT} | ${GREP} -v latest | ${HEAD} -1`
  ${RM} -rf ${OLDEST}
fi
# Send an e-mail message to indicate that the build is complete.
BODY_FILE=`${MKTEMP}`
echo "OpenDS Daily Build ${SUBJECT_DATE}" > ${BODY_FILE}
echo "Java Versions Tested:  ${JAVA_VERSIONS}" >> ${BODY_FILE}
if ${TEST} ${ANY_FAILED} -eq 0
then
  echo "Build Status:  Succeeded for all Java versions" >> ${BODY_FILE}
  SUBJECT_WITH_STATUS="${SUBJECT} (success)"
else
  if ${TEST} ${ALL_FAILED} -eq 0
  then
    echo "Build Status:  Failed for some Java versions" >> ${BODY_FILE}
  else
    echo "Build Status:  Failed for all Java versions" >> ${BODY_FILE}
  fi
  SUBJECT_WITH_STATUS="${SUBJECT} (failure)"
fi
echo "Build URL:  ${BUILD_URL}" >> ${BODY_FILE}
${SENDMAIL} --from "${SENDER}" --to "${RECIPIENT}" --subject "${SUBJECT_WITH_STATUS}" \
            --body "${BODY_FILE}" --attach "${BUILD_DIR}/README.html" \
            --attach "${LOG_FILE}"
${RM} ${BODY_FILE}
re-scripts/bin/test/daily-build.sh.carole
New file
@@ -0,0 +1,265 @@
#!/bin/sh
# If an option is given to this script, it is assumed as running in
# sanity check mode
# Define the Java versions that we will use to perform the build.
# These values should correspond to subdirectories below /java
JAVA_VERSIONS="jdk5 jdk6"
# Define absolute paths to all commands we will use in this script.
AWK=/usr/bin/awk
CAT=/usr/bin/cat
CHMOD=/usr/bin/chmod
CUT=/usr/bin/cut
DATE=/usr/bin/date
DIRNAME=/usr/bin/dirname
GREP=/usr/bin/grep
GZIP=/usr/bin/gzip
HEAD=/usr/bin/head
LN=/usr/bin/ln
LS=/usr/bin/ls
MKDIR=/usr/bin/mkdir
MKTEMP=/usr/bin/mktemp
MV=/usr/bin/mv
RM=/usr/bin/rm
SORT=/usr/bin/sort
SVN=/opt/csw/bin/svn
TAR=/usr/bin/tar
TEST=/usr/bin/test
WC=/usr/bin/wc
SENDMAIL=/export/home/builds/bin/send-mail.sh
#If an argument is provided, let's assume we run a sanity check (no mail)
if ${TEST} $# -gt 0
then
  SANITY=1
else
  SANITY=0
fi
# Change to the directory that contains this script.
cd `${DIRNAME} $0`
# Explicitly set a minimal PATH so we don't run anything unexpected.
PATH="/bin:/usr/bin"
export PATH
# Define paths that will be used during this script.
SCRIPT_DIR=`pwd`
BUILDS_DIR=/daily-builds/tests
# Define the URL to use to access the repository.
SVN_URL=file:///svn-mirror/trunk/opends
# Define variables that will be used when sending the e-mail message.
#RECIPIENT="opends-staff@sun.com"
#RECIPIENT="dev@opends.dev.java.net"
RECIPIENT="carole.hebrard@sun.com"
SENDER="opends@dev.java.net"
SUBJECT_DATE=`${DATE} '+%Y%m%d'`
SUBJECT="OpenDS Daily Build ${SUBJECT_DATE}"
# Create a new directory to hold the build.
BUILD_DATE=`${DATE} '+%Y%m%d%H%M%S'`
BUILD_DIR="${BUILDS_DIR}/${BUILD_DATE}"
${MKDIR} -p ${BUILD_DIR}
# Start generating a log file for the build.
LOG_FILE="${BUILD_DIR}/build-${BUILD_DATE}.log"
#SERVER_NAME="www2.opends.org"
SERVER_NAME="www.opends.org"
BUILD_URL="http://${SERVER_NAME}/daily-builds/${BUILD_DATE}/"
echo "OpenDS Daily Build ${SUBJECT_DATE}" > ${LOG_FILE}
echo "Build Time:  ${BUILD_DATE}" >> ${LOG_FILE}
echo "Build URL:   ${BUILD_URL}" >> ${LOG_FILE}
echo >> ${LOG_FILE}
echo >> ${LOG_FILE}
# Check out the head revision from the repository.
cd ${BUILD_DIR}
echo ${SVN} checkout -q --non-interactive ${SVN_URL} OpenDS >> ${LOG_FILE} 2>&1
${SVN} checkout -q --non-interactive ${SVN_URL} OpenDS >> ${LOG_FILE} 2>&1
echo >> ${LOG_FILE}
echo >> ${LOG_FILE}
# Add information about the checked-out revision to the log.
cd OpenDS
echo ${SVN} info >> ${LOG_FILE} 2>&1
${SVN} info >> ${LOG_FILE} 2>&1
echo >> ${LOG_FILE}
echo >> ${LOG_FILE}
# jp146654 :add path to OpenDMK
cd ${BUILD_DIR}/OpenDS
OLD_BUILDPROP_FILE=build.properties.origin
NEW_BUILDPROP_FILE=build.properties
echo update Opendmk lib path in OpenDS/build.properties>> ${LOG_FILE} 2>&1
echo cp ${NEW_BUILDPROP_FILE} ${NEW_BUILDPROP_FILE}.origin >> ${LOG_FILE} 2>&1
cp ${NEW_BUILDPROP_FILE} ${NEW_BUILDPROP_FILE}.origin
echo add new path   : /export/home/builds/OpenDMK-bin/lib>> ${LOG_FILE} 2>&1
${CAT}  ${OLD_BUILDPROP_FILE} | sed "s/opendmk\.lib\.dir\=/opendmk\.lib\.dir\=\/export\/home\/builds\/OpenDMK-bin\/lib/g" > ${NEW_BUILDPROP_FILE}
echo >> ${LOG_FILE}
echo >> ${LOG_FILE}
# end
# Parse the PRODUCT file to get the version information.
SHORT_NAME=`${GREP} SHORT_NAME PRODUCT | ${CUT} -d= -f2`
MAJOR_VERSION=`${GREP} MAJOR_VERSION PRODUCT | ${CUT} -d= -f2`
MINOR_VERSION=`${GREP} MINOR_VERSION PRODUCT | ${CUT} -d= -f2`
POINT_VERSION=`${GREP} POINT_VERSION PRODUCT | ${CUT} -d= -f2`
VERSION_QUALIFIER=`${GREP} VERSION_QUALIFIER PRODUCT | ${CUT} -d= -f2`
VERSION_NUMBER_STRING="${MAJOR_VERSION}.${MINOR_VERSION}.${POINT_VERSION}${VERSION_QUALIFIER}"
VERSION_STRING="${SHORT_NAME}-${VERSION_NUMBER_STRING}"
# Loop through the JDK versions and build usin gthe "nightly" target.
# We'll set JAVA_HOME each time, and when we're done, we can continue using
# the last one.
ANY_FAILED=0
ALL_FAILED=1
for VERSION in ${JAVA_VERSIONS}
do
  # Removes directory that might be still there if test failed before
  # @AfterClass that normaly performs the cleanup
  FSCACHE=/tmp/OpenDS.FSCache
  if ${TEST} -d FSCACHE
  then
    ${RM} -rf ${FSCACHE}
  fi
  JAVA_HOME=/java/${VERSION}
  export JAVA_HOME
  echo "Building with Java version ${VERSION}" >> ${LOG_FILE}
  echo ./build.sh nightly svr4 -Ddisable.test.help=true -DMEM=512M >> ${LOG_FILE} 2>&1
  ./build.sh nightly svr4 -Ddisable.test.help=true -DMEM=512M >> ${LOG_FILE} 2>&1
  if ${TEST} $? -eq 0
  then
    ALL_FAILED=0
  else
    ANY_FAILED=1
  fi
  # Create the Java Web Start install archive.
  ADDRESS="www.opends.org"
  export ADDRESS
  BASE_PATH=/daily-builds/latest/OpenDS/build/webstart/install
  export BASE_PATH
  echo resource/webstart/create-webstart-standalone.sh >> ${LOG_FILE} 2>&1
  resource/webstart/create-webstart-standalone.sh >> ${LOG_FILE} 2>&1
  # fix to make create-webstart-standalone.sh support jdk5 and jdk6
  NEW_QUICKSETUP_FILE=`${MKTEMP}`
  JWS_QUICKSETUP_FILE=build/webstart/install/QuickSetup.jnlp
  cat ${JWS_QUICKSETUP_FILE} | sed "s/\/build\//\/build.${VERSION}\//g" > ${NEW_QUICKSETUP_FILE}
  mv ${JWS_QUICKSETUP_FILE} ${JWS_QUICKSETUP_FILE}.moved
  mv ${NEW_QUICKSETUP_FILE} ${JWS_QUICKSETUP_FILE}
  ${CHMOD} +r ${JWS_QUICKSETUP_FILE}
  echo >> ${LOG_FILE}
  echo >> ${LOG_FILE}
  ${MV} build build.${VERSION}
done
#If this is a sanity check, exit
if ${TEST} ${SANITY} -eq 1
then
  exit 1
fi
# Create a README.html file in for this build.
cat > ${BUILD_DIR}/README.html <<ENDOFREADME
<TABLE BORDER="0">
  <TR>
    <TD>
      <IMG SRC="http://${SERVER_NAME}/images/opends_logo_welcome.png" ALT="OpenDS Logo" WIDTH="197" HEIGHT="57">
    </TD>
    <TD>
      <H2>OpenDS Daily Build ${SUBJECT_DATE}</H2>
      <A HREF="${BUILD_URL}build-${BUILD_DATE}.log">Build Log File</A>
ENDOFREADME
for VERSION in ${JAVA_VERSIONS}
do
cat >> ${BUILD_DIR}/README.html <<ENDOFREADME
      <BR>
      <B>Build with Java Version ${VERSION}</B>
      <A HREF="${BUILD_URL}OpenDS/build.${VERSION}/package/${VERSION_STRING}.zip">${VERSION_STRING}.zip Build Package File</A><BR>
      <A HREF="${BUILD_URL}OpenDS/build.${VERSION}/package/${VERSION_STRING}-DSML.war">${VERSION_STRING}-DSML.war DSML Gateway</A><BR>
      <A HREF="${BUILD_URL}OpenDS/build.${VERSION}/webstart/install/QuickSetup.jnlp">QuickSetup Java Web Start Installer</A><BR>
      <A HREF="${BUILD_URL}OpenDS/build.${VERSION}/javadoc/">Javadoc Documentation</A><BR>
      <A HREF="${BUILD_URL}OpenDS/build.${VERSION}/src.zip">src.zip Source Archive</A><BR>
      <A HREF="${BUILD_URL}OpenDS/build.${VERSION}/unit-tests/report/results.txt">Unit Test Report</A><BR>
      <A HREF="${BUILD_URL}OpenDS/build.${VERSION}/coverage/reports/unit/">Unit Test Code Goverage Report</A><BR>
ENDOFREADME
done
cat >> ${BUILD_DIR}/README.html <<ENDOFREADME
    </TD>
  </TR>
</TABLE>
ENDOFREADME
# Remove the "latest" symlink (if it exists) and recreate it pointing to
# the new build.
cd ${BUILDS_DIR}
${RM} -f latest
${LN} -s ${BUILD_DIR} ${BUILDS_DIR}/latest
# Remove an old directory if appropriate.  We want to keep up to 30 builds.
COUNT=`${LS} | ${SORT} | ${GREP} -v latest | ${WC} -l | ${AWK} '{print $1}'`
if ${TEST} ${COUNT} -gt 30
then
  OLDEST=`${LS} | ${SORT} | ${GREP} -v latest | ${HEAD} -1`
  ${RM} -rf ${OLDEST}
fi
# Send an e-mail message to indicate that the build is complete.
BODY_FILE=`${MKTEMP}`
echo "OpenDS Daily Build ${SUBJECT_DATE}" > ${BODY_FILE}
echo "Java Versions Tested:  ${JAVA_VERSIONS}" >> ${BODY_FILE}
if ${TEST} ${ANY_FAILED} -eq 0
then
  echo "Build Status:  Succeeded for all Java versions" >> ${BODY_FILE}
  SUBJECT_WITH_STATUS="${SUBJECT} (success)"
else
  if ${TEST} ${ALL_FAILED} -eq 0
  then
    echo "Build Status:  Failed for some Java versions" >> ${BODY_FILE}
  else
    echo "Build Status:  Failed for all Java versions" >> ${BODY_FILE}
  fi
  SUBJECT_WITH_STATUS="${SUBJECT} (failure)"
fi
echo "Build URL:  ${BUILD_URL}" >> ${BODY_FILE}
${SENDMAIL} --from "${SENDER}" --to "${RECIPIENT}" --subject "${SUBJECT_WITH_STATUS}" \
            --body "${BODY_FILE}" --attach "${BUILD_DIR}/README.html" \
            --attach "${LOG_FILE}"
${RM} ${BODY_FILE}
re-scripts/bin/test/daily-build.sh.hidden
New file
@@ -0,0 +1,335 @@
#!/bin/sh
# If an option is given to this script, it is assumed as running in
# sanity check mode
# Define the Java versions that we will use to perform the build.
# These values should correspond to subdirectories below /java
JAVA_VERSIONS="jdk5 jdk6"
# Define absolute paths to all commands we will use in this script.
AWK=/usr/bin/awk
CAT=/usr/bin/cat
CHMOD=/usr/bin/chmod
CUT=/usr/bin/cut
DATE=/usr/bin/date
DIRNAME=/usr/bin/dirname
GREP=/usr/bin/grep
GZIP=/usr/bin/gzip
HEAD=/usr/bin/head
LN=/usr/bin/ln
LS=/usr/bin/ls
MKDIR=/usr/bin/mkdir
MKTEMP=/usr/bin/mktemp
MV=/usr/bin/mv
RM=/usr/bin/rm
SORT=/usr/bin/sort
SVN=/opt/csw/bin/svn
TAR=/usr/bin/tar
TEST=/usr/bin/test
WC=/usr/bin/wc
SENDMAIL=/export/home/builds/bin/send-mail.sh
#If an argument is provided, let's assume we run a sanity check (no mail)
if ${TEST} $# -gt 0
then
  SANITY=1
else
  SANITY=0
fi
# Change to the directory that contains this script.
cd `${DIRNAME} $0`
# Explicitly set a minimal PATH so we don't run anything unexpected.
PATH="/bin:/usr/bin"
export PATH
# Define paths that will be used during this script.
SCRIPT_DIR=`pwd`
BUILDS_DIR=/daily-builds/tests
# Define the URL to use to access the repository.
SVN_URL=file:///svn-mirror/trunk/opends
# Define variables that will be used when sending the e-mail message.
#RECIPIENT="opends-staff@sun.com"
#RECIPIENT="dev@opends.dev.java.net"
RECIPIENT="carole.hebrard@sun.com"
SENDER="opends@dev.java.net"
SUBJECT_DATE=`${DATE} '+%Y%m%d'`
SUBJECT="OpenDS Daily Build ${SUBJECT_DATE}"
SVR4_RECIPIENT="carole.hebrard@sun.com"
SVR4_SUBJECT="OpenDS Daily SVR4 Build ${SUBJECT_DATE}"
# Create a new directory to hold the build.
BUILD_DATE=`${DATE} '+%Y%m%d%H%M%S'`
BUILD_DIR="${BUILDS_DIR}/${BUILD_DATE}"
${MKDIR} -p ${BUILD_DIR}
# Start generating a log file for the build.
LOG_FILE="${BUILD_DIR}/build-${BUILD_DATE}.log"
#SERVER_NAME="www2.opends.org"
SERVER_NAME="www.opends.org"
BUILD_URL="http://${SERVER_NAME}${BUILD_DIR}/"
echo "OpenDS Daily Build ${SUBJECT_DATE}" > ${LOG_FILE}
echo "Build Time:  ${BUILD_DATE}" >> ${LOG_FILE}
echo "Build URL:   ${BUILD_URL}" >> ${LOG_FILE}
echo >> ${LOG_FILE}
echo >> ${LOG_FILE}
# Check out the head revision from the repository.
cd ${BUILD_DIR}
echo ${SVN} checkout -q --non-interactive ${SVN_URL} OpenDS >> ${LOG_FILE} 2>&1
${SVN} checkout -q --non-interactive ${SVN_URL} OpenDS >> ${LOG_FILE} 2>&1
echo >> ${LOG_FILE}
echo >> ${LOG_FILE}
# Add information about the checked-out revision to the log.
cd OpenDS
echo ${SVN} info >> ${LOG_FILE} 2>&1
${SVN} info >> ${LOG_FILE} 2>&1
echo >> ${LOG_FILE}
echo >> ${LOG_FILE}
# jp146654 :add path to OpenDMK
cd ${BUILD_DIR}/OpenDS
OLD_BUILDPROP_FILE=build.properties.origin
NEW_BUILDPROP_FILE=build.properties
echo update Opendmk lib path in OpenDS/build.properties>> ${LOG_FILE} 2>&1
echo cp ${NEW_BUILDPROP_FILE} ${NEW_BUILDPROP_FILE}.origin >> ${LOG_FILE} 2>&1
cp ${NEW_BUILDPROP_FILE} ${NEW_BUILDPROP_FILE}.origin
echo add new path   : /export/home/builds/OpenDMK-bin/lib>> ${LOG_FILE} 2>&1
${CAT}  ${OLD_BUILDPROP_FILE} | sed "s/opendmk\.lib\.dir\=/opendmk\.lib\.dir\=\/export\/home\/builds\/OpenDMK-bin\/lib/g" > ${NEW_BUILDPROP_FILE}
echo >> ${LOG_FILE}
echo >> ${LOG_FILE}
# end
# Parse the PRODUCT file to get the version information.
SHORT_NAME=`${GREP} SHORT_NAME PRODUCT | ${CUT} -d= -f2`
MAJOR_VERSION=`${GREP} MAJOR_VERSION PRODUCT | ${CUT} -d= -f2`
MINOR_VERSION=`${GREP} MINOR_VERSION PRODUCT | ${CUT} -d= -f2`
POINT_VERSION=`${GREP} POINT_VERSION PRODUCT | ${CUT} -d= -f2`
VERSION_QUALIFIER=`${GREP} VERSION_QUALIFIER PRODUCT | ${CUT} -d= -f2`
VERSION_NUMBER_STRING="${MAJOR_VERSION}.${MINOR_VERSION}.${POINT_VERSION}${VERSION_QUALIFIER}"
VERSION_STRING="${SHORT_NAME}-${VERSION_NUMBER_STRING}"
# Loop through the JDK versions and build usin gthe "nightly" target.
# We'll set JAVA_HOME each time, and when we're done, we can continue using
# the last one.
ANY_FAILED=0
ALL_FAILED=1
SVR4_ANY_FAILED=0
SVR4_ALL_FAILED=0
for VERSION in ${JAVA_VERSIONS}
do
  # Removes directory that might be still there if test failed before
  # @AfterClass that normaly performs the cleanup
  FSCACHE=/tmp/OpenDS.FSCache
  if ${TEST} -d FSCACHE
  then
    ${RM} -rf ${FSCACHE}
  fi
  JAVA_HOME=/java/${VERSION}
  export JAVA_HOME
  echo "Building with Java version ${VERSION}" >> ${LOG_FILE}
  echo ./build.sh nightly -Ddisable.test.help=true -DMEM=512M >> ${LOG_FILE} 2>&1
  ./build.sh nightly -Ddisable.test.help=true -DMEM=512M >> ${LOG_FILE} 2>&1
  if ${TEST} $? -eq 0
  then
    ALL_FAILED=0
  else
    ANY_FAILED=1
  fi
  # Build svr4 package
  ./build.sh svr4  -Ddisable.test.help=true -DMEM=512M >> ${LOG_FILE} 2>&1
  if ${TEST} $? -eq 0
  then
    SVR4_ALL_FAILED=0
  else
    SVR4_ANY_FAILED=1
  fi
  # Create the Java Web Start install archive.
  ADDRESS="www.opends.org"
  export ADDRESS
  BASE_PATH=${BUILDS_DIR}/latest/OpenDS/build/webstart/install
  export BASE_PATH
  echo resource/webstart/create-webstart-standalone.sh >> ${LOG_FILE} 2>&1
  resource/webstart/create-webstart-standalone.sh >> ${LOG_FILE} 2>&1
  # fix to make create-webstart-standalone.sh support jdk5 and jdk6
  NEW_QUICKSETUP_FILE=`${MKTEMP}`
  JWS_QUICKSETUP_FILE=build/webstart/install/QuickSetup.jnlp
  cat ${JWS_QUICKSETUP_FILE} | sed "s/\/build\//\/build.${VERSION}\//g" > ${NEW_QUICKSETUP_FILE}
  mv ${JWS_QUICKSETUP_FILE} ${JWS_QUICKSETUP_FILE}.moved
  mv ${NEW_QUICKSETUP_FILE} ${JWS_QUICKSETUP_FILE}
  ${CHMOD} +r ${JWS_QUICKSETUP_FILE}
  echo >> ${LOG_FILE}
  echo >> ${LOG_FILE}
  ${MV} build build.${VERSION}
done
#If this is a sanity check, exit
if ${TEST} ${SANITY} -eq 1
then
  exit 1
fi
# Create a README.html file in for this build.
cat > ${BUILD_DIR}/README.html <<ENDOFREADME
<TABLE BORDER="0">
  <TR>
    <TD>
      <IMG SRC="http://${SERVER_NAME}/images/opends_logo_welcome.png" ALT="OpenDS Logo" WIDTH="197" HEIGHT="57">
    </TD>
    <TD>
      <H2>OpenDS Daily Build ${SUBJECT_DATE}</H2>
      <A HREF="${BUILD_URL}build-${BUILD_DATE}.log">Build Log File</A>
ENDOFREADME
for VERSION in ${JAVA_VERSIONS}
do
cat >> ${BUILD_DIR}/README.html <<ENDOFREADME
      <BR>
      <B>Build with Java Version ${VERSION}</B>
      <A HREF="${BUILD_URL}OpenDS/build.${VERSION}/package/${VERSION_STRING}.zip">${VERSION_STRING}.zip Build Package File</A><BR>
      <A HREF="${BUILD_URL}OpenDS/build.${VERSION}/package/${VERSION_STRING}-DSML.war">${VERSION_STRING}-DSML.war DSML Gateway</A><BR>
      <A HREF="${BUILD_URL}OpenDS/build.${VERSION}/webstart/install/QuickSetup.jnlp">QuickSetup Java Web Start Installer</A><BR>
      <A HREF="${BUILD_URL}OpenDS/build.${VERSION}/javadoc/">Javadoc Documentation</A><BR>
      <A HREF="${BUILD_URL}OpenDS/build.${VERSION}/src.zip">src.zip Source Archive</A><BR>
      <A HREF="${BUILD_URL}OpenDS/build.${VERSION}/unit-tests/report/results.txt">Unit Test Report</A><BR>
      <A HREF="${BUILD_URL}OpenDS/build.${VERSION}/coverage/reports/unit/">Unit Test Code Goverage Report</A><BR>
ENDOFREADME
done
cat >> ${BUILD_DIR}/README.html <<ENDOFREADME
    </TD>
  </TR>
</TABLE>
ENDOFREADME
# Create a README_SVR4.html file in for this build.
cat > ${BUILD_DIR}/README_SVR4.html <<ENDOFREADME
<TABLE BORDER="0">
  <TR>
    <TD>
      <IMG SRC="http://${SERVER_NAME}/images/opends_logo_welcome.png" ALT="OpenDS Logo" WIDTH="197" HEIGHT="57">
    </TD>
    <TD>
      <H2>OpenDS Daily SVR4 Build ${SUBJECT_DATE}</H2>
      <A HREF="${BUILD_URL}build-${BUILD_DATE}.log">Build Log File</A>
ENDOFREADME
for VERSION in ${JAVA_VERSIONS}
do
cat >> ${BUILD_DIR}/README_SVR4.html <<ENDOFREADME
      <BR>
      <B>Build with Java Version ${VERSION}</B>
      <A HREF="${BUILD_URL}OpenDS/build.${VERSION}/package/svr4/opends.zip">SVR4 package</A><BR>
ENDOFREADME
done
cat >> ${BUILD_DIR}/README_SVR4.html <<ENDOFREADME
    </TD>
  </TR>
</TABLE>
ENDOFREADME
# Remove the "latest" symlink (if it exists) and recreate it pointing to
# the new build.
cd ${BUILDS_DIR}
${RM} -f latest
${LN} -s ${BUILD_DIR} ${BUILDS_DIR}/latest
# Remove an old directory if appropriate.  We want to keep up to 30 builds.
COUNT=`${LS} | ${SORT} | ${GREP} -v latest | ${WC} -l | ${AWK} '{print $1}'`
if ${TEST} ${COUNT} -gt 30
then
  OLDEST=`${LS} | ${SORT} | ${GREP} -v latest | ${HEAD} -1`
  ${RM} -rf ${OLDEST}
fi
# Send an e-mail message to indicate that the build is complete.
BODY_FILE=`${MKTEMP}`
echo "OpenDS Daily Build ${SUBJECT_DATE}" > ${BODY_FILE}
echo "Java Versions Tested:  ${JAVA_VERSIONS}" >> ${BODY_FILE}
if ${TEST} ${ANY_FAILED} -eq 0
then
  echo "Build Status:  Succeeded for all Java versions" >> ${BODY_FILE}
  SUBJECT_WITH_STATUS="${SUBJECT} (success)"
else
  if ${TEST} ${ALL_FAILED} -eq 0
  then
    echo "Build Status:  Failed for some Java versions" >> ${BODY_FILE}
  else
    echo "Build Status:  Failed for all Java versions" >> ${BODY_FILE}
  fi
  SUBJECT_WITH_STATUS="${SUBJECT} (failure)"
fi
echo "Build URL:  ${BUILD_URL}" >> ${BODY_FILE}
${SENDMAIL} --from "${SENDER}" --to "${RECIPIENT}" --subject "${SUBJECT_WITH_STATUS}" \
            --body "${BODY_FILE}" --attach "${BUILD_DIR}/README.html" \
            --attach "${LOG_FILE}"
${RM} ${BODY_FILE}
# Send an e-mail message to indicate if svr4 has been built
BODY_FILE=`${MKTEMP}`
echo "OpenDS Daily Build ${SUBJECT_DATE}" with SVR4 > ${BODY_FILE}
echo "Java Versions Tested:  ${JAVA_VERSIONS}" >> ${BODY_FILE}
if ${TEST} ${SVR4_ANY_FAILED} -eq 0
then
  echo "Build Status:  Succeeded for all Java versions" >> ${BODY_FILE}
  SUBJECT_WITH_STATUS="${SVR4_SUBJECT} (success)"
else
  if ${TEST} ${SVR4_ALL_FAILED} -eq 0
  then
    echo "Build Status:  Failed for some Java versions" >> ${BODY_FILE}
  else
    echo "Build Status:  Failed for all Java versions" >> ${BODY_FILE}
  fi
  SUBJECT_WITH_STATUS="${SVR4_SUBJECT} (failure)"
fi
echo "Build URL:  ${BUILD_URL}" >> ${BODY_FILE}
${SENDMAIL} --from "${SENDER}" --to "${SVR4_RECIPIENT}" --subject "${SUBJECT_WITH_STATUS}" \
            --body "${BODY_FILE}" --attach "${BUILD_DIR}/README_SVR4.html" \
            --attach "${LOG_FILE}"
${RM} ${BODY_FILE}
re-scripts/bin/weekly-build.sh
New file
@@ -0,0 +1,376 @@
#!/bin/sh
# Define the Java versions that we will use to perform the build.
# These values should correspond to subdirectories below /java
#JAVA_VERSIONS="jdk5 jdk6"
# Define absolute paths to all commands that we will use in this script.
AWK="/usr/bin/awk"
BASENAME=/usr/bin/basename
CAT="/usr/bin/cat"
CHMOD="/usr/bin/chmod"
DATE="/usr/bin/date"
DIGEST="/usr/bin/digest"
DIRNAME="/usr/bin/dirname"
GREP="/usr/bin/grep"
LN="/usr/bin/ln"
MKDIR="/usr/bin/mkdir"
MKTEMP="/usr/bin/mktemp"
MV="/usr/bin/mv"
PS="/usr/bin/ps"
RM="/usr/bin/rm"
SVN="/opt/csw/bin/svn"
SENDMAIL="/export/home/builds/bin/send-mail.sh"
TEST=/usr/bin/test
#If an argument is provided, let's assume we run a sanity check (no mail)
if ${TEST} $# -gt 0
then
  SANITY=1
else
  SANITY=0
fi
# Change to the directory that contains this script.
cd `${DIRNAME} $0`
# Explicitly set a minimal PATH so we don't run anything unexpected.
PATH="/bin:/usr/bin"
export PATH
# Sanity checks
# Removes directory that might be still there if test failed before @AfterClass
# that normaly performs the cleanup
FSCACHE=/tmp/OpenDS.FSCache
if ${TEST} -d FSCACHE
then
  ${RM} -rf ${FSCACHE}
fi
# Checks that no weekly build is running
${PS} | grep `${BASENAME} $0`
if ${TEST} $? -eq 0
  then
  echo "This script is already running. Aborting..."
  exit 1
fi
# Checks that no daily build is running
${PS} | grep daily\.sh
if ${TEST} $? -eq 0
  then
  echo "The daily script is currently running. Aborting..."
  exit 1
fi
# Define paths that will be used during this script.
SCRIPT_DIR=`pwd`
BUILDS_DIR=/promoted-builds
# Define the URL to use to access the repository.
SVN_URL=file:///svn-mirror/trunk/opends
# Start creating a log file that will be used to record progress.
LOG_FILE=`${MKTEMP}`
BUILD_DATE=`${DATE} '+%Y%m%d%H%M%S'`
echo "Beginning weekly build processing at ${BUILD_DATE}" > "${LOG_FILE}"
echo "" >> "${LOG_FILE}"
# Define paths to all directories that we will access in this script.
# These should all be absolute paths.
BUILD_NUMBER_FILE="buildnumber.txt"
REVISION_NUMBER_FILE="revision.txt"
VERSION_NUMBER_FILE="version.txt"
# Look at what is currently the latest weekly build to get information we need
# to bootstrap this build.
LAST_BUILD_DIR="${BUILDS_DIR}/latest"
LAST_BUILD_NUMBER=`cat ${LAST_BUILD_DIR}/${BUILD_NUMBER_FILE}`
LAST_REVISION_NUMBER=`cat ${LAST_BUILD_DIR}/${REVISION_NUMBER_FILE}`
BUILD_NUMBER=`echo "${LAST_BUILD_NUMBER} + 1" | bc`
if test ${BUILD_NUMBER} -le 9
then
  BUILD_NUMBER_STR="00${BUILD_NUMBER}"
else
  if test ${BUILD_NUMBER} -le 99
  then
    BUILD_NUMBER_STR="0${BUILD_NUMBER}"
  else
    BUILD_NUMBER_STR="${BUILD_NUMBER}"
  fi
fi
echo "*** Build Number Information ***" >> "${LOG_FILE}"
echo "LAST_BUILD_DIR=${LAST_BUILD_DIR}" >> "${LOG_FILE}"
echo "LAST_BUILD_NUMBER=${LAST_BUILD_NUMBER}" >> "${LOG_FILE}"
echo "LAST_REVISION_NUMBER=${LAST_REVISION_NUMBER}" >> "${LOG_FILE}"
echo "BUILD_NUMBER=${BUILD_NUMBER}" >> "${LOG_FILE}"
echo "BUILD_NUMBER_STR=${BUILD_NUMBER_STR}" >> "${LOG_FILE}"
echo "" >> "${LOG_FILE}"
# Define information that we will use to access the repository.
PRODUCT_URL="${SVN_URL}/PRODUCT"
# Parse the contents of the PRODUCT file to get the version information.
echo "*** Product Version Information ***" >> "${LOG_FILE}"
PRODUCT_FILE=`${MKTEMP}`
echo ${SVN} cat --non-interactive "${PRODUCT_URL}" \> "${PRODUCT_FILE}" >> "${LOG_FILE}"
${SVN} cat --non-interactive "${PRODUCT_URL}" > "${PRODUCT_FILE}"
SHORT_NAME=`${GREP} SHORT_NAME "${PRODUCT_FILE}" | cut -d= -f2`
MAJOR_VERSION=`${GREP} MAJOR_VERSION "${PRODUCT_FILE}" | cut -d= -f2`
MINOR_VERSION=`${GREP} MINOR_VERSION "${PRODUCT_FILE}" | cut -d= -f2`
POINT_VERSION=`${GREP} POINT_VERSION "${PRODUCT_FILE}" | cut -d= -f2`
VERSION_QUALIFIER=`${GREP} VERSION_QUALIFIER "${PRODUCT_FILE}" | cut -d= -f2`
VERSION_NUMBER_STRING="${MAJOR_VERSION}.${MINOR_VERSION}.${POINT_VERSION}${VERSION_QUALIFIER}-build${BUILD_NUMBER_STR}"
VERSION_STRING="${SHORT_NAME}-${VERSION_NUMBER_STRING}"
${RM} "${PRODUCT_FILE}"
echo "SHORT_NAME=${SHORT_NAME}" >> "${LOG_FILE}"
echo "MAJOR_VERSION=${MAJOR_VERSION}" >> "${LOG_FILE}"
echo "MINOR_VERSION=${MINOR_VERSION}" >> "${LOG_FILE}"
echo "POINT_VERSION=${POINT_VERSION}" >> "${LOG_FILE}"
echo "VERSION_QUALIFIER=${VERSION_QUALIFIER}" >> "${LOG_FILE}"
echo "VERSION_STRING=${VERSION_STRING}" >> "${LOG_FILE}"
echo "" >> "${LOG_FILE}"
# Define variables that will be used when sending the e-mail message.
RECIPIENT="qa@opends.dev.java.net"
SENDER="opends@dev.java.net"
SUBJECT="OpenDS Weekly Build Candidate ${VERSION_NUMBER_STRING}"
# Create a new directory to hold the build.
echo "*** Checking Out the Server ***" >> "${LOG_FILE}"
BUILD_DIR="${BUILDS_DIR}/${VERSION_NUMBER_STRING}"
if test -d "${BUILD_DIR}"
then
  echo "ERROR:  Target build directory ${BUILD_DIR} already exists"
  echo "ERROR:  Aborting the weekly build attempt."
  exit 1
fi
echo ${MKDIR} -p "${BUILDS_DIR}/${VERSION_NUMBER_STRING}" >> "${LOG_FILE}"
${MKDIR} -p "${BUILDS_DIR}/${VERSION_NUMBER_STRING}"
echo cd "${BUILDS_DIR}/${VERSION_NUMBER_STRING}" >> "${LOG_FILE}"
cd "${BUILD_DIR}"
echo ${MV} "${LOG_FILE}" "${VERSION_STRING}.log" >> "${LOG_FILE}"
${MV} "${LOG_FILE}" "${VERSION_STRING}.log" && LOG_FILE="${BUILD_DIR}/${VERSION_STRING}.log"
${CHMOD} 0644 "${LOG_FILE}"
echo "LOG_FILE=${LOG_FILE}" >> "${LOG_FILE}"
# Check out the head revision from the repository.
echo ${SVN} checkout -q --non-interactive ${SVN_URL} OpenDS >> "${LOG_FILE}" 2>&1
${SVN} checkout -q --non-interactive ${SVN_URL} OpenDS >> ${LOG_FILE} 2>&1
cd OpenDS
REVISION_NUMBER=`${SVN} info | ${GREP} '^Revision:' | ${AWK} '{print $2}'`
echo "REVISION_NUMBER=${REVISION_NUMBER}" >> "${LOG_FILE}"
echo "" >> "${LOG_FILE}"
# Add information about the checked out revision to the log file.
echo ${SVN} info >> "${LOG_FILE}" 2>&1
${SVN} info >> "${LOG_FILE}" 2>&1
echo "" >> "${LOG_FILE}"
# jp146654 :add path to OpenDMK
cd ${BUILD_DIR}/OpenDS
OLD_BUILDPROP_FILE=build.properties.origin
NEW_BUILDPROP_FILE=build.properties
echo update Opendmk lib path in OpenDS/build.properties>> ${LOG_FILE} 2>&1
echo cp ${NEW_BUILDPROP_FILE} ${NEW_BUILDPROP_FILE}.origin >> ${LOG_FILE} 2>&1
cp ${NEW_BUILDPROP_FILE} ${NEW_BUILDPROP_FILE}.origin
echo add new path   : /export/home/builds/OpenDMK-bin/lib>> ${LOG_FILE} 2>&1
${CAT}  ${OLD_BUILDPROP_FILE} | sed "s/opendmk\.lib\.dir\=/opendmk\.lib\.dir\=\/export\/home\/builds\/OpenDMK-bin\/lib/g" > ${NEW_BUILDPROP_FILE}
echo >> ${LOG_FILE}
echo >> ${LOG_FILE}
# end jp146654
JAVA_HOME=/java/jdk5
export JAVA_HOME
# Perform a build of the server using the "weekly" target.
echo "*** Building the Server ***" >> "${LOG_FILE}"
echo ./build.sh weekly svr4 -DBUILD_NUMBER=${BUILD_NUMBER} -Ddisable.test.help=true -DMEM=512M >> "${LOG_FILE}" 2>&1
./build.sh weekly svr4 -DBUILD_NUMBER=${BUILD_NUMBER} -Ddisable.test.help=true -DMEM=512M >> "${LOG_FILE}" 2>&1
if test $? -eq 0
then
  STATUS="Successful"
else
  STATUS="FAILED"
fi
echo "STATUS=${STATUS}" >> "${LOG_FILE}"
echo "" >> "${LOG_FILE}"
# Create the Java Web Start Install Archive.
ADDRESS="www.opends.org"
export ADDRESS
echo "*** Creating Java Web Start Install Archive ***" >> "${LOG_FILE}"
BASE_PATH="/promoted-builds/${VERSION_NUMBER_STRING}/install"
export BASE_PATH
echo "BASE_PATH=${BASE_PATH}" >> "${LOG_FILE}"
echo resource/webstart/create-webstart-standalone.sh >> "${LOG_FILE}" 2>&1
resource/webstart/create-webstart-standalone.sh  >> "${LOG_FILE}" 2>&1
echo "" >> "${LOG_FILE}"
# Symlink all of the appropriate files into place in the base build directory.
#${LN} -s "${BUILD_DIR}/OpenDS/build/package/${VERSION_STRING}.zip" "${BUILD_DIR}/${VERSION_STRING}.zip"
#${LN} -s "${BUILD_DIR}/OpenDS/build/package/${VERSION_STRING}-DSML.war" "${BUILD_DIR}/${VERSION_STRING}-DSML.war"
#${LN} -s "${BUILD_DIR}/OpenDS/build/src.zip" "${BUILD_DIR}/src.zip"
#${LN} -s "${BUILD_DIR}/OpenDS/build/webstart/install" "${BUILD_DIR}/install"
#${LN} -s "${BUILD_DIR}/OpenDS/build/javadoc" "${BUILD_DIR}/javadoc"
${LN} -s "OpenDS/build/package/${VERSION_STRING}.zip" "${BUILD_DIR}/${VERSION_STRING}.zip"
${LN} -s "OpenDS/build/package/${VERSION_STRING}-DSML.war" "${BUILD_DIR}/${VERSION_STRING}-DSML.war"
${LN} -s "OpenDS/build/src.zip" "${BUILD_DIR}/src.zip"
${LN} -s "OpenDS/build/webstart/install" "${BUILD_DIR}/install"
${LN} -s "OpenDS/build/javadoc" "${BUILD_DIR}/javadoc"
# Create MD5 digests of the appropriate files.
echo "*** Calculating MD5 Digests of Build Files ***" >> "${LOG_FILE}"
${DIGEST} -a md5 "${BUILD_DIR}/OpenDS/build/package/${VERSION_STRING}.zip" > "${BUILD_DIR}/${VERSION_STRING}.zip.md5"
${DIGEST} -a md5 "${BUILD_DIR}/OpenDS/build/package/${VERSION_STRING}-DSML.war" > "${BUILD_DIR}/${VERSION_STRING}-DSML.war.md5"
${DIGEST} -a md5 "${BUILD_DIR}/OpenDS/build/src.zip" > "${BUILD_DIR}/src.zip.md5"
CORE_SERVER_MD5=`${CAT} "${BUILD_DIR}/${VERSION_STRING}.zip.md5"`
DSML_GATEWAY_MD5=`${CAT} "${BUILD_DIR}/${VERSION_STRING}-DSML.war.md5"`
SRC_ZIP_MD5=`${CAT} "${BUILD_DIR}/src.zip.md5"`
echo "CORE_SERVER_MD5=${CORE_SERVER_MD5}" >> "${LOG_FILE}"
echo "DSML_GATEWAY_MD5=${DSML_GATEWAY_MD5}" >> "${LOG_FILE}"
echo "SRC_ZIP_MD5=${SRC_ZIP_MD5}" >> "${LOG_FILE}"
echo "" >> "${LOG_FILE}"
# Write the build number and revision numbers to text files.
echo "${BUILD_NUMBER}" > "${BUILD_DIR}/${BUILD_NUMBER_FILE}"
echo "${REVISION_NUMBER}" > "${BUILD_DIR}/${REVISION_NUMBER_FILE}"
echo "${VERSION_NUMBER_STRING}" > "${BUILD_DIR}/${VERSION_NUMBER_FILE}"
# Get a log of changes since the last build.
echo "*** Getting changelog data ***" >> "${LOG_FILE}"
LAST_REV_PLUS_ONE=`echo "${LAST_REVISION_NUMBER}+1" | bc`
echo ${SVN} log -r ${LAST_REV_PLUS_ONE}:${REVISION_NUMBER} >> "${LOG_FILE}" 2>&1
${SVN} log -r ${LAST_REV_PLUS_ONE}:${REVISION_NUMBER} > "${BUILD_DIR}/changes.log" 2>&1
echo "" >> "${LOG_FILE}"
#If this is a sanity check, exit
if ${TEST} ${SANITY} -eq 1
then
  echo "Sanity check done."
  exit 1
fi
# Create an index.html in the build directory.
${CAT} > "${BUILD_DIR}/index.html" <<ENDOFHTML
<!DOCTYPE html PUBLIC "-//Tigris//DTD XHTML 1.0 Transitional//EN" "http://style.tigris.org/nonav/tigris_transitional.dtd">
<HTML>
  <HEAD>
    <TITLE>OpenDS Weekly Build ${VERSION_NUMBER_STRING}</TITLE>
    <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">
    <LINK REL="SHORTCUT ICON" HREF="/public/images/opends_favicon.gif">
    <LINK REL="stylesheet" HREF="/public/css/opends.css" TYPE="text/css">
    <STYLE>
      tr { text-align:left; vertical-align:top; padding:5px 10px; width:180px; background-color:#f5f5f5 }
    </STYLE>
  </HEAD>
  <BODY>
    <TABLE BORDER="0" CELLPADDING="10">
      <TR STYLE="background-color:#ffffff">
        <TD VALIGN="MIDDLE">
          <IMG SRC="/images/opends_logo_welcome.png" ALT="OpenDS Logo" WIDTH="197" HEIGHT="57">
        </TD>
        <TD VALIGN="MIDDLE">
          <H1>OpenDS Weekly Build ${VERSION_NUMBER_STRING}</H1>
        </TD>
      </TR>
      <TR>
        <TD>Weekly Build Number</TD>
        <TD>${BUILD_NUMBER}</TD>
      </TR>
      <TR>
        <TD>Subversion Revision Number</TD>
        <TD>${REVISION_NUMBER}</TD>
      </TR>
      <TR>
        <TD>QuickSetup Installer</TD>
        <TD><A HREF="install/QuickSetup.jnlp">install/QuickSetup.jnlp</A></TD>
      </TR>
      <TR>
        <TD>Core Server Zip File</TD>
        <TD><A HREF="${VERSION_STRING}.zip">${VERSION_STRING}.zip</A></TD>
      </TR>
      <TR>
        <TD>Core Server MD5 Checksum</TD>
        <TD>${CORE_SERVER_MD5}</TD>
      </TR>
      <TR>
        <TD>DSML Gateway WAR File</TD>
        <TD><A HREF="${VERSION_STRING}-DSML.war">${VERSION_STRING}-DSML.war</A></TD>
      </TR>
      <TR>
        <TD>DSML Gateway MD5 Checksum</TD>
        <TD>${DSML_GATEWAY_MD5}</TD>
      </TR>
      <TR>
        <TD>src.zip Server Source Archive</TD>
        <TD><A HREF="src.zip">src.zip</A></TD>
      </TR>
      <TR>
        <TD>src.zip MD5 Checksum</TD>
        <TD>${SRC_ZIP_MD5}</TD>
      </TR>
      <TR>
        <TD>Javadoc Documentation</TD>
        <TD><A HREF="javadoc/index.html">javadoc/index.html</A></TD>
      </TR>
      <TR>
        <TD>Changelog</TD>
        <TD><A HREF="changes.log">changes.log</A></TD>
      </TR>
      <TR>
        <TD>Build Log</TD>
        <TD><A HREF="${VERSION_STRING}.log">${VERSION_STRING}.log</A></TD>
      </TR>
    </TABLE>
    <BR>
    <A HREF="/promoted-builds/">See All Weekly Builds</A><BR>
    <A HREF="http://www.opends.org/">http://www.opends.org/</A><BR>
    <!-- Omniture -->
    <script src="https://www.opends.org/wiki/scripts/s_code_remote.js" language="JavaScript"/>
  </BODY>
</HTML>
ENDOFHTML
# Create a "candidate" symbolic link to this build.
${RM} -f "${BUILDS_DIR}/candidate"
${LN} -s "${BUILD_DIR}" "${BUILDS_DIR}/candidate"
# Create a temporary file to use for the e-mail message.
BODY_FILE=`${MKTEMP}`
echo "A new OpenDS weekly build candidate is available at" > ${BODY_FILE}
#echo "http://www2.opends.org/promoted-builds/candidate/" >> ${BODY_FILE}
echo "http://www.opends.org/promoted-builds/candidate/" >> ${BODY_FILE}
# Send the message and delete the temporary file.
${SENDMAIL} --from "${SENDER}" --to "${RECIPIENT}" --subject "${STATUS} ${SUBJECT}" \
            --body "${BODY_FILE}" --attach "${BUILD_DIR}/index.html" \
            --attach "${LOG_FILE}"
${RM} "${BODY_FILE}"
re-scripts/bin/ws/README
New file
@@ -0,0 +1,4 @@
2009/01/20 : this is a new version of the scripts used to build opends
the goal is to share maximum between the branches instead of making a copy for each branch
if you want to add a new product , make a copy of a file ./product/branch12 in ./product/newbranch and update what needs to be updated.
re-scripts/bin/ws/build-status/README
New file
@@ -0,0 +1,5 @@
In a small piece of Java that generates a build status page in /daily-builds/status.html
/java/jdk6/bin/java -classpath classes org.opends.tools.BuildStatus
/java/jdk6/bin/javac -classpath src -d classes src/org/opends/tools/BuildStatus.java
re-scripts/bin/ws/build-status/classes/org/opends/tools/BuildStatus$1.class
Binary files differ
re-scripts/bin/ws/build-status/classes/org/opends/tools/BuildStatus$2.class
Binary files differ
re-scripts/bin/ws/build-status/classes/org/opends/tools/BuildStatus$Build.class
Binary files differ
re-scripts/bin/ws/build-status/classes/org/opends/tools/BuildStatus$DailyBuild.class
Binary files differ
re-scripts/bin/ws/build-status/classes/org/opends/tools/BuildStatus$JDK.class
Binary files differ
re-scripts/bin/ws/build-status/classes/org/opends/tools/BuildStatus$TestFailure.class
Binary files differ
re-scripts/bin/ws/build-status/classes/org/opends/tools/BuildStatus.class
Binary files differ
re-scripts/bin/ws/build-status/src/org/opends/tools/BuildStatus.java
New file
@@ -0,0 +1,275 @@
package org.opends.tools;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileWriter;
import java.io.FilenameFilter;
import java.io.InputStreamReader;
import java.net.URL;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Comparator;
import java.util.List;
import java.util.TreeSet;
/**
 *
 * @author Sun Microsystems Inc.
 */
public class BuildStatus {
  // builds location
  private static final String ROOT_DIR = "/daily-builds";
  // constants for html
  private static final String GREEN = "background-color: rgb(51, 255, 51);";
  private static final String RED = "background-color: rgb(255, 102, 102);";
  private static final String BODY = "#BODY#";
  private static final String TABLES = "#TABLES#";
  private static final String PAGE =
          "<html>" +
          " <head>" +
          "  <meta content=\"text/html; charset=ISO-8859-1\" http-equiv=\"content-type\">" +
          "  <title>OpenDS builds status</title>" +
          " </head>" +
          " <body>" +
          "  <div style=\"text-align: center;\"><big style=\"font-weight: bold;\">Daily builds status</big><br></div>" +
          "  <br>" +
          TABLES +
          " </body>" +
          "</html>\n";
  /**
   * @param args the command line arguments
   */
  public static void main(String[] args) {
    // a collection of builds ordered from yougest to oldest
    Collection<DailyBuild> dailyBuilds = new TreeSet<DailyBuild>(
            new Comparator<DailyBuild>() {
              public int compare(DailyBuild o1, DailyBuild o2) {
                String date1 = o1.id.substring(0, 8);
                String date2 = o2.id.substring(0, 8);
                return date2.compareTo(date1);
              }
              });
    try {
      // list directories in daily build directory
      String[] filenames = new File(ROOT_DIR).list(new FilenameFilter() {
        public boolean accept(File dir, String name) {
          for (int i = 0; i < name.length(); i++) {
            if (!Character.isDigit(name.charAt(i))) {
              return false;
            }
          }
          return true;
        }
      });
      for (String filename : filenames) {
        try {
          // dedicated to Unix only !!!
          URL url = new URL("file:///" + ROOT_DIR + "/" + filename + "/build-" + filename + ".log");
          DailyBuild dailyBuild = new DailyBuild(filename);
          Build build = null;
          TestFailure failure = null;
          boolean skip = false;
          BufferedReader reader = new BufferedReader(new InputStreamReader(url.openStream()));
          String line;
          boolean firstTarget = true;
          while ((line = reader.readLine()) != null) {
            if (skip) {
              skip = false;
            } else if (line.startsWith("Building with Java version")) {
              // build beginning
              firstTarget = true;
              build = new Build(JDK.valueOf(line.substring(27, 31)));
            } else if (line.startsWith("BUILD")) {
              // build ending. Status can be : FAILED SUCCESSFUL
              if (firstTarget) {
                build.setSuccess(line.substring(6, line.length()).equals("SUCCESSFUL"));
                dailyBuild.setBuild(build);
                firstTarget = false;
              } else {
                if (build.isSuccess()) {
                  build.setSuccess(line.substring(6, line.length()).equals("SUCCESSFUL"));
                }
              }
            } else if (line.contains("F A I L U R E ! ! !")) {
              // test failed
              failure = new TestFailure(line);
              skip = true; // skip next empty line
            } else if (failure != null && line.equals("   [testng] ")) {
              // end of test failure trace
              build.addFailure(failure);
              failure = null;
            } else {
              if (failure != null) {
                failure.appendLog(line.replace("<", "&lt;").replace(">", "&gt;"));
              }
            }
          }
          dailyBuilds.add(dailyBuild);
          reader.close();
        } catch (Throwable t) {
        // may have lost one build
        }
      }
      StringBuilder allBuilds = new StringBuilder();
      for (DailyBuild daily : dailyBuilds) {
        allBuilds.append(daily.toString());
      }
      String html = PAGE.replace(TABLES, allBuilds);
      // write status.html page
      FileWriter writer = new FileWriter(ROOT_DIR + "/status.html", false);
      writer.write(html);
      writer.close();
    } catch (Throwable t) {
    }
  }
  private static enum JDK {
    jdk5, jdk6
  }
  /*
   * A DailyBuild has an identifier (date) and two builds (jdk5+jdk6).
   */
  private static class DailyBuild {
    private static final String DATE = "#DATE#";
    private static final String JDK5 = "#JDK5#";
    private static final String JDK6 = "#JDK6#";
    private static final String COLOR = "#COLOR#";
    private static final String TEMPLATE = "<table style=\"width: 100%; text-align: center;\" border=\"1\" cellpadding=\"2\" cellspacing=\"2\">" +
            "<tbody>" +
            "<tr>" +
            "<td colspan=\"2\" rowspan=\"1\" style=\"" + COLOR +
            "vertical-align: middle; text-align: center;\">" + DATE +
            "</td>" +
            "</tr>" +
            "<tr>" + JDK5 + "</tr>" +
            "<tr>" + JDK6 + "</tr>" +
            "<br>";
    private static final String JDK_MISSING = "<td style=\"background-color: rgb(255, 204, 0);\">Unknown</td><td></td>";
    private Build jdk5;
    private Build jdk6;
    private String id;
    public DailyBuild(String id) {
      this.id = id;
    }
    public boolean isSuccess() {
      return this.jdk5 != null && this.jdk5.isSuccess() && this.jdk6 != null && this.jdk6.isSuccess();
    }
    public void setBuild(Build build) {
      if (build.getJDK().equals(JDK.jdk5)) {
        this.jdk5 = build;
      } else {
        this.jdk6 = build;
      }
    }
    @Override
    public String toString() {
      //String date = this.id.substring(0, 4) + "." + this.id.substring(4, 6) + "." + this.id.substring(6, 8);
      String date = "<a href=\"" + this.id + "/build-" + this.id + ".log\">" + this.id.substring(0, 4) + "." + this.id.substring(4, 6) + "." + this.id.substring(6, 8) + "</a>";
      String result = TEMPLATE.replace(DATE, date).replace(JDK5, this.jdk5 == null ? JDK_MISSING : this.jdk5.toString()).replace(JDK6, this.jdk6 == null ? JDK_MISSING : this.jdk6.toString());
      if (this.isSuccess()) {
        result = result.replace(COLOR, GREEN);
      } else {
        result = result.replace(COLOR, RED);
      }
      return result;
    }
  }
  /*
   * A Build has a JDK version (5 or 6), a success and an optional list of
   * failures.
   */
  private static class Build {
    private static final String FAILURES = "#FAILURES#";
    private static final String VERSIONS = "#VERSIONS#";
    private static final String TEMPLATE =
            "<td style=\"" + DailyBuild.COLOR + "width: 10%; vertical-align: middle; text-align: center;\">" + VERSIONS + "</td>" +
            "<td style=\"font-family: monospace; text-align: left;\">" + FAILURES + "</td>";
    private JDK jdk;
    private boolean success;
    private List<TestFailure> failures;
    public Build(JDK jdk) {
      this.jdk = jdk;
    }
    public JDK getJDK() {
      return this.jdk;
    }
    public boolean isSuccess() {
      return this.success;
    }
    public void setSuccess(boolean success) {
      this.success = success;
    }
    public void addFailure(TestFailure failure) {
      if (this.failures == null) {
        this.failures = new ArrayList<TestFailure>();
      }
      this.failures.add(failure);
    }
    @Override
    public String toString() {
      String result = TEMPLATE.replace(VERSIONS, this.jdk.name());
      if (!this.success) {
        StringBuilder sb = new StringBuilder();
        if (this.failures != null) {
          for (TestFailure failure : this.failures) {
            sb.append(failure.sb).append("<br>");
          }
        } else {
          sb.append("<b>Unknown error.</b>");
        }
        result = result.replace(FAILURES, sb).replace(DailyBuild.COLOR, RED);
      } else {
        result = result.replace(FAILURES, "").replace(DailyBuild.COLOR, GREEN);
      }
      return result;
    }
  }
  /*
   * A TestFailure encapsulates a list of relevant logs.
   */
  private static class TestFailure {
    private StringBuilder sb;
    private String title;
    public TestFailure(String title) {
      this.title = title.substring(12, title.length());
    }
    public void appendLog(String log) {
      if (this.sb == null) {
        this.sb = new StringBuilder("<p><b>").append(this.title).append("</b><br>");
      }
      this.sb.append(log.substring(12, log.length())).append("<br>");
    }
  }
}
re-scripts/bin/ws/daily-build.sh
New file
@@ -0,0 +1,349 @@
#!/bin/sh
set -x
# Define the Java versions that we will use to perform the build.
# These values should correspond to subdirectories below /java
JAVA_VERSIONS="jdk5 jdk6"
# Define absolute paths to all commands we will use in this script.
AWK=/usr/bin/awk
NAWK=/usr/bin/nawk
CAT=/usr/bin/cat
CHMOD=/usr/bin/chmod
CUT=/usr/bin/cut
DATE=/usr/bin/date
DIRNAME=/usr/bin/dirname
GREP=/usr/bin/grep
GZIP=/usr/bin/gzip
HEAD=/usr/bin/head
LN=/usr/bin/ln
LS=/usr/bin/ls
MKDIR=/usr/bin/mkdir
MKTEMP=/usr/bin/mktemp
MV=/usr/bin/mv
RM=/usr/bin/rm
SORT=/usr/bin/sort
SVN=/opt/csw/bin/svn
TAR=/usr/bin/tar
TEST=/usr/bin/test
WC=/usr/bin/wc
SENDMAIL=/export/home/builds/bin/send-mail.sh
#Default Values
PROD="TEST : "
BUILDS_DIR=test-builds
SVN_URL=file:///svn-mirror/trunk/opends
RECIPIENT="jeanine.pikus@sun.com,carole.hebrard@sun.com"
SANITY=0
TEST_MODE=0
if ${TEST} $# -gt 0
then
  SANITY=0
  if ${TEST} $# -eq 1
  then
      Product=$@
  else
      if ${TEST} $# -eq 2
      then
         Product=$1
         TEST_MODE=1
      else
         echo "too much parameters ..."
         exit
      fi
  fi
  # Config files
  echo ${Product}
  if  [ ! -d /export/home/builds/bin/ws/product/${Product} ]
  then
      . /export/home/builds/bin/ws/product/${Product}
  else
      echo "the file /export/home/builds/bin/ws/product/${Product} doesn't exist .."
      exit
  fi
  if ${TEST} ${TEST_MODE} -eq 1
  then
      echo "MODE TEST..."
      BUILDS_DIR=${BUILDS_DIR}/tests
      RECIPIENT="jeanine.pikus@sun.com,carole.hebrard@sun.com"
  fi
else
  SANITY=0
  Product=""
# need to be dev : I would like to add a mode test
      echo "not enough parameters ..."
      echo "you must specify either trunk , either branch12 see /export/home/builds/bin/ws/product/"
      echo `date` >> /export/home/builds/bin/ws/trace
      exit
fi
echo "========================="
echo "Product = ${Product}"
echo "PROD = ${PROD}"
echo "BUILDS_DIR = ${BUILDS_DIR}"
echo "SVN_URL = ${SVN_URL}"
echo "RECIPIENT = ${RECIPIENT}"
echo "========================="
# Change to the directory that contains this script.
cd `${DIRNAME} $0`
# Explicitly set a minimal PATH so we don't run anything unexpected.
PATH="/bin:/usr/bin"
export PATH
# Define paths that will be used during this script.
SCRIPT_DIR=`pwd`
# Define the URL to use to access the repository.
#SVN_URL=file:///svn-mirror/trunk/opends
# Define variables that will be used when sending the e-mail message.
SENDER="opends@dev.java.net"
SUBJECT_DATE=`${DATE} '+%Y%m%d'`
SUBJECT="${PROD} OpenDS Daily Build ${SUBJECT_DATE}"
# Create a new directory to hold the build.
BUILD_DATE=`${DATE} '+%Y%m%d%H%M%S'`
BUILD_DIR="${BUILDS_DIR}/${BUILD_DATE}"
${MKDIR} -p ${BUILD_DIR}
# Start generating a log file for the build.
LOG_FILE="${BUILD_DIR}/build-${BUILD_DATE}.log"
SERVER_NAME="www.opends.org"
BUILD_URL="http://${SERVER_NAME}/${BUILDS_DIR}/${BUILD_DATE}/"
echo "OpenDS Daily Build ${SUBJECT_DATE}" > ${LOG_FILE}
echo "Build Time:  ${BUILD_DATE}" >> ${LOG_FILE}
echo "Build URL:   ${BUILD_URL}" >> ${LOG_FILE}
echo >> ${LOG_FILE}
echo >> ${LOG_FILE}
# Check out the head revision from the repository.
cd ${BUILD_DIR}
echo ${SVN} checkout -q --non-interactive ${SVN_URL} OpenDS >> ${LOG_FILE} 2>&1
${SVN} checkout -q --non-interactive ${SVN_URL} OpenDS >> ${LOG_FILE} 2>&1
echo >> ${LOG_FILE}
echo >> ${LOG_FILE}
# Add information about the checked-out revision to the log.
cd OpenDS
echo ${SVN} info >> ${LOG_FILE} 2>&1
${SVN} info >> ${LOG_FILE} 2>&1
echo >> ${LOG_FILE}
echo >> ${LOG_FILE}
# jp146654 :add path to OpenDMK
cd ${BUILD_DIR}/OpenDS
OLD_BUILDPROP_FILE=build.properties.origin
NEW_BUILDPROP_FILE=build.properties
echo update Opendmk lib path in OpenDS/build.properties>> ${LOG_FILE} 2>&1
echo cp ${NEW_BUILDPROP_FILE} ${NEW_BUILDPROP_FILE}.origin >> ${LOG_FILE} 2>&1
cp ${NEW_BUILDPROP_FILE} ${NEW_BUILDPROP_FILE}.origin
echo add new path   : /export/home/builds/OpenDMK-bin/lib>> ${LOG_FILE} 2>&1
${CAT}  ${OLD_BUILDPROP_FILE} | sed "s/opendmk\.lib\.dir\=/opendmk\.lib\.dir\=\/export\/home\/builds\/OpenDMK-bin\/lib/g" > ${NEW_BUILDPROP_FILE}
echo >> ${LOG_FILE}
echo >> ${LOG_FILE}
# end
# Parse the PRODUCT file to get the version information.
SHORT_NAME=`${GREP} SHORT_NAME PRODUCT | ${CUT} -d= -f2`
MAJOR_VERSION=`${GREP} MAJOR_VERSION PRODUCT | ${CUT} -d= -f2`
MINOR_VERSION=`${GREP} MINOR_VERSION PRODUCT | ${CUT} -d= -f2`
POINT_VERSION=`${GREP} POINT_VERSION PRODUCT | ${CUT} -d= -f2`
VERSION_QUALIFIER=`${GREP} VERSION_QUALIFIER PRODUCT | ${CUT} -d= -f2`
VERSION_NUMBER_STRING="${MAJOR_VERSION}.${MINOR_VERSION}.${POINT_VERSION}${VERSION_QUALIFIER}"
VERSION_STRING="${SHORT_NAME}-${VERSION_NUMBER_STRING}"
# Loop through the JDK versions and build usin gthe "nightly" target.
# We'll set JAVA_HOME each time, and when we're done, we can continue using
# the last one.
ANY_BUILD_FAILED=0
ALL_BUILD_FAILED=1
TEST_FAILED=0
for VERSION in ${JAVA_VERSIONS}
do
  # Removes directory that might be still there if test failed before
  # @AfterClass that normaly performs the cleanup
  FSCACHE=/tmp/OpenDS.FSCache
  if ${TEST} -d FSCACHE
  then
    ${RM} -rf ${FSCACHE}
  fi
  JAVA_HOME=/java/${VERSION}
  export JAVA_HOME
  echo "Building with Java version ${VERSION}" >> ${LOG_FILE}
  echo ./build.sh nightlybuild -Ddisable.test.help=true -DMEM=512M >> ${LOG_FILE} 2>&1
  ./build.sh nightlybuild -Ddisable.test.help=true -DMEM=512M >> ${LOG_FILE} 2>&1
  if ${TEST} $? -eq 0
  then
    ALL_BUILD_FAILED=0
    echo ./build.sh nightlytests -Ddisable.test.help=true -DMEM=512M >> ${LOG_FILE} 2>&1
    ./build.sh nightlytests -Ddisable.test.help=true -DMEM=512M >> ${LOG_FILE} 2>&1
    if ${TEST} $? -ne 0
    then
      TEST_FAILED=1
    fi
  else
    ANY_BUILD_FAILED=1
  fi
  echo ./build.sh svr4 -Ddisable.test.help=true -DMEM=512M >> ${LOG_FILE} 2>&1
  ./build.sh svr4  -Ddisable.test.help=true -DMEM=512M >> ${LOG_FILE} 2>&1
  if ${TEST} $? -ne 0
  then
    ANY_BUILD_FAILED=1
  fi
  # Create the Java Web Start install archive.
  ADDRESS="www.opends.org"
  export ADDRESS
  BASE_PATH=/${BUILDS_DIR}/latest/OpenDS/build/webstart/install
  export BASE_PATH
  echo resource/webstart/create-webstart-standalone.sh >> ${LOG_FILE} 2>&1
  resource/webstart/create-webstart-standalone.sh >> ${LOG_FILE} 2>&1
  # fix to make create-webstart-standalone.sh support jdk5 and jdk6
  NEW_QUICKSETUP_FILE=`${MKTEMP}`
  JWS_QUICKSETUP_FILE=build/webstart/install/QuickSetup.jnlp
  cat ${JWS_QUICKSETUP_FILE} | sed "s/\/build\//\/build.${VERSION}\//g" > ${NEW_QUICKSETUP_FILE}
  mv ${JWS_QUICKSETUP_FILE} ${JWS_QUICKSETUP_FILE}.moved
  mv ${NEW_QUICKSETUP_FILE} ${JWS_QUICKSETUP_FILE}
  ${CHMOD} +r ${JWS_QUICKSETUP_FILE}
  echo >> ${LOG_FILE}
  echo >> ${LOG_FILE}
  ${MV} build build.${VERSION}
done
#If this is a sanity check, exit
#if ${TEST} ${SANITY} -eq 1
#then
#  exit 1
#fi
# Create a README.html file in for this build.
cat > ${BUILD_DIR}/README.html <<ENDOFREADME
<TABLE BORDER="0">
  <TR>
    <TD>
      <IMG SRC="http://${SERVER_NAME}/images/opends_logo_welcome.png" ALT="OpenDS Logo" WIDTH="197" HEIGHT="57">
    </TD>
    <TD>
      <H2>OpenDS Daily Build ${SUBJECT_DATE}</H2>
      <A HREF="${BUILD_URL}build-${BUILD_DATE}.log">Build Log File</A>
ENDOFREADME
for VERSION in ${JAVA_VERSIONS}
do
cat >> ${BUILD_DIR}/README.html <<ENDOFREADME
      <BR>
      <B>Build with Java Version ${VERSION}</B>
      <A HREF="${BUILD_URL}OpenDS/build.${VERSION}/package/${VERSION_STRING}.zip">${VERSION_STRING}.zip Build Package File</A><BR>
      <A HREF="${BUILD_URL}OpenDS/build.${VERSION}/package/${VERSION_STRING}-DSML.war">${VERSION_STRING}-DSML.war DSML Gateway</A><BR>
      <A HREF="${BUILD_URL}OpenDS/build.${VERSION}/webstart/install/QuickSetup.jnlp">QuickSetup Java Web Start Installer</A><BR>
      <A HREF="${BUILD_URL}OpenDS/build.${VERSION}/javadoc/">Javadoc Documentation</A><BR>
      <A HREF="${BUILD_URL}OpenDS/build.${VERSION}/src.zip">src.zip Source Archive</A><BR>
      <A HREF="${BUILD_URL}OpenDS/build.${VERSION}/unit-tests/report/results.txt">Unit Test Report</A><BR>
      <A HREF="${BUILD_URL}OpenDS/build.${VERSION}/coverage/reports/unit/">Unit Test Code Goverage Report</A><BR>
ENDOFREADME
done
cat >> ${BUILD_DIR}/README.html <<ENDOFREADME
    </TD>
  </TR>
</TABLE>
ENDOFREADME
# Remove the "latest" symlink (if it exists) and recreate it pointing to
# the new build.
cd ${BUILDS_DIR}
${RM} -f latest
${LN} -s ${BUILD_DIR} ${BUILDS_DIR}/latest
# Remove an old directory if appropriate.  We want to keep up to 30 builds.
COUNT=`${LS} | ${SORT} | ${GREP} -v latest | ${WC} -l | ${AWK} '{print $1}'`
if ${TEST} ${COUNT} -gt 30
then
  OLDEST=`${LS} | ${SORT} | ${GREP} -v latest | ${HEAD} -1`
  ${RM} -rf ${OLDEST}
fi
#JPI : to be able to access unit tests logs wia http
if test -d "/${BUILDS_DIR}/latest/OpenDS/build.jdk5/unit-tests/package-instance/logs"
then
   chmod -R 777 /${BUILDS_DIR}/latest/OpenDS/build.jdk5/unit-tests/package-instance/logs
fi
if test -d "/${BUILDS_DIR}/latest/OpenDS/build.jdk6/unit-tests/package-instance/logs"
then
   chmod -R 777 /${BUILDS_DIR}/latest/OpenDS/build.jdk6/unit-tests/package-instance/logs
fi
####
# Send an e-mail message to indicate that the build is complete.
BODY_FILE=`${MKTEMP}`
echo "OpenDS Daily Build ${SUBJECT_DATE}" > ${BODY_FILE}
echo "Java Versions Tested:  ${JAVA_VERSIONS}" >> ${BODY_FILE}
if ${TEST} ${ANY_BUILD_FAILED} -eq 0
then
  echo "Build Status:  Succeeded for all Java versions" >> ${BODY_FILE}
  if ${TEST} ${TEST_FAILED} -eq 0
  then
    SUBJECT_WITH_STATUS="${SUBJECT} (success)"
  else
    RES=`cat /$BUILD_DIR/OpenDS/build.jdk?/unit-tests/report/results.txt | ${NAWK} ' BEGIN {F=0;T=0} /# Tests failed/ {F=F+$4} /# Test classes:/ {T=T+$4}  END {printf("%.2f\n",100-F/T*100)}`
    SUBJECT_WITH_STATUS="${SUBJECT} (build successful - ${RES}% tests passed)"
  fi
else
  if ${TEST} ${ALL_BUILD_FAILED} -eq 0
  then
    echo "Build Status:  Failed for some Java versions" >> ${BODY_FILE}
  else
    echo "Build Status:  Failed for all Java versions" >> ${BODY_FILE}
  fi
  SUBJECT_WITH_STATUS="${SUBJECT} (failure)"
fi
echo "Build URL:  ${BUILD_URL}" >> ${BODY_FILE}
${SENDMAIL} --from "${SENDER}" --to "${RECIPIENT}" --subject "${SUBJECT_WITH_STATUS}" \
            --body "${BODY_FILE}" --attach "${BUILD_DIR}/README.html" \
            --attach "${LOG_FILE}"
${RM} ${BODY_FILE}
re-scripts/bin/ws/getParameter.sh
New file
@@ -0,0 +1,70 @@
#!/bin/sh
TEST=/usr/bin/test
#Default Values
PROD="TEST : "
BUILDS_DIR=test-builds
SVN_URL=file:///svn-mirror/trunk/opends
RECIPIENT="jeanine.pikus@sun.com,carole.hebrard@sun.com"
SANITY=1
TEST_MODE=0
if ${TEST} $# -gt 0
then
  SANITY=0
  if ${TEST} $# -eq 1
  then
      Product=$@
  else
      if ${TEST} $# -eq 2
      then
         Product=$1
         TEST_MODE=1
      else
         echo "too much parameters ..."
         exit
      fi
  fi
  # Config files
  echo ${Product}
  if  [ ! -d ./product/${Product} ]
  then
      . ./product/${Product}
  else
      echo "the file ./product/${Product} doesn't exist .."
      exit
  fi
  if ${TEST} ${TEST_MODE} -eq 1
  then
      echo "MODE TEST..."
      BUILDS_DIR=${BUILDS_DIR}/tests
      RECIPIENT="jeanine.pikus@sun.com,carole.hebrard@sun.com"
  fi
else
  SANITY=1
  Product=""
# need to be dev : I would like to add a mode test
      echo "not enough parameters ..."
      echo "you must specify either trunk , either branch12 see ./product/"
      exit
fi
 export Product
export PROD
export BUILDS_DIR
export SVN_URL
export RECIPIENT
export TEST_MODE
export SANITY
echo "========================="
echo "Product = ${Product}"
echo "PROD = ${PROD}"
echo "BUILDS_DIR = ${BUILDS_DIR}"
echo "SVN_URL = ${SVN_URL}"
echo "RECIPIENT = ${RECIPIENT}"
echo "========================="
re-scripts/bin/ws/mydaily-build.sh
New file
@@ -0,0 +1,364 @@
#!/bin/sh
set -x
# Define the Java versions that we will use to perform the build.
# These values should correspond to subdirectories below /java
JAVA_VERSIONS="jdk5 jdk6"
# Define absolute paths to all commands we will use in this script.
AWK=/usr/bin/awk
NAWK=/usr/bin/nawk
CAT=/usr/bin/cat
CHMOD=/usr/bin/chmod
CUT=/usr/bin/cut
DATE=/usr/bin/date
DIRNAME=/usr/bin/dirname
GREP=/usr/bin/grep
GZIP=/usr/bin/gzip
HEAD=/usr/bin/head
LN=/usr/bin/ln
LS=/usr/bin/ls
MKDIR=/usr/bin/mkdir
MKTEMP=/usr/bin/mktemp
MV=/usr/bin/mv
RM=/usr/bin/rm
SORT=/usr/bin/sort
SVN=/opt/csw/bin/svn
TAR=/usr/bin/tar
TEST=/usr/bin/test
WC=/usr/bin/wc
SENDMAIL=/export/home/builds/bin/send-mail.sh
#Default Values
PROD="TEST : "
BUILDS_DIR=test-builds
SVN_URL=file:///svn-mirror/trunk/opends
RECIPIENT="jeanine.pikus@sun.com,carole.hebrard@sun.com"
SANITY=1
TEST_MODE=0
if ${TEST} $# -gt 0
then
  SANITY=0
  if ${TEST} $# -eq 1
  then
      Product=$@
  else
      if ${TEST} $# -eq 2
      then
         Product=$1
         TEST_MODE=1
      else
         echo "too much parameters ..."
         exit
      fi
  fi
  # Config files
  echo ${Product}
  if  [ ! -d ./product/${Product} ]
  then
      . ./product/${Product}
  else
      echo "the file ./product/${Product} doesn't exist .."
      exit
  fi
  if ${TEST} ${TEST_MODE} -eq 1
  then
      echo "MODE TEST..."
      BUILDS_DIR=${BUILDS_DIR}/tests
      RECIPIENT="jeanine.pikus@sun.com,carole.hebrard@sun.com"
  fi
else
  SANITY=1
  Product=""
# need to be dev : I would like to add a mode test
      echo "not enough parameters ..."
      echo "you must specify either trunk , either branch12 see ./product/"
      exit
fi
echo "========================="
echo "Product = ${Product}"
echo "PROD = ${PROD}"
echo "BUILDS_DIR = ${BUILDS_DIR}"
echo "SVN_URL = ${SVN_URL}"
echo "RECIPIENT = ${RECIPIENT}"
echo "========================="
# Change to the directory that contains this script.
cd `${DIRNAME} $0`
# Explicitly set a minimal PATH so we don't run anything unexpected.
PATH="/bin:/usr/bin"
export PATH
# Define paths that will be used during this script.
SCRIPT_DIR=`pwd`
# Define the URL to use to access the repository.
#SVN_URL=file:///svn-mirror/trunk/opends
# Define variables that will be used when sending the e-mail message.
SENDER="opends@dev.java.net"
SUBJECT_DATE=`${DATE} '+%Y%m%d'`
SUBJECT="${PROD} OpenDS Daily Build ${SUBJECT_DATE}"
# Create a new directory to hold the build.
#BUILD_DATE=`${DATE} '+%Y%m%d%H%M%S'`
#${MKDIR} -p ${BUILD_DIR}
BUILD_DATE=20090122033538
BUILD_DIR="${BUILDS_DIR}/${BUILD_DATE}"
# Start generating a log file for the build.
LOG_FILE="${BUILD_DIR}/build-${BUILD_DATE}.log"
SERVER_NAME="www.opends.org"
BUILD_URL="http://${SERVER_NAME}/${BUILDS_DIR}/${BUILD_DATE}/"
##############
##JPIJPI
##############
MYDAILY=0
if ${TEST} ${MYDAILY} -eq 1
then
echo "OpenDS Daily Build ${SUBJECT_DATE}" > ${LOG_FILE}
echo "Build Time:  ${BUILD_DATE}" >> ${LOG_FILE}
echo "Build URL:   ${BUILD_URL}" >> ${LOG_FILE}
echo >> ${LOG_FILE}
echo >> ${LOG_FILE}
# Check out the head revision from the repository.
cd ${BUILD_DIR}
echo ${SVN} checkout -q --non-interactive ${SVN_URL} OpenDS >> ${LOG_FILE} 2>&1
${SVN} checkout -q --non-interactive ${SVN_URL} OpenDS >> ${LOG_FILE} 2>&1
echo >> ${LOG_FILE}
echo >> ${LOG_FILE}
# Add information about the checked-out revision to the log.
cd OpenDS
echo ${SVN} info >> ${LOG_FILE} 2>&1
${SVN} info >> ${LOG_FILE} 2>&1
echo >> ${LOG_FILE}
echo >> ${LOG_FILE}
# jp146654 :add path to OpenDMK
cd ${BUILD_DIR}/OpenDS
OLD_BUILDPROP_FILE=build.properties.origin
NEW_BUILDPROP_FILE=build.properties
echo update Opendmk lib path in OpenDS/build.properties>> ${LOG_FILE} 2>&1
echo cp ${NEW_BUILDPROP_FILE} ${NEW_BUILDPROP_FILE}.origin >> ${LOG_FILE} 2>&1
cp ${NEW_BUILDPROP_FILE} ${NEW_BUILDPROP_FILE}.origin
echo add new path   : /export/home/builds/OpenDMK-bin/lib>> ${LOG_FILE} 2>&1
${CAT}  ${OLD_BUILDPROP_FILE} | sed "s/opendmk\.lib\.dir\=/opendmk\.lib\.dir\=\/export\/home\/builds\/OpenDMK-bin\/lib/g" > ${NEW_BUILDPROP_FILE}
echo >> ${LOG_FILE}
echo >> ${LOG_FILE}
# end
# Parse the PRODUCT file to get the version information.
SHORT_NAME=`${GREP} SHORT_NAME PRODUCT | ${CUT} -d= -f2`
MAJOR_VERSION=`${GREP} MAJOR_VERSION PRODUCT | ${CUT} -d= -f2`
MINOR_VERSION=`${GREP} MINOR_VERSION PRODUCT | ${CUT} -d= -f2`
POINT_VERSION=`${GREP} POINT_VERSION PRODUCT | ${CUT} -d= -f2`
VERSION_QUALIFIER=`${GREP} VERSION_QUALIFIER PRODUCT | ${CUT} -d= -f2`
VERSION_NUMBER_STRING="${MAJOR_VERSION}.${MINOR_VERSION}.${POINT_VERSION}${VERSION_QUALIFIER}"
VERSION_STRING="${SHORT_NAME}-${VERSION_NUMBER_STRING}"
# Loop through the JDK versions and build usin gthe "nightly" target.
# We'll set JAVA_HOME each time, and when we're done, we can continue using
# the last one.
ANY_BUILD_FAILED=0
ALL_BUILD_FAILED=1
TEST_FAILED=0
for VERSION in ${JAVA_VERSIONS}
do
  # Removes directory that might be still there if test failed before
  # @AfterClass that normaly performs the cleanup
  FSCACHE=/tmp/OpenDS.FSCache
  if ${TEST} -d FSCACHE
  then
    ${RM} -rf ${FSCACHE}
  fi
  JAVA_HOME=/java/${VERSION}
  export JAVA_HOME
  echo "Building with Java version ${VERSION}" >> ${LOG_FILE}
  echo ./build.sh nightlybuild -Ddisable.test.help=true -DMEM=512M >> ${LOG_FILE} 2>&1
  ./build.sh nightlybuild -Ddisable.test.help=true -DMEM=512M >> ${LOG_FILE} 2>&1
  if ${TEST} $? -eq 0
  then
    ALL_BUILD_FAILED=0
    echo ./build.sh nightlytests -Ddisable.test.help=true -DMEM=512M >> ${LOG_FILE} 2>&1
    ./build.sh nightlytests -Ddisable.test.help=true -DMEM=512M >> ${LOG_FILE} 2>&1
    if ${TEST} $? -ne 0
    then
      TEST_FAILED=1
    fi
  else
    ANY_BUILD_FAILED=1
  fi
  echo ./build.sh svr4 -Ddisable.test.help=true -DMEM=512M >> ${LOG_FILE} 2>&1
  ./build.sh svr4  -Ddisable.test.help=true -DMEM=512M >> ${LOG_FILE} 2>&1
  if ${TEST} $? -ne 0
  then
    ANY_BUILD_FAILED=1
  fi
  # Create the Java Web Start install archive.
  ADDRESS="www.opends.org"
  export ADDRESS
  BASE_PATH=/${BUILDS_DIR}/latest/OpenDS/build/webstart/install
  export BASE_PATH
  echo resource/webstart/create-webstart-standalone.sh >> ${LOG_FILE} 2>&1
  resource/webstart/create-webstart-standalone.sh >> ${LOG_FILE} 2>&1
  # fix to make create-webstart-standalone.sh support jdk5 and jdk6
  NEW_QUICKSETUP_FILE=`${MKTEMP}`
  JWS_QUICKSETUP_FILE=build/webstart/install/QuickSetup.jnlp
  cat ${JWS_QUICKSETUP_FILE} | sed "s/\/build\//\/build.${VERSION}\//g" > ${NEW_QUICKSETUP_FILE}
  mv ${JWS_QUICKSETUP_FILE} ${JWS_QUICKSETUP_FILE}.moved
  mv ${NEW_QUICKSETUP_FILE} ${JWS_QUICKSETUP_FILE}
  ${CHMOD} +r ${JWS_QUICKSETUP_FILE}
  echo >> ${LOG_FILE}
  echo >> ${LOG_FILE}
  ${MV} build build.${VERSION}
done
#If this is a sanity check, exit
#if ${TEST} ${SANITY} -eq 1
#then
#  exit 1
#fi
fi # MYDAILY eq 1
###############
## JPIJPI
###############
 ANY_BUILD_FAILED=1
TEST_FAILED=1
# Create a README.html file in for this build.
cat > ${BUILD_DIR}/README.html <<ENDOFREADME
<TABLE BORDER="0">
  <TR>
    <TD>
      <IMG SRC="http://${SERVER_NAME}/images/opends_logo_welcome.png" ALT="OpenDS Logo" WIDTH="197" HEIGHT="57">
    </TD>
    <TD>
      <H2>OpenDS Daily Build ${SUBJECT_DATE}</H2>
      <A HREF="${BUILD_URL}build-${BUILD_DATE}.log">Build Log File</A>
ENDOFREADME
for VERSION in ${JAVA_VERSIONS}
do
cat >> ${BUILD_DIR}/README.html <<ENDOFREADME
      <BR>
      <B>Build with Java Version ${VERSION}</B>
      <A HREF="${BUILD_URL}OpenDS/build.${VERSION}/package/${VERSION_STRING}.zip">${VERSION_STRING}.zip Build Package File</A><BR>
      <A HREF="${BUILD_URL}OpenDS/build.${VERSION}/package/${VERSION_STRING}-DSML.war">${VERSION_STRING}-DSML.war DSML Gateway</A><BR>
      <A HREF="${BUILD_URL}OpenDS/build.${VERSION}/webstart/install/QuickSetup.jnlp">QuickSetup Java Web Start Installer</A><BR>
      <A HREF="${BUILD_URL}OpenDS/build.${VERSION}/javadoc/">Javadoc Documentation</A><BR>
      <A HREF="${BUILD_URL}OpenDS/build.${VERSION}/src.zip">src.zip Source Archive</A><BR>
      <A HREF="${BUILD_URL}OpenDS/build.${VERSION}/unit-tests/report/results.txt">Unit Test Report</A><BR>
      <A HREF="${BUILD_URL}OpenDS/build.${VERSION}/coverage/reports/unit/">Unit Test Code Goverage Report</A><BR>
ENDOFREADME
done
cat >> ${BUILD_DIR}/README.html <<ENDOFREADME
    </TD>
  </TR>
</TABLE>
ENDOFREADME
# Remove the "latest" symlink (if it exists) and recreate it pointing to
# the new build.
cd ${BUILDS_DIR}
${RM} -f latest
${LN} -s ${BUILD_DIR} ${BUILDS_DIR}/latest
# Remove an old directory if appropriate.  We want to keep up to 30 builds.
COUNT=`${LS} | ${SORT} | ${GREP} -v latest | ${WC} -l | ${AWK} '{print $1}'`
if ${TEST} ${COUNT} -gt 30
then
  OLDEST=`${LS} | ${SORT} | ${GREP} -v latest | ${HEAD} -1`
  ${RM} -rf ${OLDEST}
fi
#JPI : to be able to access unit tests logs wia http
if test -d "/${BUILDS_DIR}/latest/OpenDS/build.jdk5/unit-tests/package-instance/logs"
then
   chmod -R 777 /${BUILDS_DIR}/latest/OpenDS/build.jdk5/unit-tests/package-instance/logs
fi
if test -d "/${BUILDS_DIR}/latest/OpenDS/build.jdk6/unit-tests/package-instance/logs"
then
   chmod -R 777 /${BUILDS_DIR}/latest/OpenDS/build.jdk6/unit-tests/package-instance/logs
fi
####
# Send an e-mail message to indicate that the build is complete.
BODY_FILE=`${MKTEMP}`
echo "OpenDS Daily Build ${SUBJECT_DATE}" > ${BODY_FILE}
echo "Java Versions Tested:  ${JAVA_VERSIONS}" >> ${BODY_FILE}
if ${TEST} ${ANY_BUILD_FAILED} -eq 0
then
  echo "Build Status:  Succeeded for all Java versions" >> ${BODY_FILE}
  if ${TEST} ${TEST_FAILED} -eq 0
  then
    SUBJECT_WITH_STATUS="${SUBJECT} (success)"
  else
    RES=`cat /$BUILD_DIR/OpenDS/build.jdk?/unit-tests/report/results.txt | ${NAWK} ' BEGIN {F=0;T=0} /# Tests failed/ {F=F+$4} /# Test classes:/ {T=T+$4}  END {printf("%.2f\n",100-F/T*100)}`
    SUBJECT_WITH_STATUS="${SUBJECT} (build successful - ${RES}% tests passed)"
  fi
else
  if ${TEST} ${ALL_BUILD_FAILED} -eq 0
  then
    echo "Build Status:  Failed for some Java versions" >> ${BODY_FILE}
  else
    echo "Build Status:  Failed for all Java versions" >> ${BODY_FILE}
  fi
  SUBJECT_WITH_STATUS="${SUBJECT} (failure)"
fi
echo "Build URL:  ${BUILD_URL}" >> ${BODY_FILE}
${SENDMAIL} --from "${SENDER}" --to "${RECIPIENT}" --subject "${SUBJECT_WITH_STATUS}" \
            --body "${BODY_FILE}" --attach "${BUILD_DIR}/README.html" \
            --attach "${LOG_FILE}"
${RM} ${BODY_FILE}
re-scripts/bin/ws/product/branch12
New file
@@ -0,0 +1,13 @@
PROD="Branch 1.2 :"
BUILDS_DIR=/daily-builds/branch1.2/
PROMOTED_DIR=/promoted-builds/1.2
SVN_URL=file:///svn-mirror/branches/b1.2/
RECIPIENT="dev@opends.dev.java.net"
RECIPIENT="jeanine.pikus@sun.com"
export PROD
export BUILDS_DIR
export SVN_URL
export RECIPIENT
re-scripts/bin/ws/product/trunk
New file
@@ -0,0 +1,13 @@
PROD=""
BUILDS_DIR=/daily-builds
PROMOTED_DIR=/promoted-builds
SVN_URL=file:///svn-mirror/trunk/opends
RECIPIENT="dev@opends.dev.java.net"
RECIPIENT="jeanine.pikus@sun.com"
export PROD
export BUILDS_DIR
export SVN_URL
export RECIPIENT
re-scripts/bin/ws/test-builds/20090120094011/build-20090120094011.log
New file
@@ -0,0 +1,5 @@
OpenDS Daily Build 20090120
Build Time:  20090120094011
Build URL:   http://www.opends.org/./test-builds/20090120094011/
re-scripts/bin/ws/test-builds/20090120094115/build-20090120094115.log
New file
@@ -0,0 +1,5 @@
OpenDS Daily Build 20090120
Build Time:  20090120094115
Build URL:   http://www.opends.org/./test-builds/20090120094115/
re-scripts/bin/ws/test-builds/20090120094230/build-20090120094230.log
New file
@@ -0,0 +1,5 @@
OpenDS Daily Build 20090120
Build Time:  20090120094230
Build URL:   http://www.opends.org/./test-builds/20090120094230/
re-scripts/bin/ws/test-builds/20090120094300/build-20090120094300.log
New file
@@ -0,0 +1,5 @@
OpenDS Daily Build 20090120
Build Time:  20090120094300
Build URL:   http://www.opends.org/./test-builds/20090120094300/
re-scripts/bin/ws/test-builds/20090120094352/build-20090120094352.log
New file
@@ -0,0 +1,5 @@
OpenDS Daily Build 20090120
Build Time:  20090120094352
Build URL:   http://www.opends.org/./test-builds/20090120094352/
re-scripts/bin/ws/test-builds/20090120094434/build-20090120094434.log
New file
@@ -0,0 +1,5 @@
OpenDS Daily Build 20090120
Build Time:  20090120094434
Build URL:   http://www.opends.org/test-builds/20090120094434/
re-scripts/bin/ws/test-builds/20090120105037/build-20090120105037.log
New file
@@ -0,0 +1,5 @@
OpenDS Daily Build 20090120
Build Time:  20090120105037
Build URL:   http://www.opends.org/test-builds/20090120105037/
re-scripts/bin/ws/weekly-build.sh
New file
@@ -0,0 +1,384 @@
#!/bin/sh
# Define the Java versions that we will use to perform the build.
# These values should correspond to subdirectories below /java
#JAVA_VERSIONS="jdk5 jdk6"
# Define absolute paths to all commands that we will use in this script.
AWK="/usr/bin/awk"
BASENAME=/usr/bin/basename
CAT="/usr/bin/cat"
CHMOD="/usr/bin/chmod"
DATE="/usr/bin/date"
DIGEST="/usr/bin/digest"
DIRNAME="/usr/bin/dirname"
GREP="/usr/bin/grep"
LN="/usr/bin/ln"
MKDIR="/usr/bin/mkdir"
MKTEMP="/usr/bin/mktemp"
MV="/usr/bin/mv"
PS="/usr/bin/ps"
RM="/usr/bin/rm"
SVN="/opt/csw/bin/svn"
SENDMAIL="/export/home/builds/bin/send-mail.sh"
TEST=/usr/bin/test
. ./getParameter.sh $@
if ${TEST} $? -eq 1
  then
  echo " stop there ..."
  exit 1
fi
BUILDS_DIR=${PROMOTED_DIR}
echo "========================="
echo "Product = ${Product}"
echo "PROD = ${PROD}"
echo "BUILDS_DIR = ${BUILDS_DIR}"
echo "SVN_URL = ${SVN_URL}"
echo "RECIPIENT = ${RECIPIENT}"
echo "========================="
exit
# Change to the directory that contains this script.
cd `${DIRNAME} $0`
# Explicitly set a minimal PATH so we don't run anything unexpected.
PATH="/bin:/usr/bin"
export PATH
# Sanity checks
# Removes directory that might be still there if test failed before @AfterClass
# that normaly performs the cleanup
FSCACHE=/tmp/OpenDS.FSCache
if ${TEST} -d FSCACHE
then
  ${RM} -rf ${FSCACHE}
fi
# Checks that no weekly build is running
${PS} | grep `${BASENAME} $0`
if ${TEST} $? -eq 0
  then
  echo "This script is already running. Aborting..."
  exit 1
fi
# Checks that no daily build is running
${PS} | grep daily\.sh
if ${TEST} $? -eq 0
  then
  echo "The daily script is currently running. Aborting..."
  exit 1
fi
# Define paths that will be used during this script.
SCRIPT_DIR=`pwd`
# Start creating a log file that will be used to record progress.
LOG_FILE=`${MKTEMP}`
BUILD_DATE=`${DATE} '+%Y%m%d%H%M%S'`
echo "Beginning weekly build processing at ${BUILD_DATE}" > "${LOG_FILE}"
echo "" >> "${LOG_FILE}"
# Define paths to all directories that we will access in this script.
# These should all be absolute paths.
BUILD_NUMBER_FILE="buildnumber.txt"
REVISION_NUMBER_FILE="revision.txt"
VERSION_NUMBER_FILE="version.txt"
# Look at what is currently the latest weekly build to get information we need
# to bootstrap this build.
LAST_BUILD_DIR="${BUILDS_DIR}/latest"
LAST_BUILD_NUMBER=`cat ${LAST_BUILD_DIR}/${BUILD_NUMBER_FILE}`
LAST_REVISION_NUMBER=`cat ${LAST_BUILD_DIR}/${REVISION_NUMBER_FILE}`
BUILD_NUMBER=`echo "${LAST_BUILD_NUMBER} + 1" | bc`
if test ${BUILD_NUMBER} -le 9
then
  BUILD_NUMBER_STR="00${BUILD_NUMBER}"
else
  if test ${BUILD_NUMBER} -le 99
  then
    BUILD_NUMBER_STR="0${BUILD_NUMBER}"
  else
    BUILD_NUMBER_STR="${BUILD_NUMBER}"
  fi
fi
echo "*** Build Number Information ***" >> "${LOG_FILE}"
echo "LAST_BUILD_DIR=${LAST_BUILD_DIR}" >> "${LOG_FILE}"
echo "LAST_BUILD_NUMBER=${LAST_BUILD_NUMBER}" >> "${LOG_FILE}"
echo "LAST_REVISION_NUMBER=${LAST_REVISION_NUMBER}" >> "${LOG_FILE}"
echo "BUILD_NUMBER=${BUILD_NUMBER}" >> "${LOG_FILE}"
echo "BUILD_NUMBER_STR=${BUILD_NUMBER_STR}" >> "${LOG_FILE}"
echo "" >> "${LOG_FILE}"
# Define information that we will use to access the repository.
PRODUCT_URL="${SVN_URL}/PRODUCT"
# Parse the contents of the PRODUCT file to get the version information.
echo "*** Product Version Information ***" >> "${LOG_FILE}"
PRODUCT_FILE=`${MKTEMP}`
echo ${SVN} cat --non-interactive "${PRODUCT_URL}" \> "${PRODUCT_FILE}" >> "${LOG_FILE}"
${SVN} cat --non-interactive "${PRODUCT_URL}" > "${PRODUCT_FILE}"
SHORT_NAME=`${GREP} SHORT_NAME "${PRODUCT_FILE}" | cut -d= -f2`
MAJOR_VERSION=`${GREP} MAJOR_VERSION "${PRODUCT_FILE}" | cut -d= -f2`
MINOR_VERSION=`${GREP} MINOR_VERSION "${PRODUCT_FILE}" | cut -d= -f2`
POINT_VERSION=`${GREP} POINT_VERSION "${PRODUCT_FILE}" | cut -d= -f2`
VERSION_QUALIFIER=`${GREP} VERSION_QUALIFIER "${PRODUCT_FILE}" | cut -d= -f2`
VERSION_NUMBER_STRING="${MAJOR_VERSION}.${MINOR_VERSION}.${POINT_VERSION}${VERSION_QUALIFIER}-build${BUILD_NUMBER_STR}"
VERSION_STRING="${SHORT_NAME}-${VERSION_NUMBER_STRING}"
${RM} "${PRODUCT_FILE}"
echo "SHORT_NAME=${SHORT_NAME}" >> "${LOG_FILE}"
echo "MAJOR_VERSION=${MAJOR_VERSION}" >> "${LOG_FILE}"
echo "MINOR_VERSION=${MINOR_VERSION}" >> "${LOG_FILE}"
echo "POINT_VERSION=${POINT_VERSION}" >> "${LOG_FILE}"
echo "VERSION_QUALIFIER=${VERSION_QUALIFIER}" >> "${LOG_FILE}"
echo "VERSION_STRING=${VERSION_STRING}" >> "${LOG_FILE}"
echo "" >> "${LOG_FILE}"
# Define variables that will be used when sending the e-mail message.
SENDER="opends@dev.java.net"
SUBJECT="${PROD} OpenDS Weekly Build Candidate ${VERSION_NUMBER_STRING}"
# Create a new directory to hold the build.
echo "*** Checking Out the Server ***" >> "${LOG_FILE}"
BUILD_DIR="${BUILDS_DIR}/${VERSION_NUMBER_STRING}"
if test -d "${BUILD_DIR}"
then
  echo "ERROR:  Target build directory ${BUILD_DIR} already exists"
  echo "ERROR:  Aborting the weekly build attempt."
  exit 1
fi
echo ${MKDIR} -p "${BUILDS_DIR}/${VERSION_NUMBER_STRING}" >> "${LOG_FILE}"
${MKDIR} -p "${BUILDS_DIR}/${VERSION_NUMBER_STRING}"
echo cd "${BUILDS_DIR}/${VERSION_NUMBER_STRING}" >> "${LOG_FILE}"
cd "${BUILD_DIR}"
echo ${MV} "${LOG_FILE}" "${VERSION_STRING}.log" >> "${LOG_FILE}"
${MV} "${LOG_FILE}" "${VERSION_STRING}.log" && LOG_FILE="${BUILD_DIR}/${VERSION_STRING}.log"
${CHMOD} 0644 "${LOG_FILE}"
echo "LOG_FILE=${LOG_FILE}" >> "${LOG_FILE}"
# Check out the head revision from the repository.
echo ${SVN} checkout -q --non-interactive ${SVN_URL} OpenDS >> "${LOG_FILE}" 2>&1
${SVN} checkout -q --non-interactive ${SVN_URL} OpenDS >> ${LOG_FILE} 2>&1
cd OpenDS
REVISION_NUMBER=`${SVN} info | ${GREP} '^Revision:' | ${AWK} '{print $2}'`
echo "REVISION_NUMBER=${REVISION_NUMBER}" >> "${LOG_FILE}"
echo "" >> "${LOG_FILE}"
# Add information about the checked out revision to the log file.
echo ${SVN} info >> "${LOG_FILE}" 2>&1
${SVN} info >> "${LOG_FILE}" 2>&1
echo "" >> "${LOG_FILE}"
# jp146654 :add path to OpenDMK
cd ${BUILD_DIR}/OpenDS
OLD_BUILDPROP_FILE=build.properties.origin
NEW_BUILDPROP_FILE=build.properties
echo update Opendmk lib path in OpenDS/build.properties>> ${LOG_FILE} 2>&1
echo cp ${NEW_BUILDPROP_FILE} ${NEW_BUILDPROP_FILE}.origin >> ${LOG_FILE} 2>&1
cp ${NEW_BUILDPROP_FILE} ${NEW_BUILDPROP_FILE}.origin
echo add new path   : /export/home/builds/OpenDMK-bin/lib>> ${LOG_FILE} 2>&1
${CAT}  ${OLD_BUILDPROP_FILE} | sed "s/opendmk\.lib\.dir\=/opendmk\.lib\.dir\=\/export\/home\/builds\/OpenDMK-bin\/lib/g" > ${NEW_BUILDPROP_FILE}
echo >> ${LOG_FILE}
echo >> ${LOG_FILE}
# end jp146654
JAVA_HOME=/java/jdk5
export JAVA_HOME
# Perform a build of the server using the "weekly" target.
echo "*** Building the Server ***" >> "${LOG_FILE}"
echo ./build.sh weekly svr4 -DBUILD_NUMBER=${BUILD_NUMBER} -Ddisable.test.help=true -DMEM=512M >> "${LOG_FILE}" 2>&1
./build.sh weekly svr4 -DBUILD_NUMBER=${BUILD_NUMBER} -Ddisable.test.help=true -DMEM=512M >> "${LOG_FILE}" 2>&1
if test $? -eq 0
then
  STATUS="Successful"
else
  STATUS="FAILED"
fi
echo "STATUS=${STATUS}" >> "${LOG_FILE}"
echo "" >> "${LOG_FILE}"
# Create the Java Web Start Install Archive.
ADDRESS="www.opends.org"
export ADDRESS
echo "*** Creating Java Web Start Install Archive ***" >> "${LOG_FILE}"
BASE_PATH="/promoted-builds/${VERSION_NUMBER_STRING}/install"
export BASE_PATH
echo "BASE_PATH=${BASE_PATH}" >> "${LOG_FILE}"
echo resource/webstart/create-webstart-standalone.sh >> "${LOG_FILE}" 2>&1
resource/webstart/create-webstart-standalone.sh  >> "${LOG_FILE}" 2>&1
echo "" >> "${LOG_FILE}"
# Symlink all of the appropriate files into place in the base build directory.
#${LN} -s "${BUILD_DIR}/OpenDS/build/package/${VERSION_STRING}.zip" "${BUILD_DIR}/${VERSION_STRING}.zip"
#${LN} -s "${BUILD_DIR}/OpenDS/build/package/${VERSION_STRING}-DSML.war" "${BUILD_DIR}/${VERSION_STRING}-DSML.war"
#${LN} -s "${BUILD_DIR}/OpenDS/build/src.zip" "${BUILD_DIR}/src.zip"
#${LN} -s "${BUILD_DIR}/OpenDS/build/webstart/install" "${BUILD_DIR}/install"
#${LN} -s "${BUILD_DIR}/OpenDS/build/javadoc" "${BUILD_DIR}/javadoc"
${LN} -s "OpenDS/build/package/${VERSION_STRING}.zip" "${BUILD_DIR}/${VERSION_STRING}.zip"
${LN} -s "OpenDS/build/package/${VERSION_STRING}-DSML.war" "${BUILD_DIR}/${VERSION_STRING}-DSML.war"
${LN} -s "OpenDS/build/src.zip" "${BUILD_DIR}/src.zip"
${LN} -s "OpenDS/build/webstart/install" "${BUILD_DIR}/install"
${LN} -s "OpenDS/build/javadoc" "${BUILD_DIR}/javadoc"
# Create MD5 digests of the appropriate files.
echo "*** Calculating MD5 Digests of Build Files ***" >> "${LOG_FILE}"
${DIGEST} -a md5 "${BUILD_DIR}/OpenDS/build/package/${VERSION_STRING}.zip" > "${BUILD_DIR}/${VERSION_STRING}.zip.md5"
${DIGEST} -a md5 "${BUILD_DIR}/OpenDS/build/package/${VERSION_STRING}-DSML.war" > "${BUILD_DIR}/${VERSION_STRING}-DSML.war.md5"
${DIGEST} -a md5 "${BUILD_DIR}/OpenDS/build/src.zip" > "${BUILD_DIR}/src.zip.md5"
CORE_SERVER_MD5=`${CAT} "${BUILD_DIR}/${VERSION_STRING}.zip.md5"`
DSML_GATEWAY_MD5=`${CAT} "${BUILD_DIR}/${VERSION_STRING}-DSML.war.md5"`
SRC_ZIP_MD5=`${CAT} "${BUILD_DIR}/src.zip.md5"`
echo "CORE_SERVER_MD5=${CORE_SERVER_MD5}" >> "${LOG_FILE}"
echo "DSML_GATEWAY_MD5=${DSML_GATEWAY_MD5}" >> "${LOG_FILE}"
echo "SRC_ZIP_MD5=${SRC_ZIP_MD5}" >> "${LOG_FILE}"
echo "" >> "${LOG_FILE}"
# Write the build number and revision numbers to text files.
echo "${BUILD_NUMBER}" > "${BUILD_DIR}/${BUILD_NUMBER_FILE}"
echo "${REVISION_NUMBER}" > "${BUILD_DIR}/${REVISION_NUMBER_FILE}"
echo "${VERSION_NUMBER_STRING}" > "${BUILD_DIR}/${VERSION_NUMBER_FILE}"
# Get a log of changes since the last build.
echo "*** Getting changelog data ***" >> "${LOG_FILE}"
LAST_REV_PLUS_ONE=`echo "${LAST_REVISION_NUMBER}+1" | bc`
echo ${SVN} log -r ${LAST_REV_PLUS_ONE}:${REVISION_NUMBER} >> "${LOG_FILE}" 2>&1
${SVN} log -r ${LAST_REV_PLUS_ONE}:${REVISION_NUMBER} > "${BUILD_DIR}/changes.log" 2>&1
echo "" >> "${LOG_FILE}"
#If this is a sanity check, exit
if ${TEST} ${SANITY} -eq 1
then
  echo "Sanity check done."
  exit 1
fi
# Create an index.html in the build directory.
${CAT} > "${BUILD_DIR}/index.html" <<ENDOFHTML
<!DOCTYPE html PUBLIC "-//Tigris//DTD XHTML 1.0 Transitional//EN" "http://style.tigris.org/nonav/tigris_transitional.dtd">
<HTML>
  <HEAD>
    <TITLE>OpenDS Weekly Build ${VERSION_NUMBER_STRING}</TITLE>
    <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">
    <LINK REL="SHORTCUT ICON" HREF="/public/images/opends_favicon.gif">
    <LINK REL="stylesheet" HREF="/public/css/opends.css" TYPE="text/css">
    <STYLE>
      tr { text-align:left; vertical-align:top; padding:5px 10px; width:180px; background-color:#f5f5f5 }
    </STYLE>
  </HEAD>
  <BODY>
    <TABLE BORDER="0" CELLPADDING="10">
      <TR STYLE="background-color:#ffffff">
        <TD VALIGN="MIDDLE">
          <IMG SRC="/images/opends_logo_welcome.png" ALT="OpenDS Logo" WIDTH="197" HEIGHT="57">
        </TD>
        <TD VALIGN="MIDDLE">
          <H1>OpenDS Weekly Build ${VERSION_NUMBER_STRING}</H1>
        </TD>
      </TR>
      <TR>
        <TD>Weekly Build Number</TD>
        <TD>${BUILD_NUMBER}</TD>
      </TR>
      <TR>
        <TD>Subversion Revision Number</TD>
        <TD>${REVISION_NUMBER}</TD>
      </TR>
      <TR>
        <TD>QuickSetup Installer</TD>
        <TD><A HREF="install/QuickSetup.jnlp">install/QuickSetup.jnlp</A></TD>
      </TR>
      <TR>
        <TD>Core Server Zip File</TD>
        <TD><A HREF="${VERSION_STRING}.zip">${VERSION_STRING}.zip</A></TD>
      </TR>
      <TR>
        <TD>Core Server MD5 Checksum</TD>
        <TD>${CORE_SERVER_MD5}</TD>
      </TR>
      <TR>
        <TD>DSML Gateway WAR File</TD>
        <TD><A HREF="${VERSION_STRING}-DSML.war">${VERSION_STRING}-DSML.war</A></TD>
      </TR>
      <TR>
        <TD>DSML Gateway MD5 Checksum</TD>
        <TD>${DSML_GATEWAY_MD5}</TD>
      </TR>
      <TR>
        <TD>src.zip Server Source Archive</TD>
        <TD><A HREF="src.zip">src.zip</A></TD>
      </TR>
      <TR>
        <TD>src.zip MD5 Checksum</TD>
        <TD>${SRC_ZIP_MD5}</TD>
      </TR>
      <TR>
        <TD>Javadoc Documentation</TD>
        <TD><A HREF="javadoc/index.html">javadoc/index.html</A></TD>
      </TR>
      <TR>
        <TD>Changelog</TD>
        <TD><A HREF="changes.log">changes.log</A></TD>
      </TR>
      <TR>
        <TD>Build Log</TD>
        <TD><A HREF="${VERSION_STRING}.log">${VERSION_STRING}.log</A></TD>
      </TR>
    </TABLE>
    <BR>
    <A HREF="/promoted-builds/">See All Weekly Builds</A><BR>
    <A HREF="http://www.opends.org/">http://www.opends.org/</A><BR>
    <!-- Omniture -->
    <script src="https://www.opends.org/wiki/scripts/s_code_remote.js" language="JavaScript"/>
  </BODY>
</HTML>
ENDOFHTML
# Create a "candidate" symbolic link to this build.
${RM} -f "${BUILDS_DIR}/candidate"
${LN} -s "${BUILD_DIR}" "${BUILDS_DIR}/candidate"
# Create a temporary file to use for the e-mail message.
BODY_FILE=`${MKTEMP}`
echo "A new OpenDS weekly build candidate is available at" > ${BODY_FILE}
#echo "http://www2.opends.org/promoted-builds/candidate/" >> ${BODY_FILE}
echo "http://www.opends.org/promoted-builds/candidate/" >> ${BODY_FILE}
# Send the message and delete the temporary file.
${SENDMAIL} --from "${SENDER}" --to "${RECIPIENT}" --subject "${STATUS} ${SUBJECT}" \
            --body "${BODY_FILE}" --attach "${BUILD_DIR}/index.html" \
            --attach "${LOG_FILE}"
${RM} "${BODY_FILE}"