| <?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="<default>" /> |
| <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"><?xml version="1.0" encoding="UTF-8"?> |
| <bookmarks> |
| </header> |
| <union> |
| <sort> |
| <tokens> |
| <file file="${bookmarks.tmp}" /> |
| <linetokenizer includedelims="true" /> |
| </tokens> |
| </sort> |
| </union> |
| <filterchain> |
| <linecontains> |
| <contains value="http://" /> |
| </linecontains> |
| </filterchain> |
| <footer filtering="false"></bookmarks> |
| </footer> |
| </concat> |
| <delete file="${bookmarks.tmp}" /> |
| </target> |
| |
| </project> |