blob: 810bada8a9958914be08cfe6ce5d755d88012a45 [file] [log] [blame]
<project default="main">
<!--
Steps
Ant properties available at runtime:
- eclipse.pdebuild.scripts: the org.eclipse.eclipse.pdebuild.scripts folder
- eclipse.pdebuild.home: the root folder of pde build
- eclipse.pdebuild.templates: the templates folder
-->
<!--build monitoring information: e-mail, smtp server, build label-->
<property file="monitor.properties"/>
<!--location of PDE Build configuration files for builder and packager-->
<property name="eclipse.build.configs" value="${basedir}/eclipse/buildConfigs" />
<property name="sdkHelper" location="${eclipse.build.configs}/eclipse/helper.xml"/>
<property name="base.builder" value="${basedir}/../BaseBuilder" />
<!--location of properties file containing last tag used for integration build-->
<property name="mapTag.properties" value="/home/users/releng/buildTools/eclipse33/mapTag.properties"/>
<!--location of properties file containing last performance reference test information-->
<property name="ref.properties" value="/home/users/releng/buildTools/eclipse.perf/ref33.properties"/>
<!--location of test update site-->
<property file="${ref.properties}"/>
<!--default buildDirectory-->
<property name="buildDirectory" value="${basedir}/../src" />
<!--default location for build output, parent to ${buildId}-->
<property name="postingDirectory" value="${buildDirectory}" />
<!--remote sign machine login infomation-->
<property name="username.sign" value="" />
<property name="password.sign" value="" />
<property name="hostname.sign" value="" />
<property name="home.dir" value="" />
<property name="sign.dir" value="" />
<target name="main" depends="init">
<antcall target="buildDtpSdkAllFeature"/>
<antcall target="buildDtpEnablementAllFeature"/>
<antcall target="buildDtpIncubationAllFeature"/>
<ant antfile="${eclipse.build.configs}/../helper.xml" target="verifyCompile" />
<antcall target="integrateDtpFeatures"/>
<antcall target="Package"/>
<antcall target="GenerateUpdateSite"/>
</target>
<target name="init">
<ant antfile="build.xml" target="init" />
<property file="${buildDirectory}/label.properties" />
<condition property="fetchTag" value="HEAD">
<equals arg1="${buildType}" arg2="N" />
</condition>
<condition property="forceContextQualifier" value="${buildId}">
<equals arg1="${buildType}" arg2="N" />
</condition>
<condition property="generateFeatureVersionSuffix" value="false">
<equals arg1="${buildType}" arg2="N" />
</condition>
<!--compiler args-->
<property name="compilerArg" value="-enableJavadoc -encoding utf-8 -warn:-discouraged,forbidden" />
<property name="javacSource" value="1.5" />
<property name="javacTarget" value="1.5" />
<property name="javacDebugInfo" value="true" />
<property name="javacFailOnError" value="true" />
<property name="javacVerbose" value="false" />
<property name="logExtension" value=".xml" />
<!--this property required as of Eclipse 3.0 stream builds > 20031126 -->
<property name="buildingOSGi" value="true" />
<!--zip args-->
<property name="zipargs" value="-y -qq" />
<!--unzip args-->
<property name="unzipArgs" value="-qq" />
</target>
<target name="buildDtpEnablementAllFeature">
<ant antfile="build.xml" dir="${basedir}">
<property name="component" value="${eclipse.build.configs}/dtp.enablement.all" />
</ant>
</target>
<target name="buildDtpIncubationAllFeature">
<ant antfile="build.xml" dir="${basedir}">
<property name="component" value="${eclipse.build.configs}/dtp.incubation.all" />
</ant>
</target>
<target name="buildDtpSdkAllFeature">
<!-- build dtp sdk feature -->
<ant antfile="build.xml" dir="${basedir}">
<property name="component" value="${eclipse.build.configs}/dtp.sdk.all" />
</ant>
</target>
<target name="buildDtpEnablementFeature">
<ant antfile="build.xml" dir="${basedir}">
<property name="component" value="${eclipse.build.configs}/dtp.enablement" />
</ant>
</target>
<target name="buildUpdateSite" if="updateSite">
<ant antfile="${eclipse.build.configs}/../helper.xml" target="buildUpdateJars" />
</target>
<target name="integrateDtpFeatures">
<property name="tmpsite" value="${buildDirectory}/tmpsite" />
<mkdir dir="${tmpsite}/new/eclipse/features" />
<mkdir dir="${tmpsite}/new/eclipse/plugins" />
<!-- unzip all dtp packages into same directory -->
<unzip src="${buildDirectory}/${buildId}/dtp-all-${package.version}.zip" dest="${buildDirectory}/tmpsite"/>
<unzip src="${buildDirectory}/${buildId}/dtp-enablement-all-${package.version}.zip" dest="${buildDirectory}/tmpsite" overwrite="true"/>
<unzip src="${buildDirectory}/${buildId}/dtp-incubation-all-${package.version}.zip" dest="${buildDirectory}/tmpsite" overwrite="true"/>
<!-- TODO:
1. zip features/ plugins/ pack.properties under ${buildDirectory}/tmpsite/eclipse as dtp-all-unsign.zip
2. sign features, plugins under ${buildDirectory}/tmpsite
3. Download back, replace the unsigned version in ${buildDirectory}/tmpsite/eclipse
4. Keep the signed, packed zip under ${buildDirectory}/, name as dtp-all-signed.zip
-->
<zip destfile="${tmpsite}/dtp-p2repo.zip">
<fileset dir="${tmpsite}/eclipse" includes="features/**"/>
<fileset dir="${tmpsite}/eclipse" includes="plugins/**"/>
</zip>
<antcall target="signDTPJars"/>
<unpackUpdateJars site="${tmpsite}/eclipse" output="${tmpsite}/new/eclipse"/>
<copy todir="${tmpsite}/new/eclipse">
<fileset dir="${tmpsite}/eclipse" includes="*.html" />
</copy>
</target>
<target name="p2.test">
<p2.generator source="${reposource}" compress="true"
append="true" flavor="tooling"
metadataRepository="file:${tmpsite}/new/eclipse"
artifactRepository="file:${tmpsite}/new/eclipse"
metadataRepositoryName="DTP test"
artifactRepositoryName="DTP test"
publishArtifacts="true" p2OS="linux" mode="incremental" />
</target>
<target name="signDTPJars" unless="noSign">
<zip destfile="${tmpsite}/dtp-all-unsign.zip">
<fileset dir="${tmpsite}/eclipse" includes="features/**"/>
<fileset dir="${tmpsite}/eclipse" includes="plugins/**"/>
<fileset dir="${eclipse.build.configs}/../../extras" includes="pack.properties"/>
</zip>
<antcall target="SignJars">
<param name="source.dir" value="${tmpsite}"/>
<param name="source.name" value="dtp-all-unsign.zip"/>
<param name="target.dir" value="${tmpsite}"/>
<param name="target.name" value="dtp-all-signed.zip"/>
</antcall>
<unzip src="${tmpsite}/dtp-all-signed.zip" dest="${tmpsite}/eclipse"/>
<copy file="${tmpsite}/dtp-all-signed.zip" tofile="${tmpsite}/dtp-p2repo.zip" overwrite="true"/>
</target>
<target name="SignJars">
<tstamp prefix="timestamp">
<format property="upload" pattern="yyyy-MM-dd HH:mm:ss" locale="en" />
</tstamp>
<echo message="[${timestamp.upload}] Upload unsign package to signing server ..."/>
<scp todir="${username.sign}:${password.sign}@${hostname.sign}:${home.dir}" trust="true">
<fileset dir="${source.dir}" includes="${source.name}"/>
</scp>
<tstamp prefix="timestamp">
<format property="sign.start" pattern="yyyy-MM-dd HH:mm:ss" locale="en" />
</tstamp>
<echo message="[${timestamp.sign.start}] Upload finished and start jarsigning, wait for 25 mins."/>
<sshexec host="${hostname.sign}" username="${username.sign}" password="${password.sign}" trust="true"
command="cd ${sign.dir};cp ${home.dir}/${source.name} ./;sign ${source.name} nomail;"/>
<sleep minutes="25"/>
<tstamp prefix="timestamp">
<format property="download.start" pattern="yyyy-MM-dd HH:mm:ss" locale="en" />
</tstamp>
<echo message="[${timestamp.download.start}] Download signed jars from server starts"/>
<scp localtofile="${target.dir}/${target.name}" trust="true"
file="${username.sign}:${password.sign}@${hostname.sign}:${sign.dir}/${source.name}"/>
<tstamp prefix="timestamp">
<format property="download.end" pattern="yyyy-MM-dd HH:mm:ss" locale="en" />
</tstamp>
<echo message="[${timestamp.download.end}] Download signed jars from server ends"/>
<condition property="CompareSignPack" value="true">
<filesmatch file1="${source.dir}/${source.name}"
file2="${target.dir}/${target.name}"/>
</condition>
<antcall target="DownloadSignedPackAgain">
<param name="source.name" value="${source.name}"/>
<param name="target.dir" value="${target.dir}"/>
<param name="target.name" value="${target.name}"/>
</antcall>
</target>
<target name="DownloadSignedPackAgain" if="CompareSignPack">
<tstamp prefix="timestamp">
<format property="download.again.now" pattern="yyyy-MM-dd HH:mm:ss" locale="en" />
</tstamp>
<echo message="[${timestamp.download.again.now}] Sign check failed and wait for 10 mins to download again"/>
<sleep minutes="10"/>
<tstamp prefix="timestamp">
<format property="download.again.start" pattern="yyyy-MM-dd HH:mm:ss" locale="en" />
</tstamp>
<echo message="[${timestamp.download.again.start}] Download signed package again"/>
<scp localtofile="${target.dir}/${target.name}" trust="true"
file="${username.sign}:${password.sign}@${hostname.sign}:${sign.dir}/${source.name}"/>
<tstamp prefix="timestamp">
<format property="download.again.end" pattern="yyyy-MM-dd HH:mm:ss" locale="en" />
</tstamp>
<echo message="[${timestamp.download.again.end}] Download signed package ends. Start packaging..."/>
</target>
<target name="Package">
<property file="${buildDirectory}/finalPluginsVersions.properties"/>
<!-- repackage source features and plugins -->
<delete includeemptydirs="true">
<fileset dir="${buildDirectory}/tmpsite/eclipse/features">
<include name="org.eclipse.datatools.sdk-all.feature_*/**"/>
</fileset>
<fileset dir="${buildDirectory}/tmpsite/new/eclipse/features">
<include name="org.eclipse.datatools.sdk-all.feature_*/**"/>
</fileset>
</delete>
<!-- package sdk package -->
<zip destfile="${buildDirectory}/${buildId}/dtp-sdk-${package.version}.zip">
<zipfileset dir="${buildDirectory}/tmpsite/new/eclipse/features" prefix="eclipse/features">
<include name="**"/>
<exclude name="*.ecore.feature*/**"/>
<exclude name="*.ecore.sdk.feature*/**"/>
</zipfileset>
<zipfileset dir="${buildDirectory}/tmpsite/new/eclipse/plugins" prefix="eclipse/plugins">
<include name="**"/>
<exclude name="org.eclipse.datatools.enablement.oda.ecore*/**"/>
</zipfileset>
<zipfileset dir="${buildDirectory}/tmpsite/new/eclipse" prefix="eclipse">
<include name="*.html"/>
</zipfileset>
</zip>
<!-- package non-sdk package -->
<zip destfile="${buildDirectory}/${buildId}/dtp-${package.version}.zip">
<zipfileset dir="${buildDirectory}/tmpsite/new/eclipse/features" prefix="eclipse/features">
<include name="**"/>
<exclude name="*sdk-all.feature*/**"/>
<exclude name="*sdk.feature*/**"/>
<exclude name="*.source_*/**"/>
<exclude name="org.eclipse.datatools.enablement.oda.ecore*/**"/>
</zipfileset>
<zipfileset dir="${buildDirectory}/tmpsite/new/eclipse/plugins" prefix="eclipse/plugins">
<include name="**"/>
<exclude name="*.source_*/**"/>
<exclude name="org.eclipse.datatools.doc.isv_*.jar"/>
<exclude name="org.eclipse.datatools.connectivity.ui.templates_*.jar"/>
<exclude name="org.eclipse.datatools.enablement.oda.ecore*/**"/>
</zipfileset>
<zipfileset dir="${buildDirectory}/tmpsite/new/eclipse" prefix="eclipse">
<include name="readme/**"/>
<include name="*.html"/>
</zipfileset>
</zip>
<!-- package incubator-sdk package -->
<zip destfile="${buildDirectory}/${buildId}/dtp-incubator-sdk-${package.version}.zip">
<zipfileset dir="${buildDirectory}/tmpsite/new/eclipse/features" prefix="eclipse/features">
<include name="org.eclipse.datatools.enablement.oda.ecore.*/**"/>
</zipfileset>
<zipfileset dir="${buildDirectory}/tmpsite/new/eclipse/plugins" prefix="eclipse/plugins">
<include name="org.eclipse.datatools.enablement.oda.ecore*/**"/>
</zipfileset>
<zipfileset dir="${buildDirectory}/tmpsite/new/eclipse" prefix="eclipse">
<include name="readme/**"/>
<include name="*.html"/>
</zipfileset>
</zip>
<!-- package incubator package -->
<zip destfile="${buildDirectory}/${buildId}/dtp-incubator-${package.version}.zip">
<zipfileset dir="${buildDirectory}/tmpsite/new/eclipse/features" prefix="eclipse/features">
<include name="org.eclipse.datatools.enablement.oda.ecore.feature_*/**"/>
<exclude name="org.eclipse.datatools.enablement.oda.ecore.feature.source_*/**"/>
<exclude name="org.eclipse.datatools.enablement.oda.ecore.sdk.feature_*/**"/>
</zipfileset>
<zipfileset dir="${buildDirectory}/tmpsite/new/eclipse/plugins" prefix="eclipse/plugins">
<include name="org.eclipse.datatools.enablement.oda.ecore*/**"/>
<exclude name="org.eclipse.datatools.enablement.oda.ecore*source*/**"/>
</zipfileset>
<zipfileset dir="${buildDirectory}/tmpsite/new/eclipse" prefix="eclipse">
<include name="readme/**"/>
<include name="*.html"/>
</zipfileset>
</zip>
<!-- package source package -->
<zip destfile="${buildDirectory}/${buildId}/dtp-source-${package.version}.zip">
<zipfileset dir="${buildDirectory}">
<include name="*.txt"/>
<include name="*.properties"/>
<include name="*.xml"/>
</zipfileset>
</zip>
<!-- copy to output directory -->
<mkdir dir="${postingDirectory}/${buildId}" />
<copy file="${buildDirectory}/${buildId}/dtp-sdk-${package.version}.zip" todir="${postingDirectory}/${buildId}"/>
<copy file="${buildDirectory}/${buildId}/dtp-${package.version}.zip" todir="${postingDirectory}/${buildId}"/>
<copy file="${buildDirectory}/${buildId}/dtp-incubator-sdk-${package.version}.zip" todir="${postingDirectory}/${buildId}"/>
<copy file="${buildDirectory}/${buildId}/dtp-incubator-${package.version}.zip" todir="${postingDirectory}/${buildId}"/>
<copy file="${buildDirectory}/${buildId}/dtp-source-${package.version}.zip" todir="${postingDirectory}/${buildId}"/>
<copy file="${buildDirectory}/directory.txt" todir="${postingDirectory}/${buildId}"/>
<copy tofile="${postingDirectory}/finalFeaturesVersions.properties" file="${buildDirectory}/finalFeaturesVersions.properties" overwrite="true" />
<copy tofile="${postingDirectory}/monitor.properties" file="monitor.properties" overwrite="true" />
<copy todir="${postingDirectory}/${buildId}">
<fileset dir="." includes="*.log"/>
</copy>
<tstamp prefix="timestamp">
<format property="package.end" pattern="yyyy-MM-dd HH:mm:ss" locale="en" />
</tstamp>
<echo message="[${timestamp.package.end}] Packaging finished."/>
</target>
<target name="GenerateUpdateSite" unless="HQ.BIRT.skip">
<property file="${buildDirectory}/finalFeaturesVersions.properties"/>
<property name="tmpsite" value="${buildDirectory}/tmpsite" />
<mkdir dir="${postingDirectory}/${buildId}/UpdateSite"/>
<mkdir dir="${postingDirectory}/${buildId}/pack200site"/>
<property name="updateSiteDir" value="${postingDirectory}/${buildId}/UpdateSite"/>
<property name="pack200Dir" value="${postingDirectory}/${buildId}/pack200site"/>
<!-- replace the feature version in site.xml -->
<copy file="${eclipse.build.configs}/../../extras/site.xml" tofile="${updateSiteDir}/site.xml" overwrite="true"/>
<replace file="${updateSiteDir}/site.xml" value="1.7.2" token="@RELEASE.VERSION@"/>
<replace file="${updateSiteDir}/site.xml" value="${org.eclipse.datatools.enablement.sdk.feature}" token="@org.eclipse.datatools.enablement.sdk.feature@"/>
<replace file="${updateSiteDir}/site.xml" value="${org.eclipse.datatools.sdk.feature}" token="@org.eclipse.datatools.sdk.feature@"/>
<!-- push update site to output directory -->
<unzip src="${tmpsite}/dtp-p2repo.zip"
dest="${postingDirectory}/${buildId}/UpdateSite" overwrite="true"/>
<copy todir="${postingDirectory}/${buildId}/UpdateSite" overwrite="true">
<fileset dir="${eclipse.build.configs}/../../extras">
<include name="pack.properties"/>
</fileset>
</copy>
<delete includeemptydirs="true" failonerror="false">
<fileset dir="${postingDirectory}/${buildId}/UpdateSite/features">
<include name="org.eclipse.datatools.sdk-all.feature_*/**"/>
</fileset>
<fileset dir="${postingDirectory}/${buildId}/UpdateSite">
<include name="*.html"/>
</fileset>
</delete>
<!-- push p2 repo to local update site for testing -->
<antcall target="genP2CompositeUpdateSite"/>
<!-- zip p2 repo-->
<zip destfile="${postingDirectory}/${buildId}/dtp-p2repo-${package.version}.zip">
<zipfileset dir="${postingDirectory}/${buildId}/UpdateSite/features/" prefix="features">
<include name="*.jar"/>
<include name="*.pack.gz"/>
</zipfileset>
<zipfileset dir="${postingDirectory}/${buildId}/UpdateSite/plugins/" prefix="plugins">
<include name="*.jar"/>
<include name="*.pack.gz"/>
</zipfileset>
<zipfileset dir="${postingDirectory}/${buildId}/UpdateSite/">
<include name="*.jar"/>
<include name="site.xml"/>
</zipfileset>
</zip>
<delete includeemptydirs="true" failonerror="false">
<fileset dir="${postingDirectory}/${buildId}">
<include name="UpdateSite/**"/>
</fileset>
</delete>
</target>
<target name="GenerateCVSChangeLog">
<ant antfile="${eclipse.build.configs}/../../extras/cvschanges.xml"/>
</target>
<target name="genP2CompositeUpdateSite">
<property name="compsite.site" value="${postingDirectory}/../../../../UpdateSite/dtp" />
<property name="repo" value="${compsite.site}/${buildId}" />
<property name="p2.repo.name" value="DTP Update Site" />
<mkdir dir="${repo}" />
<!-- generate pack200 -->
<replace file="${eclipse.build.configs}/../../extras/pack200" token="@pack200@" value="${jvm15_home}/bin/pack200"/>
<chmod file="${eclipse.build.configs}/../../extras/pack200" perm="755"/>
<exec executable="dos2unix" dir="${eclipse.build.configs}/../../extras">
<arg line=" pack200" />
</exec>
<!-- create pack200 -->
<java jar="${basedir}/../org.eclipse.releng.basebuilder/plugins/org.eclipse.equinox.launcher.jar"
fork="true"
timeout="10800000"
jvm="${jvm15_home}/bin/java"
failonerror="true"
maxmemory="512m"
dir="${postingDirectory}/${buildId}/">
<jvmarg value="-Dorg.eclipse.update.jarprocessor.pack200=${eclipse.build.configs}/../../extras"/>
<arg line="-application org.eclipse.update.core.siteOptimizer -verbose"/>
<arg line="-jarProcessor -outputDir ${pack200Dir} -processAll -pack UpdateSite"/>
</java>
<!-- generator features and plugins metadata -->
<!--p2.generator updatesite="${repo}" compress="true" append="true" flavor="tooling"
metadataRepository="file:${repo}"
artifactRepository="file:${repo}"
metadataRepositoryName="${p2.repo.name}"
artifactRepositoryName="${p2.repo.name}"
publishArtifacts="true" p2OS="linux" mode="incremental"
site="file:${updateSiteDir}/site.xml"/-->
<copy file="${updateSiteDir}/site.xml" todir="${pack200Dir}"/>
<java jar="${basedir}/../org.eclipse.releng.basebuilder/plugins/org.eclipse.equinox.launcher.jar"
fork="true"
timeout="10800000"
jvm="${jvm15_home}/bin/java"
failonerror="true"
maxmemory="512m">
<arg line="-application org.eclipse.equinox.p2.publisher.UpdateSitePublisher"/>
<arg line="-metadataRepository file:${repo}"/>
<arg line="-artifactRepository file:${repo}"/>
<arg line="-source ${pack200Dir}"/>
<arg line="-configs gtk.linux.x86"/>
<arg line="-compress"/>
<arg line="-reusePack200Files"/>
<arg line="-publishArtifacts"/>
</java>
<copy todir="${repo}/features">
<fileset dir="${pack200Dir}/features" includes="*.pack.gz"/>
</copy>
<!--try create composite repository-->
<p2.composite.artifact.repository.create location="file://${compsite.site}" name="${p2.repo.name}" compressed="true" failOnExists="false" />
<p2.composite.metadata.repository.create location="file://${compsite.site}" name="${p2.repo.name}" compressed="true" failOnExists="false" />
<!--add childRepo to composite repo-->
<p2.composite.artifact.repository.add location="file://${compsite.site}" child="${buildId}" />
<p2.composite.metadata.repository.add location="file://${compsite.site}" child="${buildId}" />
<!-- copy p2 metadata to build directory -->
<copy todir="${postingDirectory}/${buildId}/UpdateSite" overwrite="true">
<fileset dir="${compsite.site}/${buildId}">
<include name="features/**"/>
<include name="plugins/**"/>
<include name="*.jar"/>
</fileset>
</copy>
</target>
</project>