<!--
! CDDL HEADER START
!
! The contents of this file are subject to the terms of the
! Common Development and Distribution License, Version 1.0 only
! (the "License"). You may not use this file except in compliance
! with the License.
!
! You can obtain a copy of the license at legal-notices/CDDLv1_0.txt
! or http://forgerock.org/license/CDDLv1.0.html.
! See the License for the specific language governing permissions
! and limitations under the License.
!
! When distributing Covered Code, include this CDDL HEADER in each
! file and include the License file at legal-notices/CDDLv1_0.txt.
! If applicable, add the following below this CDDL HEADER, with the
! fields enclosed by brackets "[]" replaced with your own identifying
! information:
! Portions Copyright [yyyy] [name of copyright owner]
!
! CDDL HEADER END
!
!
! Copyright 2006-2008 Sun Microsystems, Inc.
! -->
<project name="opends-tests-installer" basedir="." default="usage">
<description>
Installer ant file for the server
This allows tests that need a running instance of the product to easily
get one.
</description>
<!-- this one has to be loaded first since it's used in
default.installer.properties
-->
<property file="/PRODUCT" />
<property name="product.name" value="${SHORT_NAME}" />
<property name="product.version"
value="${MAJOR_VERSION}.${MINOR_VERSION}.${POINT_VERSION}" />
<!-- this is an optional file if you want to pass custom values -->
<property file="installer.properties" />
<!-- this is the file where the default values are defined -->
<property file="default.installer.properties" />
<!-- Define default values for mandatory properties in case the
property files would not be found
-->
<condition property="script.ext" value=".bat" else="">
<os family="windows"/>
</condition>
<condition property="bin.dir" value="bat" else="bin">
<os family="windows"/>
</condition>
<!-- Usage section - top -->
<target name="usage">
<echo>Installer usage:
status : reports if product is installed and/or running
main target=
bootstrap : installs and configure the product
wipeout : stops and uninstalls the product
subtargets=
install : installs the product
configure : set the server up to listen on a given port
start : start the product unless it is already running
stop : stop the product if it is already running
stop.force : stop no matter what
uninstall : uninstall the product if it is installed
</echo>
</target>
<!-- Usage section - bottom -->
<!-- Installation section - top -->
<target name="install-do"
description="deploy the product bits"
unless="product.installed" >
<echo message="Installing ${product.name} ${product.version}..." />
<property name="config.file"
location="${full.install.dir}/config/config.ldif"/>
<mkdir dir="${install.dir}"/>
<unzip dest="${install.dir}">
<fileset dir="${project.home}/build/package">
<include name="*.zip"/>
</fileset>
</unzip>
<chmod perm="755">
<fileset dir="${full.install.dir}/bin" />
</chmod>
</target>
<target name="install" depends="status-do,install-do"/>
<!-- end of install related targets -->
<!-- Uninstallation section - top -->
<target name="uninstall-do"
description="Uninstall the product"
if="product.installed">
<echo message="Uninstalling ${product.name} ${product.version}..." />
<delete dir="${install.dir}" />
</target>
<target name="uninstall" depends="status-do,stop-do,uninstall-do"/>
<!-- Uninstallation section - bottom -->
<!-- Configuration section - top -->
<target name="configure-do"
description="configures product to listen on the right port number"
if="product.installed" >
<echo message="basedir=[${basedir}]" />
<echo message="configuring ${product.name} ${product.version}..." />
<java fork="true" classname="org.opends.server.tools.ConfigureDS">
<!-- building the classpath to run the configurator -->
<classpath>
<fileset dir="${full.install.dir}/lib">
<include name="*.jar"/>
</fileset>
</classpath>
<!-- provide the arguments here -->
<jvmarg value="-Dorg.opends.server.scriptName=configure-ds"/>
<arg value="--configClass"/>
<arg value="org.opends.server.extensions.ConfigFileHandler"/>
<arg value="--configFile"/>
<arg value="${full.install.dir}/config/config.ldif"/>
<arg line="-p ${port.ldap}"/>
<arg value="-D"/>
<arg value="${bind.dn}"/>
<arg value="-w"/>
<arg value="${bind.pwd}"/>
</java>
</target>
<target name="configure" depends="status-do,configure-do"/>
<!-- Configuration section - bottom -->
<!-- Start section - top -->
<target name="start-do"
description="start the product"
if="product.installed"
unless="product.running" >
<echo message="Starting ${product.name} ${product.version}... on ${os.name}" />
<exec
executable="${full.install.dir}${file.separator}${bin.dir}${file.separator}start-ds${script.ext}"
spawn="true"/>
</target>
<target name="start" depends="status-do,start-do"/>
<!-- Start section - bottom -->
<!-- Stop section - top -->
<target name="stop.force"
description="stop the server">
<echo message="Stopping ${product.name} ${product.version}..." />
<exec
executable="${full.install.dir}${file.separator}${bin.dir}${file.separator}stop-ds${script.ext}"
spawn="true">
<arg line="-h ${host.name}"/>
<arg line="-p ${port.ldap}"/>
<arg line="-w ${bind.pwd}" />
<arg value="-D" />
<arg value="${bind.dn}" />
</exec>
</target>
<target name="stop-do" if="product.running">
<antcall target="stop.force" />
</target>
<target name="stop" depends="status-do,stop-do"/>
<target name="sleep" if="product.running">
<echo message="Give the server some time to shut down and release locks..." />
<sleep seconds="10" />
</target>
<target name="stop.sleep" depends="stop,sleep"/>
<!-- Stop section - bottom -->
<!-- Status section - top -->
<target name="status-do" description="gather status">
<available file="${full.install.dir}"
type="dir"
property="product.installed" />
<condition property="product.running">
<socket port="${port.ldap}" server="${host.name}"/>
</condition>
</target>
<target name="is-product-running?" if="product.running">
<echo message="${product.name} is listening on port [${port.ldap}]"/>
</target>
<target name="is-product-not-running?" unless="product.running">
<echo message="${product.name} is NOT running"/>
</target>
<target name="is-product-installed?" if="product.installed">
<echo message="Found ${product.name} installed in [${full.install.dir}]" />
<antcall target="is-product-running?"/>
<antcall target="is-product-not-running?"/>
</target>
<target name="is-product-not-installed?" unless="product.installed">
<echo message="Could not find ${product.name} installation." />
</target>
<!-- end of installation status -->
<!-- Running status -->
<target name="status" depends="status-do,is-product-installed?,is-product-not-installed?"/>
<!-- Status section - bottom -->
<!-- macros - chained operations -->
<target name="bootstrap">
<echo message="Bootstrap: wipe the plate clean in case there is a previous install"/>
<antcall target="wipeout" />
<echo message="Bootstrap: install the product" />
<antcall target="install" />
<antcall target="configure" />
<antcall target="start" />
</target>
<target name="wipeout" if="product.installed" depends="status-do">
<echo message="Wipeout: removing product" />
<antcall target="stop.sleep" />
<antcall target="uninstall" />
</target>
<!-- end of macros related targets-->
</project>