blob: 5351ccdd454188b87a37aab077932f9ce907cb07 [file] [log] [blame]
<project name="org.eclipse.ecf.releng.bm" default="all" basedir=".">
<import file="common.xml"/>
<!--=======================-->
<!-- build properties -->
<!--=======================-->
<property name="product.feature.id" value="org.eclipse.ecf.sdk" />
<property name="tests.feature.id" value="org.eclipse.ecf.tests_feature" />
<property name="coverage.include.name.pattern" value="org.eclipse.ecf*.jar" />
<property name="test.suite.include.name.pattern" value="^org\.eclipse\.ecf\.tests(\..+)?" />
<property name="test.suite.include.class.pattern" value="^org\.eclipse\.ecf(\..+)?" />
<property name="product" value="product"/>
<property name="tests" value="tests"/>
<!-- Below this line props shouldn't be changed -->
<property name="targetPlatformPath" value="${basedir}/targetPlatform/" /> <!-- path where 3rd party dependencies are materialzed to by BM to be picked up by PDE build later -->
<property name="output.dir" value="${basedir}/output" />
<property name="build.dir" value="${basedir}" />
<property name="build.label" value="output" />
<property name="context.qualifier" value="000" />
<property name="build.tag" value="${user.name}" />
<property name="build.number" value="000" />
<property name="build.type" value="I" />
<property name="build.timestamp" value="000" />
<property name="product.build.id" value="${product}-${build.tag}-${build.number}" />
<property name="tests.build.id" value="${tests}-${build.tag}-${build.number}" />
<!--===============================-->
<!-- pde.debug "-d" sets the forked VM into debug mode -->
<!-- pde.debug.port "1044" binds the VM remote debug interface to 1044 -->
<!-- pde.debug.suspend "y" The forked VM is suspended until a connection is made to pde.debug.port -->
<!--===============================-->
<property name="pde.debug" value="-" />
<!-- "-" causes unknown arg but build to continue whereas "" causes build to crash -->
<property name="pde.debug.port" value="1044" />
<property name="pde.debug.suspend" value="n" />
<property name="test.debug" value="-" />
<property name="test.debug.port" value="1044" />
<property name="test.debug.suspend" value="n" />
<property name="osgi.console.telnet.port" value="2023" />
<property name="buckminster.debug.level" value="info"/>
<!-- either debug, info, warning, error in that order -->
<!-- Adds padding zeros to an int property based on pattern.
Parameters:
in: The in property takes as int
out: The out property that will receive the padded int
pattern: pattern (default is 000)
-->
<macrodef name="padding">
<attribute name="in"/>
<attribute name="out"/>
<attribute name="pattern" default="000"/>
<sequential>
<propertyfile file="some.generated.properties">
<entry key="@{out}" type="int" value="@{in}" operation="=" pattern="@{pattern}"/>
</propertyfile>
<property file="some.generated.properties"/>
<delete file="some.generated.properties"/>
</sequential>
</macrodef>
<padding in="${context.qualifier}" out="osgi.qualifier"/>
<!-- materialize the ecf dependencies into the workspace -->
<target name="materialize-product">
<materialize mspec="org.eclipse.ecf.sdk.mspec"/>
</target>
<!-- build ECF with Eclipse PDE build -->
<target name="compile-product" depends="">
<compile
archiveprefix="${product}"
builddirectory="${build.dir}"
buildid="${product.build.id}"
buildlabel="${build.label}"
buildtype="${build.type}"
collectingfolder="${product}"
forcecontextqualifier="${osgi.qualifier}"
timestamp="${build.timestamp}"
topLevelElementId="${product.feature.id}"/>
</target>
<!-- materialize the test dependencies into the workspace -->
<target name="materialize-tests">
<materialize mspec="org.eclipse.ecf.tests.mspec"/>
</target>
<!-- build the test suite -->
<target name="compile-tests">
<!-- we build the tests for the current platform -->
<compile
archiveprefix="${tests}"
builddirectory="${build.dir}"
buildid="${tests.build.id}"
buildlabel="${build.label}"
buildtype="${build.type}"
collectingfolder="${tests}"
forcecontextqualifier="${osgi.qualifier}"
timestamp="${build.timestamp}"
configs="${HOST.OSGI.OS},${HOST.OSGI.WS},${HOST.OSGI.ARCH}"
topLevelElementId="${tests.feature.id}"/>
</target>
<property name="test.tmp.dir" value="${basedir}/tmp" />
<property name="test.suite.headless" value="true" /> <!-- we don't have UI tests yet -->
<property name="test.suite.debug" value="true" />
<property name="test.suite.result.dir" value="${output.dir}/testlogs" />
<property name="test.suite.report.dir" value="${test.suite.result.dir}/report" />
<property name="test.suite.coverage.dir" value="${output.dir}/coveragelogs" />
<property name="test.suite.include.name.pattern" value=".*(test|tests)$" />
<property name="test.suite.exclude.name.pattern" value="" />
<property name="test.suite.include.class.pattern" value=".*" />
<property name="test.suite.exclude.class.pattern" value=".*All(Tests|PDETests|_Tests|PDETests).*" />
<path id="instrument.classpath">
<fileset dir="${test.tmp.dir}/${product}/plugins">
<include name="${coverage.include.name.pattern}" />
</fileset>
</path>
<target name="deploy-tests">
<unzip src="${output.dir}/${product.feature.id}-${product.build.id}.zip" dest="${test.tmp.dir}"/>
<unzip src="${output.dir}/${tests.feature.id}-${tests.build.id}-${HOST.OSGI.OS}.${HOST.OSGI.WS}.${HOST.OSGI.ARCH}.zip" dest="${test.tmp.dir}"/>
<move todir="${test.tmp.dir}/${product}">
<fileset dir="${test.tmp.dir}/${tests}"/>
</move>
<mkdir dir="${test.tmp.dir}/${product}/configuration" />
<echo file="${test.tmp.dir}/${product}/configuration/config.ini" append="false">
osgi.bundles=org.eclipse.equinox.common@2:start,org.eclipse.update.configurator@3:start,org.eclipse.core.runtime@start
osgi.bundles.defaultStartLevel=4
</echo>
</target>
<target name="instrument-tests">
<emma enabled="true">
<instr instrpathref="instrument.classpath" mode="overwrite" metadatafile="${test.suite.coverage.dir}/metadata.ec" >
</instr>
</emma>
</target>
<!-- read in all properties test-prefix.* and pass them to run-test's vm as *-->
<propertyset id="test-properties">
<propertyref prefix="test-prefix"/>
<mapper type="glob" from="test-prefix.*" to="*"/>
</propertyset>
<target name="run-tests">
<mkdir dir="${test.suite.result.dir}"/>
<java classname="org.eclipse.core.launcher.Main" fork="yes" clonevm="true" failonerror="false">
<classpath>
<fileset dir="${test.tmp.dir}/${product}/plugins">
<include name="**/org.eclipse.equinox.launcher*.jar"/>
</fileset>
<pathelement location="${EMMA_2.0.5312}/lib/emma.jar" />
</classpath>
<arg value="${test.debug}"/>
<arg value="-application" />
<arg value="org.pluginbuilder.autotestsuite.application.autoTestApplication" />
<arg value="-testApplication" />
<arg value="org.eclipse.ui.ide.workbench" />
<arg value="-clean" />
<arg value="-console" />
<arg value="${osgi.console.telnet.port}" />
<syspropertyset refid="test-properties" />
<!-- debugging -->
<jvmarg value="-Xrunjdwp:transport=dt_socket,address=${test.debug.port},server=y,suspend=${test.debug.suspend}" />
<jvmarg value="-Xdebug" />
<!-- test suite properties -->
<jvmarg value="-Dautotestsuite.headless=${test.suite.headless}" />
<jvmarg value="-Dautotestsuite.debug=${test.suite.debug}" />
<jvmarg value="-Dautotestsuite.results.directory=${test.suite.result.dir}" />
<jvmarg value="-Dautotestsuite.plugin.inclusions=${test.suite.include.name.pattern}" />
<jvmarg value="-Dautotestsuite.plugin.exclusions=${test.suite.exclude.name.pattern}" />
<jvmarg value="-Dautotestsuite.class.inclusions=${test.suite.include.class.pattern}" />
<jvmarg value="-Dautotestsuite.class.exclusions=${test.suite.exclude.class.pattern}" />
<!-- emma class instrumentation -->
<jvmarg value="-Demma.coverage.out.file=${test.suite.coverage.dir}/coverage.ec" />
<jvmarg value="-Dosgi.parentClassloader=app"/>
<jvmarg value="-XX:MaxPermSize=512M" />
<jvmarg value="-XX:PermSize=256M" />
<jvmarg value="-Xms256m" />
<jvmarg value="-Xmx512m" />
</java>
</target>
<target name="report-tests">
<mkdir dir="${test.suite.report.dir}" />
<junitreport todir="${test.suite.report.dir}">
<fileset dir="${test.suite.result.dir}">
<include name="*.xml"/>
</fileset>
<report format="frames" todir="${test.suite.report.dir}/html"/>
</junitreport>
<emma enabled="true">
<report>
<sourcepath>
<dirset dir="${basedir}/plugins">
<include name="**/src" />
</dirset>
</sourcepath>
<fileset dir="${test.suite.coverage.dir}">
<include name="*.ec" />
</fileset>
<txt outfile="${test.suite.coverage.dir}/coverage.txt" />
<xml outfile="${test.suite.coverage.dir}/coverage.xml" />
<html outfile="${test.suite.coverage.dir}/coverage.html" />
</report>
</emma>
</target>
<target name="clean">
<!-- delete temp build files and directories-->
<delete includeemptydirs="true" failonerror="false" >
<fileset dir="${build.dir}/plugins" includes="**/bin/**"/>
<fileset dir="${build.dir}/plugins" includes="**/@dot/**"/>
<fileset dir="${build.dir}/plugins" includes="**/temp.folder/**"/>
<fileset dir="${build.dir}/plugins" includes="**/javaCompiler.*.args"/>
<fileset dir="${build.dir}/features" includes="**/feature.temp.folder/**"/>
</delete>
<!-- build artefacts of a previous build -->
<delete dir="${build.dir}/${build.id}" failonerror="false" />
<!-- generated build scripts -->
<delete failonerror="false" >
<fileset dir="${build.dir}" includes="package*.xml" />
<fileset dir="${build.dir}" includes="fetch*.xml" />
<fileset dir="${build.dir}" includes="assemble*.xml" />
<fileset dir="${build.dir}" includes="final*.properties" />
<fileset dir="${build.dir}" includes="compile*.xml" />
</delete>
<delete dir="${build.dir}/features/org.eclipse.pde.build.container.feature" failonerror="false" />
<delete dir="${build.dir}/maps" failonerror="false" />
<delete dir="${build.dir}/tmp" failonerror="false" />
<delete dir="${build.dir}/workspace" failonerror="false" />
</target>
<target name="materialize" depends="materialize-product, materialize-tests" />
<target name="compile" depends="compile-product, compile-tests" />
<target name="test" depends="deploy-tests, instrument-tests, run-tests, report-tests" />
<target name="all" depends="clean, materialize-product, compile-product, materialize-tests, compile-tests, test" />
<!-- = = = = = = = = = = = = = = = = =
macrodef: materialize
= = = = = = = = = = = = = = = = = -->
<macrodef name="materialize">
<attribute name="mspec" />
<sequential>
<!-- Explicitly unset targetPlatformPath so nothing gets picked from there e.g. org.eclipse.equinox.launcher + other bm properties -->
<echo file="${basedir}/.settings.bmscript" append="false">
org.eclipse.buckminster.core.prefs.setpref org.eclipse.buckminster.core.maxParallelResolutions=1
org.eclipse.buckminster.core.prefs.setpref org.eclipse.buckminster.core.maxParallelMaterializations=1
org.eclipse.buckminster.core.prefs.setpref org.eclipse.buckminster.pde.targetPlatformPath=${targetPlatformPath}
</echo>
<mkdir dir="${targetPlatformPath}" />
<java classname="org.eclipse.core.launcher.Main" fork="yes" failonerror="true">
<classpath>
<fileset dir="${BUCKMINSTER_BUILDER_REV09937}/plugins">
<include name="**/org.eclipse.equinox.launcher*.jar"/>
</fileset>
</classpath>
<arg value="-data" />
<arg value="${basedir}" />
<arg line="--scriptfile .settings.bmscript"/>
<!-- osgi locations -->
<jvmarg value="-Dosgi.configuration.cascade=true" />
<jvmarg value="-Dosgi.sharedConfiguration.area=${BUCKMINSTER_BUILDER_REV09937}/configuration" />
<jvmarg value="-Dosgi.sharedConfiguration.area.readOnly=true" />
<jvmarg value="-Dosgi.configuration.area=${basedir}/.configuration" />
<jvmarg value="-Dosgi.user.area=@none" />
</java>
<delete file="${basedir}/.settings.bmscript"/>
<mkdir dir="${output.dir}" />
<java classname="org.eclipse.core.launcher.Main" fork="yes" failonerror="true">
<classpath>
<fileset dir="${BUCKMINSTER_BUILDER_REV09937}/plugins">
<include name="**/org.eclipse.equinox.launcher*.jar"/>
</fileset>
</classpath>
<arg value="--displaystacktrace"/>
<arg value="--loglevel"/>
<arg value="${buckminster.debug.level}"/>
<arg value="-clean" />
<arg value="-data" />
<arg value="${basedir}" />
<arg value="import" />
<arg value="--bomfile"/>
<arg value="${output.dir}/@{mspec}.bom" />
<arg value="${basedir}/@{mspec}" />
<arg value="-console" />
<arg value="${osgi.console.telnet.port}" />
<!-- debugging -->
<jvmarg value="-Xdebug" />
<jvmarg value="-Xrunjdwp:transport=dt_socket,address=${pde.debug.port},server=y,suspend=${pde.debug.suspend}" />
<!-- osgi locations -->
<jvmarg value="-Dosgi.configuration.cascade=true" />
<jvmarg value="-Dosgi.sharedConfiguration.area=${BUCKMINSTER_BUILDER_REV09937}/configuration" />
<jvmarg value="-Dosgi.sharedConfiguration.area.readOnly=true" />
<jvmarg value="-Dosgi.configuration.area=${basedir}/.configuration" />
<jvmarg value="-Dosgi.user.area=@none" />
<!-- the Eclipse java indexer has a lot to do so give it some ram -->
<jvmarg value="-XX:MaxPermSize=512M" />
<jvmarg value="-XX:PermSize=256M" />
<jvmarg value="-Xms256m" />
<jvmarg value="-Xmx512m" />
</java>
</sequential>
</macrodef>
<!-- = = = = = = = = = = = = = = = = =
macrodef: compile
= = = = = = = = = = = = = = = = = -->
<macrodef name="compile">
<attribute name="product" default="-DdoNotRepeatThis=true"/>
<!-- must not be blank -->
<attribute name="customTargets" default="-DamIEvil=true" />
<attribute name="collectingFolder"/>
<attribute name="configs" default="*,*,*"/>
<attribute name="buildDirectory"/>
<attribute name="archivePrefix"/>
<attribute name="archiveSuffix" default=".zip"/>
<attribute name="timestamp"/>
<attribute name="buildType"/>
<attribute name="buildLabel"/>
<attribute name="buildId"/>
<attribute name="buildFile" default="build.xml"/>
<attribute name="forceContextQualifier"/>
<attribute name="recursive" default="false"/>
<attribute name="topLevelElementType" default="feature"/>
<attribute name="pluginPath" default="${targetPlatformPath}" />
<attribute name="groupConfigurations" default="false" /> <!-- http://help.eclipse.org/ganymede/index.jsp?topic=/org.eclipse.pde.doc.user/tasks/pde_controlling_output.htm -->
<!-- either feature or plugin -->
<attribute name="topLevelElementId"/>
<sequential>
<java classname="org.eclipse.core.launcher.Main" fork="yes" failonerror="true">
<classpath>
<fileset dir="${BUCKMINSTER_BUILDER_REV09937}/plugins">
<include name="**/org.eclipse.equinox.launcher*.jar"/>
</fileset>
</classpath>
<arg value="${pde.debug}"/>
<arg value="-application" />
<arg value="org.eclipse.ant.core.antRunner" />
<arg value="-buildfile" />
<arg value="${BUCKMINSTER_BUILDER_REV09937}/plugins/org.eclipse.pde.build_3.5.0/scripts/@{buildFile}" />
<arg value="-clean" />
<arg value="-data" />
<arg value="${basedir}" />
<arg value="-console" />
<arg value="${osgi.console.telnet.port}" />
<!-- debugging -->
<jvmarg value="-Xdebug" />
<jvmarg value="-Xrunjdwp:transport=dt_socket,address=${pde.debug.port},server=y,suspend=${pde.debug.suspend}" />
<!-- osgi locations -->
<jvmarg value="-Dosgi.configuration.cascade=true" />
<jvmarg value="-Dosgi.sharedConfiguration.area=${BUCKMINSTER_BUILDER_REV09937}/configuration" />
<jvmarg value="-Dosgi.sharedConfiguration.area.readOnly=true" />
<jvmarg value="-Dosgi.configuration.area=${basedir}/.configuration" />
<jvmarg value="-Dosgi.user.area=@none" />
<!-- parameters build -->
<jvmarg value="@{product}"/>
<jvmarg value="@{customTargets}"/>
<jvmarg value="-DarchivePrefix=@{archivePrefix}" />
<jvmarg value="-Dconfigs=@{configs}" />
<jvmarg value="-DbuildId=@{buildId}" />
<jvmarg value="-DbuildLabel=@{buildLabel}" />
<jvmarg value="-DbuildType=@{buildType}" />
<jvmarg value="-Dtimestamp=@{timestamp}" />
<jvmarg value="-DbuildDirectory=@{buildDirectory}" />
<jvmarg value="-DcollectingFolder=@{collectingFolder}" />
<jvmarg value="-DforceContextQualifier=@{forceContextQualifier}" />
<jvmarg value="-Drecursive=@{recursive}" />
<jvmarg value="-DtopLevelElementId=@{topLevelElementId}" />
<jvmarg value="-DtopLevelElementType=@{topLevelElementType}" />
<jvmarg value="-DpluginPath=@{pluginPath}" />
<!-- common -->
<jvmarg value="-DCDC-1.1/Foundation-1.1=${CDC-1.1/Foundation-1.1}" />
<jvmarg value="-DJ2SE-1.4=${J2SE-1.4}" />
<jvmarg value="-DJ2SE-1.5=${J2SE-1.5}" />
<jvmarg value="-DJavaSE-1.6=${JavaSE-1.6}" />
<jvmarg value="-DbaseLocation=" />
<jvmarg value="-DskipBase=true" />
<jvmarg value="-DskipMaps=true" />
<jvmarg value="-DskipFetch=true" />
<jvmarg value="-DrunPackager=true" />
<jvmarg value="-DoutputUpdateJars=false" />
<jvmarg value="-DjavacDebugInfo=true" />
<jvmarg value="-DjavacFailOnError=true" />
<jvmarg value="-DjavacVerbose=false" />
<jvmarg value="-DgenerateFeatureVersionSuffix=false" />
<jvmarg value="-DgenerateVersionsLists=false" />
<jvmarg value="-DflattenDependencies=true" />
<jvmarg value="-DindividualSourceBundles=true" />
<jvmarg value="-DgroupConfigurations=@{groupConfigurations}" />
</java>
</sequential>
</macrodef>
</project>