blob: a7a967413f8c5bf6004f2817fc0de69549bd4d13 [file] [log] [blame]
<?xml version="1.0"?>
<!--
Copyright (c) 2004 - 2011 Eike Stepper (Berlin, Germany) and others.
All rights reserved. This program and the accompanying materials
are made available under the terms of the Eclipse Public License v1.0
which accompanies this distribution, and is available at
http://www.eclipse.org/legal/epl-v10.html
Contributors:
Eike Stepper - initial API and implementation
-->
<project name="ECP">
<property file="build.properties" />
<property environment="hudson" />
<taskdef resource="net/sf/antcontrib/antlib.xml">
<classpath>
<pathelement location="/develop/bin/ant-contrib/ant-contrib-1.0b3.jar" />
<pathelement location="${ant.contrib}" />
</classpath>
</taskdef>
<macrodef name="eclipse.launch">
<attribute name="app" />
<element name="properties" optional="true" />
<element name="args" optional="true" />
<sequential>
<property name="@{app}.deploy.dir" value="${tools}/@{app}" />
<pathconvert property="@{app}.launcher">
<first count="1">
<sort>
<fileset dir="${@{app}.deploy.dir}/plugins" includes="**/org.eclipse.equinox.launcher_*.jar" />
<reverse xmlns="antlib:org.apache.tools.ant.types.resources.comparators">
<date />
</reverse>
</sort>
</first>
</pathconvert>
<java fork="true" jar="${@{app}.launcher}" dir="${@{app}.deploy.dir}" failonerror="true">
<env key="no_proxy" value="${no.proxy}" />
<properties />
<args />
</java>
</sequential>
</macrodef>
<macrodef name="buckminster">
<attribute name="command" />
<attribute name="workspace" default="${ws}" />
<element name="sysproperties" optional="true" />
<element name="globargs" optional="true" />
<element name="cmdargs" optional="true" />
<sequential>
<eclipse.launch app="buckminster">
<properties>
<sysproperty key="bugfix.288796" value="true" />
<sysproperties />
</properties>
<args>
<jvmarg value="-Xmx4096m" />
<jvmarg value="-Declipse.p2.mirrors=false" />
<jvmarg value="-Declipse.p2.unsignedPolicy=allow" />
<jvmarg value="-Dgit.clone=${git.clone}" />
<arg value="-data" />
<arg value="@{workspace}" />
<arg value="--loglevel" />
<arg value="${hudson.LOGLEVEL}" />
<arg value="--displaystacktrace" />
<globargs />
<arg value="@{command}" />
<arg value="-P" />
<arg value="${properties.tmp}" />
<cmdargs />
</args>
</eclipse.launch>
</sequential>
</macrodef>
<!-- =============== -->
<!-- Init Properties -->
<!-- =============== -->
<target name="-init.properties">
<echo message="stream = ${stream}" />
<echo message="branch = ${branch}" />
<echo message="train = ${train}" />
<condition property="no.proxy" value="${hudson.no_proxy}, dev.eclipse.org" else="dev.eclipse.org">
<isset property="hudson.no_proxy" />
</condition>
<property name="git.clone" location="${hudson.WORKSPACE}/git" />
<property name="releng" location="${git.clone}/ECP2/org.eclipse.emf.ecp.releng" />
<property name="test.report" location="${hudson.WORKSPACE}/test-report.xml" />
<property name="tools" location="${hudson.WORKSPACE}/tools" />
<property name="result" location="${hudson.WORKSPACE}/result" />
<property name="ws" location="${result}/ws" />
<property name="tp" location="${result}/tp" />
<property name="buckminster.output.root" location="${result}/output" />
<property name="buckminster.temp.root" location="${result}/temp" />
</target>
<!-- ========== -->
<!-- Init Clean -->
<!-- ========== -->
<target name="-init.clean" depends="-init.properties">
<delete includeemptydirs="true" failonerror="true" quiet="true">
<fileset dir="${hudson.WORKSPACE}">
<include name="binary/**" />
<include name="features/**" />
<include name="plugins/**" />
<include name="*.jar" />
<include name="*.xml" />
<include name="*.html" />
</fileset>
</delete>
<delete dir="${buckminster.output.root}" includeemptydirs="true" failonerror="true" quiet="true" />
<delete dir="${buckminster.temp.root}" includeemptydirs="true" failonerror="true" quiet="true" />
<mkdir dir="${result}" />
</target>
<!-- ========== -->
<!-- Init Tools -->
<!-- ========== -->
<target name="-init.tools" depends="-init.clean">
<if>
<equals arg1="${hudson.CLEAN_TOOLS}" arg2="true" />
<then>
<echo message="Cleaning tools" />
<delete dir="${tools}/director" includeemptydirs="true" failonerror="true" quiet="true" />
<delete dir="${tools}/buckminster" includeemptydirs="true" failonerror="true" quiet="true" />
</then>
</if>
<if>
<not>
<available file="${tools}/director/director" />
</not>
<then>
<echo message="" />
<echo message="Installing director" />
<tempfile destdir="${java.io.tmpdir}"
prefix="director-"
suffix=".zip"
property="director.zip"
deleteonexit="true" />
<get src="${director}" dest="${director.zip}" />
<mkdir dir="${tools}" />
<unzip src="${director.zip}" dest="${tools}" />
<delete file="${director.zip}" />
</then>
</if>
<if>
<not>
<available file="${tools}/buckminster/buckminster" />
</not>
<then>
<echo message="" />
<echo message="Installing buckminster" />
<eclipse.launch app="director">
<properties>
<sysproperty key="eclipse.p2.mirrors" value="false" />
</properties>
<args>
<arg value="-r" />
<arg value="${buckminster.headless}" />
<arg value="-r" />
<arg value="${buckminster.external}" />
<arg value="-d" />
<arg value="${tools}/buckminster" />
<arg value="-p" />
<arg value="Buckminster" />
<arg value="-i" />
<arg value="org.eclipse.buckminster.cmdline.product" />
<arg value="-i" />
<arg value="org.eclipse.buckminster.core.headless.feature.feature.group" />
<arg value="-i" />
<arg value="org.eclipse.buckminster.pde.headless.feature.feature.group" />
<arg value="-i" />
<arg value="org.eclipse.buckminster.git.headless.feature.feature.group" />
</args>
</eclipse.launch>
</then>
</if>
</target>
<!-- ================ -->
<!-- Init Build Infos -->
<!-- ================ -->
<target name="-init.buildinfos" depends="-init.clean">
<if>
<not>
<isset property="build.trigger" />
</not>
<then>
<xmlproperty keeproot="false">
<url url="${hudson.BUILD_URL}/api/xml?tree=actions[causes[shortDescription]]" />
</xmlproperty>
<loadresource property="build.trigger">
<propertyresource name="action.cause.shortDescription" />
<filterchain>
<replaceregex pattern="^Started by " replace="" />
<replaceregex pattern="^Gestartet durch " replace="" />
<replaceregex pattern="Benutzer" replace="user" />
</filterchain>
</loadresource>
</then>
</if>
<echo message="build.trigger = ${build.trigger}" />
<if>
<equals arg1="${hudson.BUILD_TYPE}" arg2="&lt;default&gt;" />
<then>
<condition property="build.type" value="${weekly}" else="N">
<equals arg1="${build.trigger}" arg2="timer" />
</condition>
</then>
<else>
<property name="build.type" value="${hudson.BUILD_TYPE}" />
</else>
</if>
<echo message="build.type = ${build.type}" />
<property name="build.timestamp" value="${hudson.BUILD_ID}" />
<echo message="build.timestamp = ${build.timestamp}" />
<tempfile property="build.qualifier.tmp"
destdir="${java.io.tmpdir}"
prefix="build-qualifier-"
suffix=".tmp"
deleteonexit="true" />
<echo message="build.qualifier=${build.type}${build.timestamp}" file="${build.qualifier.tmp}" />
<replaceregexp file="${build.qualifier.tmp}">
<regexp pattern="([0-9]*)-([0-9]*)-([0-9]*)_([0-9]*)-([0-9]*)-([0-9]*)" />
<substitution expression="\1\2\3-\4\5" />
</replaceregexp >
<property file="${build.qualifier.tmp}" />
<echo message="build.qualifier = ${build.qualifier}" />
<echoxml file="${hudson.WORKSPACE}/build-info.xml">
<build stream="${stream}"
branch="${branch}"
train="${train}"
eclipse="${eclipse}"
emf="${emf}"
type="${build.type}"
timestamp="${build.timestamp}"
qualifier="${build.qualifier}"
trigger="${build.trigger}"
hudson="${hudson.HUDSON_URL}"
revision="${hudson.GIT_COMMIT}"
job="${hudson.JOB_NAME}"
number="${hudson.BUILD_NUMBER}" />
</echoxml>
<condition property="site.signing" value="true" else="false">
<and>
<not>
<equals arg1="${build.type}" arg2="N" />
</not>
<equals arg1="${hudson.HUDSON_URL}" arg2="https://hudson.eclipse.org/hudson/" />
</and>
</condition>
<echo message="site.signing = ${site.signing}" />
<if>
<equals arg1="${site.signing}" arg2="true" />
<then>
<property name="eclipse.staging.area"
value="/shared/download-staging.priv/modeling/emf/ecp/${hudson.JOB_NAME}" />
<echo message="eclipse.staging.area = ${eclipse.staging.area}" />
</then>
</if>
<echo message="" />
<property name="properties.tmp" value="${result}${file.separator}buckminster.properties" />
<echoproperties destfile="${properties.tmp}">
<propertyset negate="true">
<propertyref name="basedir" />
<propertyref name="eclipse.home" />
<propertyref name="properties.tmp" />
<propertyref name="line.separator" />
<propertyref name="path.separator" />
<propertyref prefix="ant." />
<propertyref prefix="file." />
<propertyref prefix="java." />
<propertyref prefix="sun." />
<propertyref prefix="user." />
</propertyset>
</echoproperties>
<echo message="${hudson.JOB_URL}ws/result/buckminster.properties" />
<echoproperties destfile="${result}/all.properties" />
<echo message="${hudson.JOB_URL}ws/result/all.properties" />
</target>
<!-- ============== -->
<!-- Init Workspace -->
<!-- ============== -->
<target name="-init.workspace" depends="-init.clean">
<echo message="Initializing workspace" />
<if>
<equals arg1="${hudson.CLEAN_TP}" arg2="true" />
<then>
<delete dir="${tp}" includeemptydirs="true" failonerror="true" quiet="true" />
</then>
</if>
<delete dir="${ws}" includeemptydirs="true" failonerror="true" quiet="true" />
<unzip dest="${ws}" src="${releng}/hudson/workspace.zip" />
<copy file="${releng}/hudson/test-report-empty.xml" tofile="${test.report}" />
</target>
<!-- ========= -->
<!-- Provision -->
<!-- ========= -->
<target name="provision"
depends="-init.tools,-init.buildinfos,-init.workspace"
description="Imports projects and binaries">
<echo message="Importing projects into ${ws}" />
<echo message="Importing binaries into ${tp}" />
<mkdir dir="${tp}" />
<buckminster command="import">
<cmdargs>
<arg value="-B" />
<arg value="${hudson.WORKSPACE}/bom.xml" />
<arg value="-P" />
<arg value="${basedir}/build.properties" />
<!-- Last argument: -->
<arg value="${basedir}/build.mspec" />
</cmdargs>
</buckminster>
</target>
<!-- ===== -->
<!-- Build -->
<!-- ===== -->
<target name="build" depends="provision" description="Builds all projects">
<echo message="Building all projects in workspace ${ws}" />
<buckminster command="build">
<cmdargs>
<arg value="--thorough" />
</cmdargs>
</buckminster>
</target>
<!-- ======= -->
<!-- Site.p2 -->
<!-- ======= -->
<target name="site.p2" depends="build" description="Generates the site and depending artifacts">
<echo message="Performing org.eclipse.emf.ecp.site#site.p2" />
<buckminster command="perform">
<cmdargs>
<arg value="org.eclipse.emf.ecp.site#site.p2" />
</cmdargs>
</buckminster>
<pathconvert property="site.p2.dir">
<dirset dir="${buckminster.output.root}">
<filename name="org.eclipse.emf.ecp.site_${stream}.*-eclipse.feature/site.p2" />
</dirset>
</pathconvert>
<echoproperties destfile="${result}/all.properties" />
<copy todir="${hudson.WORKSPACE}"
overwrite="true"
includeemptydirs="true"
preservelastmodified="true"
failonerror="true">
<fileset dir="${site.p2.dir}">
<include name="**" />
</fileset>
</copy>
<antcall target="-generate.all" />
</target>
<!-- ==== -->
<!-- Test -->
<!-- ==== -->
<target name="test" depends="site.p2" description="Runs the tests">
<echo message="Running JUnit tests" />
<buckminster command="junit">
<cmdargs>
<arg value="-l" />
<arg value="org.eclipse.emf.ecp.tests/ECP AllTests.launch" />
<arg value="-o" />
<arg value="${test.report}" />
<arg value="--terseXML" />
<arg value="--flatXML" />
</cmdargs>
</buckminster>
</target>
<!-- ============= -->
<!-- Generate Only -->
<!-- ============= -->
<target name="generate.only" depends="-init.properties" description="Runs the post-site.p2 generators">
<echo message="Loading build-info.xml" />
<xmlproperty file="${hudson.WORKSPACE}/build-info.xml" collapseAttributes="true" />
<antcall target="-generate.all" />
</target>
<!-- ============ -->
<!-- Generate All -->
<!-- ============ -->
<target name="-generate.all">
<property name="zips" location="${hudson.WORKSPACE}/zips" />
<mkdir dir="${zips}" />
<antcall target="-generate.index" />
<antcall target="-generate.bookmarks" />
<if>
<equals arg1="${hudson.GENERATE_PRODUCTS}" arg2="true" />
<then>
<antcall target="-generate.products" />
</then>
</if>
</target>
<!-- ============== -->
<!-- Generate Index -->
<!-- ============== -->
<target name="-generate.index">
<unzip src="${hudson.WORKSPACE}/content.jar" dest="${hudson.WORKSPACE}" />
<property name="content.xml" location="${hudson.WORKSPACE}/content.xml" />
<xslt style="xsl/content2html.xsl" in="${content.xml}" out="${hudson.WORKSPACE}/index.html" />
<xslt style="xsl/content2xml.xsl" in="${content.xml}" out="${hudson.WORKSPACE}/index.xml" />
<delete file="${content.xml}" />
</target>
<!-- =================== -->
<!-- Generate Booksmarks -->
<!-- =================== -->
<target name="-generate.bookmarks">
<property name="bookmarks.tmp" location="${hudson.WORKSPACE}/bookmarks.tmp" />
<xslt style="xsl/bom2bookmarks.xsl" in="${hudson.WORKSPACE}/bom.xml" out="${bookmarks.tmp}" />
<replace file="${bookmarks.tmp}" token="http://dev.eclipse.org" value="file://to-be-removed" />
<replace file="${bookmarks.tmp}" token="file:/home/data/httpd/" value="http://" />
<property name="bookmarks.xml" location="${hudson.WORKSPACE}/bookmarks.xml" />
<concat destfile="${bookmarks.xml}">
<header filtering="false">&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
&lt;bookmarks&gt;
</header>
<union>
<sort>
<tokens>
<file file="${bookmarks.tmp}" />
<linetokenizer includedelims="true" />
</tokens>
</sort>
</union>
<filterchain>
<linecontains>
<contains value="http://" />
</linecontains>
</filterchain>
<footer filtering="false">&lt;/bookmarks&gt;
</footer>
</concat>
<delete file="${bookmarks.tmp}" />
</target>
</project>