<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 | |
--> | |
<antcall target="signDTPJars"/> | |
<unpackUpdateJars site="${tmpsite}/eclipse" output="${tmpsite}/new/eclipse"/> | |
<copy todir="${tmpsite}/new/eclipse"> | |
<fileset dir="${tmpsite}/eclipse" includes="*.html,readme/**" /> | |
</copy> | |
<!-- | |
<antcall target="p2.test"/> | |
--> | |
</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"/> | |
</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="readme/**"/> | |
<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> | |
<!-- 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}/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 file="adb.log" todir="${postingDirectory}/${buildId}"/> | |
<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"> | |
<property file="${buildDirectory}/finalFeaturesVersions.properties"/> | |
<mkdir dir="${postingDirectory}/${buildId}/UpdateSite"/> | |
<property name="updateSiteDir" value="${postingDirectory}/${buildId}/UpdateSite/eclipse"/> | |
<!-- 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.0" 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="${buildDirectory}/${buildId}/dtp-all-${package.version}.zip" | |
dest="${postingDirectory}/${buildId}/UpdateSite"/> | |
<unzip src="${buildDirectory}/${buildId}/dtp-enablement-all-${package.version}.zip" | |
dest="${postingDirectory}/${buildId}/UpdateSite" overwrite="true"/> | |
<copy todir="${postingDirectory}/${buildId}/UpdateSite/eclipse"> | |
<fileset dir="${eclipse.build.configs}/../../extras"> | |
<include name="pack.properties"/> | |
</fileset> | |
</copy> | |
<delete includeemptydirs="true"> | |
<fileset dir="${postingDirectory}/${buildId}/UpdateSite/eclipse/features"> | |
<include name="org.eclipse.datatools.sdk-all.feature_*/**"/> | |
</fileset> | |
<fileset dir="${postingDirectory}/${buildId}/UpdateSite/eclipse"> | |
<include name="readme/**"/> | |
<include name="*.html"/> | |
</fileset> | |
</delete> | |
<!-- push p2 repo to local update site for testing --> | |
<antcall target="genP2CompositeUpdateSite"/> | |
</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> | |
<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}/UpdateSite/"> | |
<jvmarg value="-Dorg.eclipse.update.jarprocessor.pack200=${eclipse.build.configs}/../../extras"/> | |
<arg line="-application org.eclipse.update.core.siteOptimizer -verbose"/> | |
<arg line="-jarProcessor -outputDir ${repo} -processAll -pack eclipse"/> | |
</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"/> | |
<!--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}" /> | |
</target> | |
</project> |