| <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> |