blob: 55a97b0a74da6bd889db52b1a4eae2c9c1f70f7e [file]
<?xml version="1.0"?>
<project
name="test"
default="get">
<description>get and install dependencies</description>
<!-- Note to be cross-platform, "environment variables" are only appropriate for
some variables, e.g. ones we set, since properties are case sensitive, even if
the environment variables on your operating system are not, e.g. it will
be ${env.Path} not ${env.PATH} on Windows -->
<property
environment="env"/>
<!--
Note: if baseos, basews, and basearch are "passed in" to this
file, then they take priority, and retain their value. Otherwise,
use the current environment. Normally, the current environment is
desired, but sometimes, such as for creating the "all in ones", it may
be desired to "get" packages for other combinations.
-->
<property
name="baseos"
value="${env.BASEOS}"/>
<property
name="basews"
value="${env.BASEWS}"/>
<property
name="basearch"
value="${env.BASEARCH}"/>
<!-- =================================
target: get
================================= -->
<property
file="@dependencyProperties@"/>
<!-- - - - - - - - - - - - - - - - - -
target: init
- - - - - - - - - - - - - - - - - -->
<target
name="init">
<property
name="dependency.name"
value="${@dependencyGroupId@name}"/>
<property
name="dependency.description"
value="${@dependencyGroupId@descriptions}"/>
<property
name="dependency.url"
value="${@dependencyGroupId@url}"/>
<property
name="dependency.tobeinstalledfeaturegroups"
value="${@dependencyGroupId@tobeinstalledfeaturegroups}"/>
<condition
property="dependency.repo"
value="${@dependencyGroupId@repo}">
<isset
property="@dependencyGroupId@repo"/>
</condition>
<property
name="local.cache.dir"
value="."/>
<condition
property="dependency.file"
value="${@dependencyGroupId@file}">
<and>
<isset
property="@dependencyGroupId@file"/>
<not>
<or>
<isset
property="@dependencyGroupId@file.linux-gtk-x86"/>
<isset
property="@dependencyGroupId@file.linux-gtk-ppc"/>
<isset
property="@dependencyGroupId@file.win32-win32-x86"/>
<isset
property="@dependencyGroupId@file.macosx-carbon-ppc"/>
</or>
</not>
</and>
</condition>
<condition
property="dependency.file"
value="${@dependencyGroupId@file.win32-win32-x86}">
<and>
<isset
property="@dependencyGroupId@file.win32-win32-x86"/>
<equals
arg1="win32"
arg2="${baseos}"/>
<equals
arg1="win32"
arg2="${basews}"/>
<equals
arg1="x86"
arg2="${basearch}"/>
</and>
</condition>
<condition
property="dependency.file"
value="${@dependencyGroupId@file.linux-gtk-x86}">
<and>
<isset
property="@dependencyGroupId@file.linux-gtk-x86"/>
<equals
arg1="linux"
arg2="${baseos}"/>
<equals
arg1="gtk"
arg2="${basews}"/>
<equals
arg1="x86"
arg2="${basearch}"/>
</and>
</condition>
<condition
property="dependency.file"
value="${@dependencyGroupId@file.linux-gtk-ppc}">
<and>
<isset
property="@dependencyGroupId@file.linux-gtk-ppc"/>
<equals
arg1="linux"
arg2="${baseos}"/>
<equals
arg1="gtk"
arg2="${basews}"/>
<equals
arg1="ppc"
arg2="${basearch}"/>
</and>
</condition>
<condition
property="dependency.file"
value="${@dependencyGroupId@file.macosx-carbon-ppc}">
<and>
<isset
property="@dependencyGroupId@file.macosx-carbon-ppc"/>
<equals
arg1="macosx"
arg2="${baseos}"/>
<equals
arg1="carbon"
arg2="${basews}"/>
<equals
arg1="ppc"
arg2="${basearch}"/>
</and>
</condition>
<condition
property="dependency.autodownload"
value="${@dependencyGroupId@autodownload}">
<isset
property="@dependencyGroupId@autodownload"/>
</condition>
<condition
property="dependency.releng.url"
value="${@dependencyGroupId@releng.url}">
<isset
property="@dependencyGroupId@releng.url"/>
</condition>
</target>
<target
name="get"
depends="init">
<echo
level="info"
message="Getting ${dependency.file} or ${dependency.repo}"/>
<echo
level="info"
message="Url: ${dependency.url}"/>
<ant
antfile="@dependencyDir@/build.xml"
target="default"/>
</target>
<!-- =================================
target: install
================================= -->
<target
name="install"
depends="init">
<echo
level="info"
message="Installing ${dependency.file}"/>
<echo
level="info"
message="destination: ${install.destination}"/>
<antcall
target="cleanInstall"/>
<property
file="${installWorkingDirectory}/installmanifest.properties"/>
<antcall
target="callInstall"/>
<echo
level="info"
message="installmanifest.properties: ${installWorkingDirectory}/installmanifest.properties"/>
<echo
file="${installWorkingDirectory}/installmanifest.properties"
append="true">
@dependencyGroupId@${dependency.file}.installed=true
@dependencyGroupId@dir=${local.cache.dir}
@dependencyGroupId@file=${dependency.file}
</echo>
</target>
<target
name="installRepo"
depends="init">
<echo
level="info"
message="Installing ${dependency.repo}"/>
<echo
level="info"
message="destination: ${install.destination}"/>
<antcall
target="cleanInstall"/>
<property
file="${installWorkingDirectory}/installmanifest.properties"/>
<!--
We first unzip the repo, then use p2 directory app to install into the eclispe
location.
TODO: could we just make p2runnable in "transformed" repository? for build case.
-->
<!--
We use the exec method for unzip, so we won't fail if a
prereq can not be unzipped for some reason. See
https://bugs.eclipse.org/bugs/show_bug.cgi?id=283968
-->
<echo
message="install repo for groupId: ${groupId}"/>
<property
name="tobeinstalledrepo"
value="${installWorkingDirectory}/temprepos/${groupId}"/>
<echo
message="tobeinstalledrepo: ${tobeinstalledrepo}"/>
<echo
message="tobeInstalledfeaturegroups: ${dependency.tobeinstalledfeaturegroups}"/>
<delete
failonerror="false">
<dirset
dir="${tobeinstalledrepo}"/>
</delete>
<mkdir
dir="${tobeinstalledrepo}"/>
<exec
dir="."
executable="unzip">
<arg
line="-o -qq ${local.cache.dir}/${dependency.repo} -d ${tobeinstalledrepo}"/>
</exec>
<!-- note we are deliberately running the eclipse we are installing into -->
<java
taskname="p2Director Install"
fork="true"
resultProperty="p2DirectorInstallResult"
failonerror="true"
jvm="${env.JAVA_6_HOME}/bin/java"
dir="${install.destination}"
classname="org.eclipse.equinox.launcher.Main">
<classpath>
<fileset
dir="${install.destination}/eclipse/plugins">
<include
name="org.eclipse.equinox.launcher_*.jar"/>
</fileset>
</classpath>
<jvmarg
value="-Djava.io.tmpdir=${env.RECOMMENDED_TMP_DIR}"/>
<arg
value="-nosplash"/>
<arg
value="-debug"/>
<arg
value="-consolelog"/>
<arg
value="-data"/>
<arg
value="${installWorkingDirectory}/p2DirectorInstall"/>
<arg
value="-application"/>
<arg
value="org.eclipse.equinox.p2.director"/>
<arg
value="-repository"/>
<arg
value="file:/${tobeinstalledrepo}"/>
<arg
value="-installIU"/>
<arg
value="${dependency.tobeinstalledfeaturegroups}"/>
<arg
value="-list"/>
<!-- make sure our forked env has a DISPLAY? -->
<env
key="DISPLAY"
value="${env.DISPLAY}"/>
<arg
value="-vmArgs"/>
</java>
<echo
message="p2DirectorInstallResult: ${p2DirectorInstallResult}"/>
</target>
<target
name="cleanInstall"
if="clean">
<available
file="${installWorkingDirectory}/installmanifest.properties"
property="installmanifest.exists"/>
<antcall
target="cleanInstall2"/>
</target>
<target
name="cleanInstall2"
if="installmanifest.exists">
<replace
file="${installWorkingDirectory}/installmanifest.properties"
token="@dependencyGroupId@${dependency.file}.installed=true"/>
</target>
<target
name="callInstall"
unless="@dependencyGroupId@${dependency.file}.installed">
<ant
antfile="@dependencyDir@/build.xml"
target="install"/>
</target>
</project>