| <project |
| name="AggregationTasks" |
| basedir="." |
| default="default"> |
| |
| <property environment="env" /> |
| <!-- |
| This property file name is itself a property, so it can be overridden |
| on one machine versus another. We do it this way, instead of just specifying |
| -propertyFile on command line, so that the property values can be "nested" |
| in other property values and evaluated lazily. |
| --> |
| |
| <fail |
| unless="release" |
| message="release must be specified for this script, such as -Drelease=mars" /> |
| |
| <property |
| name="aggrPropertyFile" |
| value="aggr.properties" /> |
| |
| <loadproperties srcfile="${aggrPropertyFile}" /> |
| |
| <target |
| name="installAggregatorAndTools" |
| depends="init, savePrevious,installAggregator,installRelengTools" |
| if="installEclipseAndTools"> |
| |
| <echo message="Installed fresh Eclipse, Aggregator, and Tools" /> |
| |
| </target> |
| |
| <target |
| name="installAggregator" |
| depends="init, savePrevious" |
| if="installEclipseAndTools"> |
| <property |
| name="APP_NAME" |
| value="org.eclipse.equinox.p2.director" /> |
| <property |
| name="OTHER_ARGS_AGG" |
| value="-metadataRepository http://download.eclipse.org/modeling/emft/b3/updates-4.4/ -artifactRepository http://download.eclipse.org/modeling/emft/b3/updates-4.4/ -installIU org.eclipse.b3.aggregator.engine.feature.feature.group" /> |
| <!-- |
| <property |
| name="OTHER_ARGS_AGG" |
| value="-metadataRepository http://download.eclipse.org/modeling/emft/b3/updates-4.4/ -artifactRepository http://download.eclipse.org/modeling/emft/b3/updates-4.4/ |
| -installIU org.eclipse.b3.aggregator.engine.feature.feature.group" /> |
| |
| <property |
| name="OTHER_ARGS_AGG" |
| value="-metadataRepository http://download.eclipse.org/modeling/emft/b3/updates-4.4/,http://download.eclipse.org/releases/luna |
| -artifactRepository http://download.eclipse.org/modeling/emft/b3/updates-4.4/,http://download.eclipse.org/releases/luna -installIU |
| org.eclipse.b3.aggregator.engine.feature.feature.group" /> |
| --> |
| <!-- usually do not need the version, just to "get the latest" from |
| buckminster builder site -version 1.0.0.v20090415-1651 --> |
| <property |
| name="VM_ARGS" |
| value="-Xmx256m" /> |
| |
| |
| <mkdir dir="${ECLIPSE_HOME}" /> |
| |
| <untar |
| compression="gzip" |
| overwrite="true" |
| src="${FULL_FILENAME}" |
| dest="${ECLIPSE_HOME}" /> |
| |
| <!-- |
| This .options file is most useful on non-eclipse.org sites, since |
| on eclipse.org, by design, should not go through mirrors, but that's the |
| purpose of the .options ... so list which mirrors that artifacts come from. |
| |
| <copy |
| file="${BUILD_HOME}/${BUILD_TOOLS}/p2options/.options" |
| todir="${ECLIPSE_HOME}/eclipse/" /> |
| --> |
| <!-- |
| Weird this chmod is required? Maybe an ant bug? Maybe no longer needed? |
| (That is, maybe an early bug in packages?) |
| --> |
| <chmod |
| file="${ECLIPSE_HOME}/eclipse/eclipse" |
| perm="ugo+x" |
| verbose="true" /> |
| |
| <!-- and now get latest --> |
| <exec |
| executable="${eclipseExecutable}" |
| dir="${basedir}" |
| failonerror="true"> |
| <arg |
| line="-data ${eclipseWorkspace} -debug -consolelog -nosplash --launcher.suppressErrors -application ${APP_NAME} ${OTHER_ARGS_AGG} -vm ${JAVA_EXEC_DIR} -vmargs ${VM_ARGS}" /> |
| </exec> |
| </target> |
| |
| <target |
| name="installTests" |
| depends="init, savePreviousTest" |
| if="installEclipseTests"> |
| <property |
| name="APP_NAME" |
| value="org.eclipse.equinox.p2.director" /> |
| |
| <!-- usually do not need the version, just to "get the latest" from |
| buckminster builder site -version 1.0.0.v20090415-1651 --> |
| <property |
| name="VM_ARGS" |
| value="-Xmx256m" /> |
| |
| <mkdir dir="${ECLIPSE_HOME_TEST}" /> |
| |
| <untar |
| compression="gzip" |
| overwrite="true" |
| src="${FULL_TEST_FILENAME}" |
| dest="${ECLIPSE_HOME_TEST}" /> |
| |
| <!-- weird this chmod is required? probably ant bug --> |
| <chmod |
| file="${ECLIPSE_HOME_TEST}/eclipse/eclipse" |
| perm="ugo+x" |
| verbose="true" /> |
| |
| <!-- get raw files from git ... this is now done by Hudson |
| |
| <echo message=" removing previous HOLD_BRANCH.zip if it exists, in ${BUILD_HOME}" /> |
| |
| <delete |
| file="${BUILD_HOME}/HOLD_BRANCH.zip" |
| failonerror="false" /> |
| |
| <echo message=" getting ${CGITURL}/${RELENG_TESTS_REPO}.git/snapshot/${BRANCH_TESTS}.zip to ${BUILD_HOME}" /> |
| |
| <get |
| src="${CGITURL}/${RELENG_TESTS_REPO}.git/snapshot/${BRANCH_TESTS}.zip" |
| dest="${BUILD_HOME}/HOLD_BRANCH.zip" |
| verbose="true" /> |
| |
| <unzip |
| src="${BUILD_HOME}/HOLD_BRANCH.zip" |
| dest="${BUILD_HOME}/${TMPDIR_TESTS}" /> |
| --> |
| <copy todir="${ECLIPSE_HOME_TEST}/eclipse/dropins/${RELENG_TESTS_BUNDLE_ID}"> |
| <fileset |
| dir="${BUILD_HOME}/${RELENG_TESTS_DIR}/${RELENG_TESTS_PATH}/" |
| includes="**/*" /> |
| </copy> |
| |
| <!-- cleanup temp working files |
| <delete file="${BUILD_HOME}/HOLD_BRANCH.zip" /> |
| <delete dir="${BUILD_HOME}/${TMPDIR_TESTS}" /> |
| --> |
| |
| </target> |
| <target |
| name="installRelengTools" |
| depends="init" |
| if="installEclipseAndTools"> |
| <property |
| name="APP_NAME" |
| value="org.eclipse.equinox.p2.director" /> |
| <property |
| name="OTHER_ARGS_TOOLS" |
| value="-metadataRepository http://download.eclipse.org/webtools/releng/repository/ -artifactRepository http://download.eclipse.org/webtools/releng/repository/ -installIU org.eclipse.wtp.releng.tools.feature.feature.group" /> |
| |
| <property |
| name="VM_ARGS" |
| value="-Xmx256m" /> |
| |
| <!-- install latest --> |
| <exec |
| executable="${eclipseExecutable}" |
| dir="${basedir}" |
| failonerror="true"> |
| <arg |
| line="-data ${eclipseWorkspace} -debug -consolelog -nosplash --launcher.suppressErrors -application ${APP_NAME} ${OTHER_ARGS_TOOLS} -vm ${JAVA_EXEC_DIR} -vmargs ${VM_ARGS}" /> |
| </exec> |
| </target> |
| |
| <macrodef name="git-rev-parse"> |
| <attribute name="repodir" /> |
| <attribute |
| name="reference" |
| default="HEAD" /> |
| <attribute name="returnProperty" /> |
| <sequential> |
| <echo message="execute git in @{repodir}" /> |
| <echo message="git rev-parse @{reference} returned in @{returnProperty}" /> |
| <local name="rc" /> |
| <local name="result" /> |
| <exec |
| executable="git" |
| failonerror="false" |
| outputproperty="result" |
| resultproperty="rc" |
| dir="@{repodir}"> |
| <arg line="rev-parse @{reference}" /> |
| </exec> |
| <property |
| name="@{returnProperty}" |
| value="${result}" /> |
| <echo message="In macro rc is ${rc}" /> |
| <echo message="In macro result is ${result}" /> |
| <echo message="In macro @{returnProperty} is ${@{returnProperty}}" /> |
| </sequential> |
| </macrodef> |
| <macrodef name="git-clone"> |
| <attribute name="repository" /> |
| <attribute name="dir" /> |
| <attribute name="branch" /> |
| <sequential> |
| <echo message="execute git in @{dir}" /> |
| <echo message="git clone -b @{branch} @{repository} --config core.autocrlf=input --config merge.defaultToUpstream=true" /> |
| <exec |
| executable="git" |
| failonerror="false" |
| resultproperty="cloneResult" |
| dir="@{dir}"> |
| <arg line="clone -b @{branch} @{repository} --config core.autocrlf=input --config merge.defaultToUpstream=true" /> |
| </exec> |
| <antcall target="checkStatus"> |
| <param |
| name="status" |
| value="${cloneResult}" /> |
| <param |
| name="message" |
| value="Cloning Failed" /> |
| </antcall> |
| </sequential> |
| </macrodef> |
| |
| <!-- |
| We do modify the source tree during build, to change URLs to local file system, |
| if building on build.eclipse.org, so need to 'clean' and 'reset' before pull. |
| For pull we always do a fetch followed by a checkout, in case we change branches |
| in Hudson job, etc. ... say, to do a "Luna_maintenance_patch". |
| --> |
| <macrodef name="git-pull"> |
| <attribute name="dir" /> |
| <attribute name="branch" /> |
| <attribute name="origin" /> |
| <sequential> |
| <echo message="= = = execute git in @{dir}" /> |
| <echo message="git clean -d -ff -x" /> |
| <exec |
| executable="git" |
| failonerror="false" |
| resultproperty="RCclean" |
| dir="@{dir}"> |
| <arg line="clean -d -ff -x" /> |
| </exec> |
| <antcall target="checkStatus"> |
| <param |
| name="status" |
| value="${RCclean}" /> |
| <param |
| name="message" |
| value="Cleaning Failed" /> |
| </antcall> |
| <echo message="git reset --hard" /> |
| <exec |
| executable="git" |
| failonerror="false" |
| resultproperty="RCreset" |
| dir="@{dir}"> |
| <arg line="reset --hard" /> |
| </exec> |
| <antcall target="checkStatus"> |
| <param |
| name="status" |
| value="${RCreset}" /> |
| <param |
| name="message" |
| value="Reset Failed" /> |
| </antcall> |
| <echo message="git fetch @{origin}" /> |
| <exec |
| executable="git" |
| failonerror="false" |
| resultproperty="RCfetch" |
| dir="@{dir}"> |
| <arg line="fetch @{origin}" /> |
| </exec> |
| |
| <antcall target="checkStatus"> |
| <param |
| name="status" |
| value="${RCfetch}" /> |
| <param |
| name="message" |
| value="fetch Failed" /> |
| </antcall> |
| |
| <echo message="git checkout -B @{branch} --track @{origin}/@{branch}" /> |
| <exec |
| executable="git" |
| failonerror="false" |
| resultproperty="RCcheckout" |
| dir="@{dir}"> |
| <arg line="checkout -B @{branch} --track @{origin}/@{branch}" /> |
| </exec> |
| <antcall target="checkStatus"> |
| <param |
| name="status" |
| value="${RCcheckout}" /> |
| <param |
| name="message" |
| value="Checkout Failed" /> |
| </antcall> |
| </sequential> |
| </macrodef> |
| |
| <!-- |
| This can leave repo in "detached" state, which, shouldn't hurt anything we're doing, |
| as long as Hudson can check out/clone branch the next time the job runs. |
| --> |
| <macrodef name="git-checkout"> |
| <attribute name="dir" /> |
| <attribute name="commit" /> |
| <sequential> |
| <echo message="execute git checkout @{commit} in @{dir}" /> |
| <exec |
| executable="git" |
| failonerror="false" |
| resultproperty="RCcheckout" |
| dir="@{dir}"> |
| <arg line="checkout @{commit}" /> |
| </exec> |
| <antcall target="checkStatus"> |
| <param |
| name="status" |
| value="${RCcheckout}" /> |
| <param |
| name="message" |
| value="Checkout Failed" /> |
| </antcall> |
| </sequential> |
| </macrodef> |
| |
| <!-- |
| We never really need/use 'clone' when on Hudson. |
| We do use "pull", to make sure "current", and then |
| in main task we "checkout" the exact commit we want. This is primarily so that |
| all tasks (validate, build-with-Cache, and build-Clean, all operate on exact |
| same input). [Though, still need "exact" input in b3aggrcon files, for that to be completely |
| valid.] |
| --> |
| <target |
| name="getModelFromGit" |
| depends="init, cloneRepo, cloneToolsRepo, cloneTestsRepo, pullRepo, pullToolsRepo, pullTestsRepo" |
| unless="modelRetrived"> |
| <!-- |
| While Hudson normall does clone and 'pull', we "check" here to make sure. |
| In particular, in some cases, a build might be triggered by a change in "tools" |
| repo, so even then we want to make sure to get 'latest' of "build" repo. |
| In both cases, we *then* want to get a specific revision, if passed to us by |
| a previous job. This is so that the various jobs we have, 'validate', |
| 'build', and 'build_clean' can all work on the same revision. |
| --> |
| <git-checkout |
| dir="${BUILD_MODEL_DIR}" |
| commit="${commitOrBranch}" /> |
| <echo message="on HUDSON: checkedout ${commitOrBranch} of ${BUILD_MODEL} into ${BUILD_MODEL_DIR}" /> |
| <git-checkout |
| dir="${BUILD_TOOLS_DIR}" |
| commit="${toolsCommitOrBranch}" /> |
| <echo message="on HUDSON: checkedout ${toolsCommitOrBranch} of ${BUILD_TOOLS} into ${BUILD_TOOLS_DIR}" /> |
| <property |
| name="modelRetrived" |
| value="true" /> |
| </target> |
| |
| <target |
| name="cloneRepo" |
| depends="init" |
| unless="localRepoExists"> |
| |
| <echo message="git clone task for ${BUILD_MODEL} to execute in ${BUILD_HOME} using branch ${BRANCH_BUILD}" /> |
| |
| <git-clone |
| repository="git://git.eclipse.org/gitroot/simrel/${BUILD_MODEL}.git" |
| dir="${BUILD_HOME}" |
| branch="${BRANCH_BUILD}" /> |
| </target> |
| |
| <target |
| name="cloneToolsRepo" |
| depends="init" |
| unless="localToolsRepoExists"> |
| <echo message="git clone task for ${BUILD_TOOLS} to execute in ${BUILD_HOME} using branch ${BRANCH_TOOLS}" /> |
| <git-clone |
| repository="git://git.eclipse.org/gitroot/simrel/${BUILD_TOOLS}.git" |
| dir="${BUILD_HOME}" |
| branch="${BRANCH_TOOLS}" /> |
| </target> |
| |
| <target |
| name="cloneTestsRepo" |
| depends="init" |
| unless="localTestsRepoExists"> |
| <echo message="git clone task for ${BUILD_TESTS} to execute in ${BUILD_HOME} using branch ${BRANCH_TESTS}" /> |
| <git-clone |
| repository="git://git.eclipse.org/gitroot/simrel/${BUILD_TESTS}.git" |
| dir="${BUILD_HOME}" |
| branch="${BRANCH_TESTS}" /> |
| </target> |
| |
| <target |
| name="pullRepo" |
| depends="init" |
| if="localRepoExists"> |
| <echo message="git pull task to execute in ${BUILD_MODEL_DIR}" /> |
| <!-- in macro "pull", we actually do a fetch, then check out --> |
| <git-pull |
| dir="${BUILD_MODEL_DIR}" |
| branch="${BRANCH_BUILD}" |
| origin="${BUILD_ORIGIN}" /> |
| </target> |
| |
| <target |
| name="pullToolsRepo" |
| depends="init" |
| if="localToolsRepoExists"> |
| <echo message="git pull task to execute in ${BUILD_TOOLS_DIR}" /> |
| <git-pull |
| dir="${BUILD_TOOLS_DIR}" |
| branch="${BRANCH_TOOLS}" |
| origin="${TOOLS_ORIGIN}" /> |
| </target> |
| |
| <target |
| name="pullTestsRepo" |
| depends="init" |
| if="localTestsRepoExists"> |
| <echo message="git pull task to execute in ${BUILD_TESTS_DIR}" /> |
| <git-pull |
| dir="${BUILD_TESTS_DIR}" |
| branch="${BRANCH_TESTS}" |
| origin="${TESTS_ORIGIN}" /> |
| </target> |
| |
| <!-- |
| This is "the key" task. If it succeeds, we run tests (reports), and |
| if they "pass", we promote to "staging". |
| --> |
| <target |
| name="runAggregatorCleanBuild" |
| depends="init,getModelFromGit,rewriteRepositoryURL,installAggregatorAndTools,installTests"> |
| <!-- |
| If not otherwise set in properties file, use these values. Note |
| the build.eclipse.org production machine must override these values for property |
| values appropriate for it (namely production.properties). |
| --> |
| <!-- |
| We no longer "trust" Eclipse and Equinox repos. |
| -trustedContributions Eclipse,Equinox |
| --> |
| <property |
| name="AGG_APP_ARGS" |
| value="${AGGREGATOR_APP_ARGS_CLEAN_BUILD}" /> |
| |
| <!-- Important: on any non-production machines it is important to _not_ use |
| eclipse.p2.mirrors=false, so this value should be supplied by calling script's |
| properties. Note, we include '-vmargs' here, in case there are not any. Not |
| sure if the use of -vmargs _requires_ arguments or not, but probably would. |
| note: -Declipse.p2.MD5Check=false may be needed as a workaround for bug [253713] |
| (should not actually be required ... but have left note for historical reference) |
| note: rememeber that JAVA_6 should not be used for jar processor, see |
| for example, bug 244603 and bug 279596. |
| --> |
| |
| <!-- -Dorg.eclipse.update.jarprocessor.pack200=${JAVA_6_HOME}/jre/bin -Declipse.p2.mirrors=false" --> |
| <property |
| name="BUILDER_VM_ARGS" |
| value="-Xmx1024m -Djava.io.tmpdir=${BUILD_HOME}/tmp" /> |
| <echo message="AGG_APP_ARGS: ${AGG_APP_ARGS}" /> |
| <echo message="BUILDER_VM_ARGS: -vmargs ${BUILDER_VM_ARGS}" /> |
| |
| <exec |
| executable="${eclipseExecutable}" |
| dir="${basedir}" |
| failonerror="false" |
| resultproperty="buildStatus"> |
| <arg value="-debug" /> |
| <arg value="file://${BUILD_HOME}/${BUILD_TOOLS}/p2options/.options" /> |
| <!-- |
| Adding -consolelog makes for too much, unneeded output, since the aggregator |
| produces its verbose own output, slightly cleaner. |
| <arg value="-consolelog" /> |
| --> |
| <arg value="-nosplash" /> |
| <arg value="-data" /> |
| <arg value="${eclipseWorkspace}" /> |
| <arg value="--launcher.suppressErrors" /> |
| <arg value="-application" /> |
| <arg value="org.eclipse.b3.cli.headless" /> |
| <arg value="aggregate" /> |
| <arg value="--buildId" /> |
| <arg value="${buildTimestamp}" /> |
| <arg line="${AGG_APP_ARGS}" /> |
| <arg value="-vm" /> |
| <arg value="${JAVA_8_HOME}/jre/bin" /> |
| <arg value="-vmargs" /> |
| <arg line="${BUILDER_VM_ARGS}" /> |
| </exec> |
| |
| <antcall target="checkStatus"> |
| <param |
| name="status" |
| value="${buildStatus}" /> |
| <param |
| name="message" |
| value="Aggregation Failed" /> |
| </antcall> |
| |
| <antcall target="createBuildinfo" /> |
| |
| <!-- |
| The tests depend on the symbolic link of "latests" being created, |
| so we pause a few seconds for NSF to catch up. |
| --> |
| <echo message="Waiting 2 seconds..." /> |
| <sleep seconds="2" /> |
| <echo message="Waiting 2 seconds..." /> |
| <sleep seconds="2" /> |
| <echo message="Waiting 2 seconds..." /> |
| <sleep seconds="2" /> |
| |
| <antcall target="runTests" /> |
| |
| </target> |
| |
| <!-- runTests can be ran as manual job, but then should use custom workspace, |
| to run against previous build, and acquire the lock, for that job --> |
| <target name="runTests"> |
| <ant |
| antfile="${BUILD_HOME}/testInstance/eclipse/dropins/${RELENG_TESTS_BUNDLE_ID}/runTests.xml" |
| target="cleanBuildTests" |
| dir="${BUILD_HOME}" /> |
| </target> |
| |
| <target name="checkStatus"> |
| <echo message="status: ${status}" /> |
| <condition |
| property="statusOK" |
| value="true"> |
| <equals |
| forceString="true" |
| arg1="${status}" |
| arg2="0" /> |
| </condition> |
| <echo message="statusOK: ${statusOK}" /> |
| <antcall target="writeStatus" /> |
| <fail |
| message="${message}" |
| unless="statusOK" /> |
| |
| </target> |
| |
| <target |
| name="writeStatus" |
| unless="statusOK"> |
| <echo |
| message="build failed" |
| file="${BUILD_HOME}/buildStatusFailed" /> |
| </target> |
| |
| <!-- |
| Note: many tests would not be valid on "cached" version of repo, but, some might? |
| Currently no tests are called, but, we might alter, so we make sure installed now, |
| in anticipation. |
| --> |
| <target |
| name="runAggregatorBuildOnly" |
| depends="init,getModelFromGit,rewriteRepositoryURL,installAggregatorAndTools, installTests"> |
| <!-- |
| If not otherwise set in properties file, use these values. Note |
| the build.eclipse.org production machine must override these values for property |
| values appropriate for it. |
| --> |
| |
| <property |
| name="AGG_APP_ARGS" |
| value="${AGGREGATOR_APP_ARGS_BUILDONLY}" /> |
| |
| <!-- |
| Important: on any non-production machines it is important to _not_ use |
| eclipse.p2.mirrors=false, so this value should be supplied by calling script's |
| properties. Note, we include '-vmargs' here, in case there are not any. Not |
| sure if the use of -vmargs _requires_ arguments or not, but probably would. |
| note: -Declipse.p2.MD5Check=false may be needed as a workaround for bug [253713] |
| (should not be required any longer ... but have left note for historical reference) |
| note: rememeber that JAVA_6 should not be used for jar processor, see |
| for example, bug 244603 and bug 279596. |
| --> |
| <!-- -Dorg.eclipse.update.jarprocessor.pack200=${JAVA_6_HOME}/jre/bin -Declipse.p2.mirrors=false" --> |
| <property |
| name="BUILDER_VM_ARGS" |
| value="-Xmx1024m -Djava.io.tmpdir=${BUILD_HOME}/tmp" /> |
| <echo message="AGG_APP_ARGS: ${AGG_APP_ARGS}" /> |
| <echo message="BUILDER_VM_ARGS: -vmargs ${BUILDER_VM_ARGS}" /> |
| |
| <exec |
| executable="${eclipseExecutable}" |
| dir="${basedir}" |
| failonerror="false" |
| resultproperty="buildStatus"> |
| <arg value="-debug" /> |
| <arg value="file://${BUILD_HOME}/${BUILD_TOOLS}/p2options/.options" /> |
| <!-- |
| Adding -consolelog makes for too much, unneeded output, since the aggregator |
| produces its verbose own output, slightly cleaner. |
| <arg value="-consolelog" /> |
| --> |
| <arg value="-nosplash" /> |
| <arg value="-data" /> |
| <arg value="${eclipseWorkspace}" /> |
| <arg value="--launcher.suppressErrors" /> |
| <arg value="-application" /> |
| <arg value="org.eclipse.b3.cli.headless" /> |
| <arg value="aggregate" /> |
| <arg value="--buildId" /> |
| <arg value="${buildTimestamp}" /> |
| <arg line="${AGG_APP_ARGS}" /> |
| <arg value="-vm" /> |
| <arg value="${JAVA_8_HOME}/jre/bin" /> |
| <arg value="-vmargs" /> |
| <arg line="${BUILDER_VM_ARGS}" /> |
| </exec> |
| |
| <antcall target="checkStatus"> |
| <param |
| name="status" |
| value="${buildStatus}" /> |
| <param |
| name="message" |
| value="Aggregation Failed" /> |
| </antcall> |
| |
| <antcall target="createBuildinfo" /> |
| |
| <ant |
| antfile="${BUILD_HOME}/testInstance/eclipse/dropins/${RELENG_TESTS_BUNDLE_ID}/runTests.xml" |
| target="cachedBuild" |
| dir="${BUILD_HOME}" /> |
| |
| </target> |
| |
| <!-- |
| Note, we currently have no "tests" for the "validate only" case, but we could, might |
| someday, so we go ahead an install, in anticipation. For example, we might simply |
| test that all b3aggrcon files specify unique URL (to simple repository) or |
| that "versions" are specified in *.b3aggrcon file. |
| --> |
| <target |
| name="runAggregatorValidateOnly" |
| depends="init,getModelFromGit,rewriteRepositoryURL,installAggregatorAndTools, installTests"> |
| <!-- |
| If not otherwise set in properties file, use these values. Note |
| the build.eclipse.org production machine must override these values for property |
| values appropriate for it. |
| --> |
| |
| <property |
| name="AGG_APP_ARGS" |
| value="${AGGREGATOR_APP_ARGS_VALIDATEONLY}" /> |
| |
| <!-- |
| Important: on any non-production machines it is important to _not_ use |
| eclipse.p2.mirrors=false, so this value should be supplied by calling script's |
| properties. Note, we include '-vmargs' here, in case there are not any. Not |
| sure if the use of -vmargs _requires_ arguments or not, but probably would. |
| note: -Declipse.p2.MD5Check=false may be needed as a workaround for bug [253713] |
| (should not actually be required ... but have left note for historical reference) |
| note: rememeber that JAVA_6 should not be used for jar processor, see |
| for example, bug 244603 and bug 279596. |
| --> |
| <!-- -Dorg.eclipse.update.jarprocessor.pack200=${JAVA_6_HOME}/jre/bin -Declipse.p2.mirrors=false" --> |
| <property |
| name="BUILDER_VM_ARGS" |
| value="-Xmx1024m -Djava.io.tmpdir=${BUILD_HOME}/tmp" /> |
| <echo message="AGG_APP_ARGS: ${AGG_APP_ARGS}" /> |
| <echo message="BUILDER_VM_ARGS: -vmargs ${BUILDER_VM_ARGS}" /> |
| |
| <exec |
| executable="${eclipseExecutable}" |
| dir="${basedir}" |
| failonerror="false" |
| resultproperty="buildStatus"> |
| <arg value="-debug" /> |
| <arg value="file://${BUILD_HOME}/${BUILD_TOOLS}/p2options/.options" /> |
| <!-- |
| Adding -consolelog makes for too much, unneeded output, since the aggregator |
| produces its verbose own output, slightly cleaner. |
| <arg value="-consolelog" /> |
| --> |
| <arg value="-nosplash" /> |
| <arg value="-data" /> |
| <arg value="${eclipseWorkspace}" /> |
| <arg value="--launcher.suppressErrors" /> |
| <arg value="-application" /> |
| <arg value="org.eclipse.b3.cli.headless" /> |
| <arg value="aggregate" /> |
| <arg value="--buildId" /> |
| <arg value="${buildTimestamp}" /> |
| <arg line="${AGG_APP_ARGS}" /> |
| <arg value="-vm" /> |
| <arg value="${JAVA_6_HOME}/jre/bin" /> |
| <arg value="-vmargs" /> |
| <arg line="${BUILDER_VM_ARGS}" /> |
| </exec> |
| |
| <antcall target="checkStatus"> |
| <param |
| name="status" |
| value="${buildStatus}" /> |
| <param |
| name="message" |
| value="Aggregation Failed" /> |
| </antcall> |
| |
| <!-- setting dir to our workspace, so tests done on what "we" have --> |
| <antcall target="createBuildinfo" /> |
| |
| <ant |
| antfile="${BUILD_HOME}/testInstance/eclipse/dropins/${RELENG_TESTS_BUNDLE_ID}/runTests.xml" |
| target="validateOnly" |
| dir="${BUILD_HOME}" /> |
| |
| </target> |
| |
| <target |
| name="init" |
| depends="getBuildTimestamp, getJobName, getBUILD_HOME" |
| unless="isInitialized"> |
| |
| <fail |
| unless="release" |
| message="release must be specified for this script, such as -Drelease=mars" /> |
| |
| <property environment="env" /> |
| <!-- |
| This property file name is itself a property, so it can be overridden |
| on one machine versus another. We do it this way, instead of just specifying |
| -propertyFile on command line, so that the property values can be "nested" |
| in other property values and evaluated lazily. |
| --> |
| <property |
| name="aggrPropertyFile" |
| value="aggr.properties" /> |
| |
| <loadproperties srcfile="${aggrPropertyFile}" /> |
| |
| <!-- |
| rewriteRepositoryURLValue is an important variable, passed in through |
| production.properties. It is the trigger to change http:// values, to |
| file:// values. |
| |
| At one point, we needed, unrewriteMapsLine, to know how to "change back" and |
| now use commonRepositoryDownloadURLValue to know "what to look for" to change |
| to rewriteRepositoryURLValue, but this should not be needed to be changed, |
| since we make the strong assumption that, in *.b3aggrcon files, this string |
| occurs only in repository location attributes. If not true, more complex |
| parsing/replacement would be required. |
| --> |
| |
| <property |
| name="commonRepositoryDownloadURLValue" |
| value="http://download.eclipse.org" /> |
| |
| <!-- |
| Often, especially for Huson slaves, it is easiest to set hostForURL "manually" in properties or |
| on command line, e.g. -DhostForURL=hudson ... but, if not defined yet, we'll fallback to reasonable guess. |
| Note: not sure this is needed any longer? |
| --> |
| <property |
| name="hostForURL" |
| value="${HOSTNAME}" /> |
| |
| <condition property="localRepoExists"> |
| <available file="${BUILD_MODEL_DIR}/.git" /> |
| </condition> |
| |
| <condition property="localToolsRepoExists"> |
| <available file="${BUILD_TOOLS_DIR}/.git" /> |
| </condition> |
| |
| <condition property="localTestsRepoExists"> |
| <available file="${BUILD_TESTS_DIR}/.git" /> |
| </condition> |
| |
| <condition |
| property="commitOrBranch" |
| value="${commit}" |
| else="${BRANCH_BUILD}"> |
| <isset property="commit" /> |
| </condition> |
| |
| <condition |
| property="toolsCommitOrBranch" |
| value="${toolsCommit}" |
| else="${BRANCH_TOOLS}"> |
| <isset property="toolsCommit" /> |
| </condition> |
| |
| <condition |
| property="testsCommitOrBranch" |
| value="${testsCommit}" |
| else="${BRANCH_TESTS}"> |
| <isset property="testsCommit" /> |
| </condition> |
| |
| <condition |
| property="logURL" |
| value="${LOG_URL}" |
| else="${hostForURL}"> |
| <isset property="LOG_URL" /> |
| </condition> |
| |
| <property |
| name="eclipseWorkspace" |
| value="${BUILD_HOME}/eclipseworkingspace" /> |
| |
| <!-- |
| If the eclipse workspace exists, remove it, to make sure we are starting "fresh". Eclipse will create it. Be sure some "archive |
| artifacts" job saves it away, if desired, just for it's ".log", if nothing else. |
| --> |
| <delete |
| dir="${eclipseWorkspace}" |
| quiet="true" /> |
| |
| <property |
| name="javaIOTmpdir" |
| value="${BUILD_HOME}/tmp" /> |
| <mkdir dir="${javaIOTmpdir}" /> |
| <!-- |
| In case java.io.tmpdir is "passed in", technically, it is BUILDER_VM_ARGS |
| that is passed in from aggr.properties. So, make sure this value matches |
| the properties. |
| --> |
| |
| <property |
| name="eclipseExecutable" |
| value="${ECLIPSE_EXE}" /> |
| |
| <available |
| file="${ECLIPSE_HOME}/eclipse" |
| type="dir" |
| property="eclipseExists" /> |
| |
| <!-- |
| set installEclipseAndTools on command line to force a reinstall, |
| is only done if not installed yet. |
| --> |
| <condition property="installEclipseAndTools"> |
| <not> |
| <isset property="eclipseExists" /> |
| </not> |
| </condition> |
| |
| <!-- |
| saveAndInstallEclipseAndTools should only be true if "installEclipseAndTools" are |
| set on command line properties (and a version already exists). |
| --> |
| <condition property="saveAndInstallEclipseAndTools"> |
| <and> |
| <isset property="eclipseExists" /> |
| <isset property="installEclipseAndTools" /> |
| </and> |
| </condition> |
| |
| <available |
| file="${ECLIPSE_HOME_TEST}/eclipse/dropins/${RELENG_TESTS_DIR}" |
| type="dir" |
| property="eclipseTestsExists" /> |
| |
| <!-- |
| set installEclipseTests on command line to force a reinstall, |
| else is done only if not installed yet. |
| --> |
| <condition property="installEclipseTests"> |
| <not> |
| <isset property="eclipseTestsExists" /> |
| </not> |
| </condition> |
| <!-- |
| saveAndInstallEclipseTests should only be true if "installEclipseTests" are |
| set on command line properties (and a version already exists). |
| --> |
| <condition property="saveAndInstallEclipseTests"> |
| <and> |
| <isset property="eclipseTestsExists" /> |
| <isset property="installEclipseTests" /> |
| </and> |
| </condition> |
| <echo message="= = = Properties in init = = = " /> |
| <echo message="commit: ${commit}" /> |
| <echo message="toolsCommit: ${toolsCommit}" /> |
| <echo message="testsCommit: ${testsCommit}" /> |
| <echo message="aggrPropertyFile: ${aggrPropertyFile}" /> |
| <echo message="buildId: ${buildTimestamp}" /> |
| <echo message="user.dir: ${user.dir}" /> |
| <echo message="user.home: ${user.home}" /> |
| <echo message="BUILD_HOME (HUDSON workspace): ${BUILD_HOME}" /> |
| <echo message="Eclipse WORKSPACE: ${eclipseWorkspace}" /> |
| <echo message="PATH: ${env.PATH}" /> |
| <echo message="JAVA_HOME: ${JAVA_HOME}" /> |
| <echo message="hostForURL: ${hostForURL}" /> |
| <echo message="JOB_NAME: ${env.JOB_NAME}" /> |
| <echo message="BUILD_NUMBER: ${env.BUILD_NUMBER}" /> |
| <echo message="logURL: ${logURL}" /> |
| <echo message="ECLIPSE_EXE: ${ECLIPSE_EXE}" /> |
| <echo message="eclipseExists: ${eclipseExists}" /> |
| <echo message="eclipseTestsExists: ${eclipseTestsExists}" /> |
| <echo message="BUILDER_VM_ARGS: ${BUILDER_VM_ARGS}" /> |
| <echo message="javaIOTmpdir: ${javaIOTmpdir}" /> |
| <echo message=" = = = = = = = = = = = = " /> |
| <echoproperties /> |
| |
| <!-- |
| remove "build failed" status file, if there is one from previous run. |
| --> |
| <delete |
| failonerror="false" |
| quiet="true"> |
| <fileset dir="${BUILD_HOME}"> |
| <include name="buildStatusFailed" /> |
| </fileset> |
| </delete> |
| |
| <!-- |
| no need to initialize twice |
| --> |
| <property |
| name="isInitialized" |
| value="true" /> |
| |
| </target> |
| |
| <target |
| name="getBuildTimestamp" |
| depends="getHudsonTimestamp" |
| unless="buildTimestamp"> |
| <tstamp> |
| <format |
| property="buildTimestamp" |
| pattern="yyyy-MM-dd_HH-mm-ss" |
| timezone="UTC_TIME" /> |
| </tstamp> |
| <echo message="Using ant computed timestamp. Why?" /> |
| </target> |
| |
| <target |
| name="getHudsonTimestamp" |
| unless="buildTimestamp" |
| if="env.BUILD_ID"> |
| <property |
| name="buildTimestamp" |
| value="${env.BUILD_ID}" /> |
| <echo message="Using timestamp from Hudson Build ID: ${buildTimestamp}" /> |
| </target> |
| |
| <target |
| name="getJobName" |
| depends="getHudsonJobName" |
| unless="jobName"> |
| <property |
| name="jobName" |
| value="localbuild" /> |
| <echo message="Using default jobName: localbuild. Why?" /> |
| </target> |
| |
| <target |
| name="getHudsonJobName" |
| unless="jobName" |
| if="env.JOB_NAME"> |
| <property |
| name="jobName" |
| value="${env.JOB_NAME}" /> |
| <echo message="Using jobName from Hudson Builder: ${jobName}" /> |
| </target> |
| |
| <target |
| name="getBUILD_HOME" |
| depends="getJobName, getHudsonBUILD_HOME" |
| unless="BUILD_HOME"> |
| <property |
| name="BUILD_HOME" |
| value="${basedir}" /> |
| <echo message="Setting BUILD_HOME as basedir: ${BUILD_HOME}" /> |
| </target> |
| |
| <target |
| name="getHudsonBUILD_HOME" |
| depends="getWorkspace" |
| unless="BUILD_HOME"> |
| <property |
| name="BUILD_HOME" |
| value="${env.WORKSPACE}" /> |
| <echo message="Setting BUILD_HOME from Hudson Builder WORKSPACE: ${BUILD_HOME}" /> |
| </target> |
| |
| <target |
| name="getWorkspace" |
| unless="BUILD_HOME"> |
| <property |
| name="BUILD_HOME" |
| value="${WORKSPACE}" /> |
| <echo message="Setting BUILD_HOME from direct property of Hudson Builder WORKSPACE: ${BUILD_HOME}" /> |
| </target> |
| |
| <target |
| name="savePrevious" |
| depends="init" |
| if="saveAndInstallEclipseAndTools" |
| unless="previousSaved"> |
| |
| <!-- |
| Remember, old, saved versions may have to be maually cleaned up, |
| from time to time. But probably handled well enough by an occasional, |
| manual "clean workspace" from Hudson's web interface. |
| --> |
| <move |
| verbose="true" |
| todir="${ECLIPSE_HOME}/eclipse${buildTimestamp}"> |
| <fileset dir="${ECLIPSE_HOME}/eclipse" /> |
| </move> |
| |
| <property |
| name="previousSaved" |
| value="true" /> |
| |
| </target> |
| |
| <target |
| name="savePreviousTest" |
| depends="init" |
| if="saveAndInstallEclipseTests"> |
| <!-- remember, old ones have to be maually cleaned up, from time to time --> |
| <fail unless="buildTimestamp" /> |
| |
| <move todir="${ECLIPSE_HOME_TEST}/eclipse${buildTimestamp}"> |
| <fileset dir="${ECLIPSE_HOME_TEST}/eclipse" /> |
| </move> |
| |
| </target> |
| |
| <!-- Only rewrite, if a value has been provided --> |
| <!-- TODO: should make the "exclude" part automatic based on presence/abscense of "useTrusted" property --> |
| <target |
| name="rewriteRepositoryURL" |
| if="rewriteRepositoryURLValue"> |
| <replace |
| dir="${BUILD_MODEL_DIR}" |
| token="${commonRepositoryDownloadURLValue}" |
| value="${rewriteRepositoryURLValue}"> |
| <include name="*.b3aggrcon" /> |
| <!-- |
| <exclude name="ep.b3aggrcon"/> |
| <exclude name="equinox.b3aggrcon"/> |
| --> |
| </replace> |
| <echo message="Rewrote repository location URLs ..." /> |
| <echo message=" From: ${commonRepositoryDownloadURLValue}" /> |
| <echo message=" To: ${rewriteRepositoryURLValue}" /> |
| <echo message=" Excluding no files since no composite artifacts, just agregate" /> |
| <!-- |
| <echo message=" Excluding: ep.b3aggrcon"/> |
| <echo message=" Excluding: ep.b3aggrcon, equinox.b3aggrcon"/> |
| --> |
| |
| </target> |
| <target name="checkAvailableDirs"> |
| <available |
| file="${BUILD_MODEL_DIR}" |
| property="buildModelAvailable" /> |
| <available |
| file="${BUILD_TOOLS_DIR}" |
| property="toolsAvailable" /> |
| <available |
| file="${BUILD_TESTS_DIR}" |
| property="testsAvailable" /> |
| </target> |
| <target |
| name="createBuildinfo" |
| depends="checkAvailableDirs, gitRevParseModel, gitRevParseTools, gitRevParseTests"> |
| |
| <property |
| name="BUILD_INFO_DIR" |
| value="${AGGREGATOR_RESULTS}/final/buildInfo" /> |
| <mkdir dir="${BUILD_INFO_DIR}" /> |
| |
| <propertyfile file="${BUILD_INFO_DIR}/buildInfo.properties"> |
| <entry |
| key="commit" |
| value="${buildModelCommit}" /> |
| <entry |
| key="toolsCommit" |
| value="${toolsRepoCommit}" /> |
| <entry |
| key="testsCommit" |
| value="${testsRepoCommit}" /> |
| <entry |
| key="triggerJobName" |
| value="${env.JOB_NAME}" /> |
| <entry |
| key="triggerJobNumber" |
| value="${env.BUILD_NUMBER}" /> |
| <entry |
| key="triggerBuildTimestamp" |
| value="${buildTimestamp}" /> |
| <entry |
| key="triggerBuildId" |
| value="${buildTimestamp}" /> |
| </propertyfile> |
| <!-- echo the three key ones to end of log, just to have redundant record. --> |
| <echo message="commit: ${buildModelCommit}" /> |
| <echo message="toolsCommit: ${toolsRepoCommit}" /> |
| <echo message="testsCommit: ${testsRepoCommit}" /> |
| <echo message="triggerJobName: ${env.JOB_NAME}" /> |
| <echo message="triggerJobNumber: ${env.BUILD_NUMBER}" /> |
| <echo message="triggerBuildTimestamp: ${buildTimestamp}" /> |
| <echo message="triggerBuildId: ${buildTimestamp}" /> |
| <!-- just as well write out everything ... just in case something else needed in future. --> |
| <echoproperties destfile="${BUILD_INFO_DIR}/allInfo.properties" /> |
| </target> |
| |
| <target |
| name="gitRevParseModel" |
| if="buildModelAvailable"> |
| <git-rev-parse |
| repodir="${BUILD_MODEL_DIR}" |
| returnproperty="buildModelCommit" /> |
| <echo message="In target, buildModelCommit: ${buildModelCommit}" /> |
| </target> |
| <target |
| name="gitRevParseTools" |
| if="toolsAvailable"> |
| <git-rev-parse |
| repodir="${BUILD_TOOLS_DIR}" |
| returnproperty="toolsRepoCommit" /> |
| <echo message="In target, toolsRepoCommit: ${toolsRepoCommit}" /> |
| </target> |
| <target |
| name="gitRevParseTests" |
| if="testsAvailable"> |
| <git-rev-parse |
| repodir="${BUILD_TESTS_DIR}" |
| returnproperty="testsRepoCommit" /> |
| <echo message="In target, testsRepoCommit: ${testsRepoCommit}" /> |
| </target> |
| |
| |
| <!-- |
| No longer used ... we will rely on cleaning all of Hudson workspace manually, |
| from time to time, from Hudson't web interface. |
| But otherwise, rely on "BUILD_CLEAN" in aggregator to get a clean aggregation. |
| --> |
| <target |
| name="cleanPreviousAggregations" |
| unless="nocleanAggregations"> |
| <!-- we will clean the aggregation directory ourselves, as work around for bug 354321 |
| https://bugs.eclipse.org/bugs/show_bug.cgi?id=354321 |
| The bug has been fixed ... but ... we'll leave as is. Perhaps gives more |
| flexibility? |
| --> |
| <echo message="Removing any previous aggregation results, from ${AGGREGATOR_RESULTS}" /> |
| <delete |
| dir="${AGGREGATOR_RESULTS}" |
| failonerror="false" /> |
| <mkdir dir="${AGGREGATOR_RESULTS}" /> |
| </target> |
| |
| <target name="default"> |
| <echo message="There is no default target for this build file" /> |
| </target> |
| </project> |