#!/bin/sh # Determine the location to this script so that we know where we are in the # OpenDS source tree. cd `dirname $0` SCRIPT_DIR=`pwd` cd ../.. ROOT_DIR=`pwd` cd "${SCRIPT_DIR}" # Make sure that a few constants are defined that will be needed to build the # web start archive. if test -z "${PROTOCOL}" then PROTOCOL="http" fi echo "PROTOCOL: ${PROTOCOL}" if test -z "${ADDRESS}" then ADDRESS="builds.opends.org" fi echo "ADDRESS: ${ADDRESS}" echo "PORT: ${PORT}" if test -z "${BASE_PATH}" then BASE_PATH="/install" fi echo "BASE_PATH: ${BASE_PATH}" if test -z "${INSTALL_JNLP_FILENAME}" then INSTALL_JNLP_FILENAME="QuickSetup.jnlp" fi echo "INSTALL_JNLP_FILENAME: ${INSTALL_JNLP_FILENAME}" if test -z "${PORT}" then INSTALLER_URI="${PROTOCOL}://${ADDRESS}${BASE_PATH}" else INSTALLER_URI="${PROTOCOL}://${ADDRESS}:${PORT}${BASE_PATH}" fi # See if we can find the location of the dependencies in the Java environment. # If not, then fail. if test -z "${JAVA_HOME}" then JAVA_HOME=`java -cp ${ROOT_DIR}/resource FindJavaHome 2> /dev/null` if test -z "${JAVA_HOME}" then echo "Please set JAVA_HOME to the root of a Java 5.0 installation." exit 1 else export JAVA_HOME fi fi JAR="${JAVA_HOME}/bin/jar" if test ! -x "${JAR}" then echo "ERROR: Cannot find the ${JAR} utility." echo " Is JAVA_HOME set correctly?" echo " It should point to the root of a JDK (not a JRE) installation" exit 1 fi JARSIGNER="${JAVA_HOME}/bin/jarsigner" if test ! -x "${JARSIGNER}" then echo "ERROR: Cannot find the ${JARSIGNER} utility." echo " Is JAVA_HOME set correctly?" echo " It should point to the root of a JDK (not a JRE) installation" exit 1 fi # Make sure that the OpenDS build directory exists. If not, then create it. BUILD_DIR="${ROOT_DIR}/build" if test ! -d "${BUILD_DIR}" then echo "WARNING: ${BUILD_DIR} does not exist. Building the server ..." "${ROOT_DIR}/build.sh" EXIT_CODE=$? if test "${EXIT_CODE}" -ne 0 then echo "ERROR: Build failed. Aborting creation of web start archive." exit ${EXIT_CODE} else echo "The server was built successfully." fi fi # Determine what the name should be for the OpenDS zip file name, but without # the ".zip" extension. ZIP_FILEPATH=`ls ${ROOT_DIR}/build/package/OpenDS*.zip` ZIP_FILENAME=`basename ${ZIP_FILEPATH}` ZIP_FILENAME_BASE=`echo ${ZIP_FILENAME} | sed -e 's/\.zip//'` # Create the directory structure into which we will place the archive. echo "Creating the initial directory structure ..." WEBSTART_DIR="${BUILD_DIR}/webstart" INSTALL_DIR="${WEBSTART_DIR}/install" rm -rf "${INSTALL_DIR}" mkdir -p "${INSTALL_DIR}/lib" # Copy the static files from the script directory into the appropriate places # in the archive. echo "Copying static content into place ..." cp -Rp "${SCRIPT_DIR}/images" "${INSTALL_DIR}" find "${INSTALL_DIR}/images" -type d -name '.svn' -exec rm -rf {} \; # Copy the appropriate OpenDS library files and make sure they are signed. PKG_LIB_DIR="${BUILD_DIR}/package/${ZIP_FILENAME_BASE}/lib" CERT_KEYSTORE="${ROOT_DIR}/tests/unit-tests-testng/resource/server.keystore" CERT_KEYSTORE_PIN="password" CERT_ALIAS="server-cert" for LIBFILE in OpenDS.jar je.jar aspectjrt.jar quicksetup.jar do echo "Signing ${LIBFILE} ..." cp "${PKG_LIB_DIR}/${LIBFILE}" "${INSTALL_DIR}/lib" "${JARSIGNER}" -keystore "${CERT_KEYSTORE}" -keypass "${CERT_KEYSTORE_PIN}" \ -storepass "${CERT_KEYSTORE_PIN}" \ "${INSTALL_DIR}/lib/${LIBFILE}" "${CERT_ALIAS}" done # Create and sign the zipped.jar file. echo "Creating zipped.jar ..." cd "${BUILD_DIR}/package" "${JAR}" -cf "${INSTALL_DIR}/lib/zipped.jar" "${ZIP_FILENAME_BASE}.zip" cd "${INSTALL_DIR}/lib" echo "Signing zipped.jar ..." "${JARSIGNER}" -keystore "${CERT_KEYSTORE}" -keypass "${CERT_KEYSTORE_PIN}" \ -storepass "${CERT_KEYSTORE_PIN}" zipped.jar "${CERT_ALIAS}" # Create the Setup JNLP file with the appropriate contents. echo "Creating Setup JNLP file ${INSTALL_JNLP_FILENAME} ..." cd .. cat > "${INSTALL_JNLP_FILENAME}" < OpenDS QuickSetup Application http://www.opends.org/ OpenDS QuickSetup Application OpenDS Web Start Installer ENDOFINSTALLJNLP # Tell the user where the files are. echo "The deployable content may be found in ${ROOT_DIR}/build/webstart" echo "It is intended for deployment at ${INSTALLER_URI}"