blob: f8161135e9a49efbd38eec67c034718d4ee0bbb0 [file] [log] [blame]
<?xml version="1.0"?>
<!--************************************************************************
* Copyright (c) 2006-2007, Cloudsmith Inc.
* The code, documentation and other materials contained herein have been
* licensed under the Eclipse Public License - v 1.0 by the copyright holder
* listed above, as the Initial Contributor under such license. The text of
* such license is available at www.eclipse.org.
************************************************************************-->
<project name="project" default="materialize">
<target name="get.properties">
<!-- Note: the "highest level of override is for someone to specify their
own location and name for the ganymatic properties. But, if not specified
already, we'll try ${user.home}/ganymedeConfig/ganymatic.properties.
After that, we will still use our production machine defaults since it
won't hurt if users override all the values (and is the only values used on
production build machine).
-->
<property environment="env" />
<property name="ganymatic.properties.file" location="${user.home}/ganymedeConfig/ganymatic.properties"/>
<!-- <echo message=" Properties being read from ${ganymatic.properties.file}" /> -->
<property file="${ganymatic.properties.file}"/>
<!-- <echo message=" Properties being read from ganymatic.properties" /> -->
<property file="ganymatic.properties" />
<property name="buckminster.home.loc" location="${buckminster.home}"/>
<property name="generated.dir.loc" location="${generated.dir}"/>
<property name="headless.home.loc" location="${buckminster.home.loc}/bin/buckminster" />
<property name="contribs.dir.loc" location="${contribs.dir}" />
<property name="site.contrib.dir.loc" location="${contribs.dir}" />
<property name="site.dir.loc" location="${site.dir}" />
<property name="site.template.loc" location="${contribs.dir.loc}/site.xml" />
<property name="mirror.site.loc" location="${mirror.site.location}" />
<antcall target="verify.properties.buckminster.home" />
<antcall target="verify.properties.contribs.dir" />
<antcall target="verify.properties.site.dir" />
<antcall target="verify.properties.downloads" />
<antcall target="verify.properties.generated.dir" />
<antcall target="verify.properties.top.project" />
<antcall target="verify.properties.mirror.site.location" />
<antcall target="verify.properties.mirror.site.url" />
<mkdir dir="${headless.home.loc}/bin" />
<mkdir dir="${headless.home.loc}/bin/org.eclipse.ganymede" />
<mkdir dir="${headless.home.loc}/bin/buckminster" />
</target>
<macrodef name="buckminster">
<attribute name="command" default="--scriptfile" />
<element name="globargs" optional="true" />
<element name="args" optional="true" />
<sequential>
<java fork="true"
jar="${headless.home.loc}/startup.jar"
dir="${headless.home.loc}"
failonerror="true">
<!-- <jvmarg value="-agentlib:jdwp=transport=dt_socket,address=8000,server=y,suspend=y"/> -->
<arg value="--displaystacktrace" />
<arg value="--loglevel" />
<arg value="info" />
<globargs />
<arg value="@{command}" />
<args />
</java>
</sequential>
</macrodef>
<target name="generate.bm.artifacts" description="Generate the Buckminster artifacts from Site contributions">
<path id="site.contrib.files.path">
<fileset dir="${site.contrib.dir.loc}" includes="*.sc">
<!-- <exclude name="birt.sc"/> -->
<!-- <exclude name="buckminster.sc"/> -->
<!-- <exclude name="cdt.sc"/> -->
<!-- <exclude name="dltk.sc"/> -->
<!-- <exclude name="dsdp-dd.sc"/> -->
<!-- <exclude name="dsdp-tm.sc"/> -->
<!-- <exclude name="dtp.sc"/> -->
<!-- <exclude name="ecf.sc"/> -->
<!-- <exclude name="emf-emf.sc"/> -->
<!-- <exclude name="emf-query.sc"/> -->
<!-- <exclude name="emft-cdo.sc"/> -->
<!-- <exclude name="emft-compare.sc"/> -->
<!-- <exclude name="emft-ecoretools.sc"/> -->
<!-- <exclude name="emft-mint.sc"/> -->
<!-- <exclude name="emft-net4j.sc"/> -->
<!-- <exclude name="emf-transaction.sc"/> -->
<!-- <exclude name="emft-search.sc"/> -->
<!-- <exclude name="emft-teneo.sc"/> -->
<!-- <exclude name="emf-validation.sc"/> -->
<!-- <exclude name="ep.sc"/> -->
<!-- <exclude name="epp-udc.sc"/> -->
<!-- <exclude name="gef.sc"/> -->
<!-- <exclude name="gmf.sc"/> -->
<!-- <exclude name="m2m-atl.sc"/> -->
<!-- <exclude name="m2m-qvto.sc"/> -->
<!-- <exclude name="m2t-jet.sc"/> -->
<!-- <exclude name="mdt-ocl.sc"/> -->
<!-- <exclude name="mdt-uml2.sc"/> -->
<!-- <exclude name="mdt-uml2tools.sc"/> -->
<!-- <exclude name="mylyn.sc"/> -->
<!-- <exclude name="rap.sc" /> -->
<!-- <exclude name="stp.sc"/> -->
<exclude name="subversive.sc"/>
<!-- <exclude name="tptp.sc"/> -->
<!-- <exclude name="wtp.sc"/> -->
</fileset>
</path>
<pathconvert property="site.contrib.files" pathsep="&quot; &quot;" refid="site.contrib.files.path" />
<mkdir dir="${generated.dir.loc}" />
<delete>
<fileset dir="${generated.dir.loc}" includes="site.xml" />
<fileset dir="${generated.dir.loc}" includes="*.cspec" />
<fileset dir="${generated.dir.loc}" includes="${top.project}.*" />
<fileset dir="${generated.dir.loc}" includes="features/*" />
<fileset dir="${generated.dir.loc}" includes="plugins/*" />
</delete>
<echo message="&quot;${site.contrib.files}&quot;" />
<buckminster command="generate">
<globargs>
<arg value="-clean" />
</globargs>
<args>
<arg value="--outputdir" />
<arg value="${generated.dir.loc}" />
<arg value="--sitedir" />
<arg value="${site.dir.loc}" />
<arg value="--templatesite" />
<arg value="${site.template.loc}" />
<arg value="--project" />
<arg value="${top.project}" />
<arg line="&quot;${site.contrib.files}&quot;" />
</args>
</buckminster>
</target>
<target name="resolve.cquery" description="Run the component query" depends="generate.bm.artifacts">
<buckminster command="resolve">
<globargs>
<jvmarg value="-Ddownloads=${downloads}" />
</globargs>
<args>
<arg value="--continueonerror" />
<arg value="--noimport" />
<arg value="--bomfile" />
<arg value="${generated.dir.loc}/${top.project}.bom" />
<arg value="${generated.dir.loc}/${top.project}.cquery" />
</args>
</buckminster>
</target>
<target name="materialize" description="Materialize the site" depends="get.properties,resolve.cquery">
<buckminster command="import">
<globargs>
<jvmarg value="-Dmirror.site.location=${mirror.site.loc}" />
<jvmarg value="-Dmirror.site.url=${mirror.site.url}" />
</globargs>
<args>
<arg value="--continueonerror"/>
<arg value="${generated.dir.loc}/${top.project}.mspec" />
</args>
</buckminster>
<copy file="${generated.dir.loc}/${top.project}.site" tofile="${site.dir.loc}/site.xml" overwrite="true"/>
</target>
<target name="clean" description="Clean the generated artifacts and site">
<delete dir="${generated.dir.loc}" />
</target>
<target name="really.clean" depends="clean" description="Clean out the barebone installation">
<delete dir="${buckminster.home.loc}/bin/headless.zip" />
<delete dir="${buckminster.home.loc}/bin/buckminster" />
</target>
<target name="verify.properties.buckminster.home" unless="buckminster.home">
<echo message="Missing: buckminster.home"/>
<antcall target="verify.properties.error" />
</target>
<target name="verify.properties.contribs.dir" unless="contribs.dir">
<echo message="Missing: contribs.dir"/>
<antcall target="verify.properties.error" />
</target>
<target name="verify.properties.site.dir" unless="site.dir">
<echo message="Missing: site.dir"/>
<antcall target="verify.properties.error" />
</target>
<target name="verify.properties.downloads" unless="downloads">
<echo message="Missing: downloads"/>
<antcall target="verify.properties.error" />
</target>
<target name="verify.properties.generated.dir" unless="generated.dir">
<echo message="Missing: generated.dir"/>
<antcall target="verify.properties.error" />
</target>
<target name="verify.properties.top.project" unless="top.project">
<echo message="Missing: top.project"/>
<antcall target="verify.properties.error" />
</target>
<target name="verify.properties.mirror.site.location" unless="mirror.site.location">
<echo message="Missing: mirror.site.location"/>
<antcall target="verify.properties.error" />
</target>
<target name="verify.properties.mirror.site.url" unless="mirror.site.url">
<echo message="Missing: mirror.site.url"/>
<antcall target="verify.properties.error" />
</target>
<target name="verify.properties.error">
<echo message="Required properties were not defined in a ganymatic.properties, for example '${user.home}/ganymedeConfig/ganymatic.properties' file."/>
<echo message="Please create a ganymatic.properties file in your home directory, in a directory named ganymedeConfig."/>
<echo message="Use the examples/ganymatic.properties* files as templates for your file."/>
<echo message="The ganymatic.properties file defines the directories, etc for the builds on your machine."/>
<fail message="No properties defined; failed to build"/>
</target>
</project>