blob: 138340bc6e03d3828f12fcbc2eb7cfd5bda0b3f6 [file] [log] [blame]
david_williamsb1149ef2006-05-25 22:06:10 +00001<?xml version="1.0" encoding="UTF-8"?>
david_williamsd957bc32006-11-20 00:07:15 +00002<project
david_williams42f9b242006-11-27 18:45:14 +00003 name="buildutilities"
david_williamsd957bc32006-11-20 00:07:15 +00004 default="nodefault"
5 basedir=".">
david_williams072c6f72006-05-19 10:50:58 +00006
david_williams42f9b242006-11-27 18:45:14 +00007 <!-- = = = standard properties pattern = = = -->
david_williamsc11999c2008-02-19 02:02:32 +00008 <!--
9 Note to be cross-platform, "environment variables" are only appropriate for
10 some variables, e.g. ones we set, since properties are case sensitive, even if
11 the environment variables on your operating system are not, e.g. it will
david_williams67d27702006-11-20 16:36:52 +000012 be ${env.Path} not ${env.PATH} on Windows -->
david_williamsb0f0e6c2008-02-10 06:22:40 +000013 <property
14 environment="env" />
david_williams403beae2007-12-09 02:10:40 +000015
david_williamsc11999c2008-02-19 02:02:32 +000016 <!--
david_williams403beae2007-12-09 02:10:40 +000017 Let users override standard properties, if desired.
david_williamsc11999c2008-02-19 02:02:32 +000018 If directory, file, or some properties do not exist,
david_williams403beae2007-12-09 02:10:40 +000019 then standard properties will be used.
20 -->
21 <property
22 file="${env.LOCAL_BUILD_PROPERTIES_DIR}/${ant.project.name}.properties" />
david_williams67d27702006-11-20 16:36:52 +000023
david_williams42f9b242006-11-27 18:45:14 +000024 <!-- = = = end standard properties pattern = = = -->
25
26
27 <!-- if not otherwise set, use these default properties -->
david_williamsd957bc32006-11-20 00:07:15 +000028 <property
29 name="debugOptimization"
david_williams67f506a2008-05-17 19:11:57 +000030 value="true" />
david_williamsc11999c2008-02-19 02:02:32 +000031
32 <!-- we should always normalize ("-repack") jars. For ones which are not supposed
33 to be normalized, such as pre-existing jars, they need to be added to the pack.properties file
34 (see the updatePackProperties task). Note: signing does the -repack when we sign.
35 -->
david_williams42f9b242006-11-27 18:45:14 +000036 <property
37 name="normalizeJarFiles"
david_williamsb0f0e6c2008-02-10 06:22:40 +000038 value="true" />
david_williamsc11999c2008-02-19 02:02:32 +000039
40 <!-- we'll currently pack jar files, just as part of "debugging" to help sanity check
41 all is working as expected. Eventually we may want to provide some service there jar files
42 in the bundles directory are packed ... but, there's no known use-case for this so far
43 -->
david_williams42f9b242006-11-27 18:45:14 +000044 <property
45 name="packJarFiles"
46 value="false" />
david_williamsc11999c2008-02-19 02:02:32 +000047 <!--
48 Let tmp site be global.
49 Note: we use this odd "tmpsite-archiveName-temp" to make sure unique directories,
50 since in some cases these directories can not be deleted from ant, see
51 https://bugs.eclipse.org/bugs/show_bug.cgi?id=142926,
52 and since directory names ending in .zip are misinterpreted by jarProcessor, see
53 https://bugs.eclipse.org/bugs/show_bug.cgi?id=143385
54 But, its handy to do as unique directories anyway, since if a larger
55 process calls this mulitiple times, on different zips, and if debugging
56 is turnned on, then all the tmpsite directories are left on disk for
57 post-build inspection.
david_williamsb8ba26a2006-11-28 08:31:31 +000058 -->
david_williams403beae2007-12-09 02:10:40 +000059 <property
60 name="tmpsite"
61 value="${buildDirectory}/tmpsite-${archiveName}-temp" />
david_williamsc11999c2008-02-19 02:02:32 +000062 <!--
63 ==================================================================================
64 Primary Task: unpackUpdateJarsAndCreateZippedPackages
65 This task takes a zip file of update jars, which is created by PDE build
66 process, and "converts" it to a traditional zip file, processing the
67 jars with pack200 for better compression on update sites.
68 ==================================================================================
david_williamsb0f0e6c2008-02-10 06:22:40 +000069 -->
david_williamsd957bc32006-11-20 00:07:15 +000070 <target
71 name="unpackUpdateJarsAndCreateZippedPackages"
72 depends="init">
david_williamsc11999c2008-02-19 02:02:32 +000073 <!--
74 ==================================================================================
75 1. make "backup" copy of original zip, if debugging,
76 since might be needed for comparison
77 ==================================================================================
david_williamsb0f0e6c2008-02-10 06:22:40 +000078 -->
david_williamsa2716252008-02-19 04:01:58 +000079 <!-- add pack.properties file that specifies effort level, and files not to sign -->
80 <exec
david_williams8463cc52008-05-17 19:04:38 +000081 dir="${wtp.builder.home}/scripts/build"
david_williamsa2716252008-02-19 04:01:58 +000082 executable="zip">
83 <arg
david_williams8463cc52008-05-17 19:04:38 +000084 line="-r ${buildDirectory}/${buildLabel}/${archiveName} pack.properties" />
david_williamsa2716252008-02-19 04:01:58 +000085 </exec>
david_williams8463cc52008-05-17 19:04:38 +000086
david_williams8463cc52008-05-17 19:04:38 +000087 <antcall
david_williamsb0f0e6c2008-02-10 06:22:40 +000088 target="makeBackupCopyForDebugging" />
david_williams072c6f72006-05-19 10:50:58 +000089
david_williamsc11999c2008-02-19 02:02:32 +000090 <!--
91 ==================================================================================
92 2. normalize jars here, from a zip file of update jars.
93 The normalized jars are put in zip file of same name, in a directory
94 named normalized
95 ==================================================================================
david_williamsb0f0e6c2008-02-10 06:22:40 +000096 -->
david_williams403beae2007-12-09 02:10:40 +000097 <echo
98 level="debug"
99 message="normalize jars if desired ..." />
david_williamsb0f0e6c2008-02-10 06:22:40 +0000100 <antcall
101 target="normalizeJarFiles" />
david_williams403beae2007-12-09 02:10:40 +0000102 <echo
103 level="debug"
104 message="normalized jars: ${normalizeJarFiles}" />
david_williamsc11999c2008-02-19 02:02:32 +0000105 <!--
106 ==================================================================================
107 3. sign the jars in archive file, if desired
108 ==================================================================================
david_williamsb0f0e6c2008-02-10 06:22:40 +0000109 -->
110 <ant
111 antfile="${wtp.builder.home}/scripts/build/signjars.xml" />
david_williamsc11999c2008-02-19 02:02:32 +0000112 <!--
113 ==================================================================================
david_williamsb0f0e6c2008-02-10 06:22:40 +0000114 4. unzip the normalized jars in the zip file produced in step 1., to the
david_williamsc11999c2008-02-19 02:02:32 +0000115 directory {tmpsite} for further processing. plugins and features
116 end up in {tmpsite}/eclipse
117 ==================================================================================
david_williamsb0f0e6c2008-02-10 06:22:40 +0000118 -->
david_williams403beae2007-12-09 02:10:40 +0000119 <echo
120 level="debug"
121 message="unzip normalized update jars to a holding place" />
david_williams403beae2007-12-09 02:10:40 +0000122 <echo
123 level="info"
124 message="archiveDir: ${archiveDir}" />
125 <unzip
126 dest="${tmpsite}"
david_williams42f9b242006-11-27 18:45:14 +0000127 src="${archiveDir}/${archiveName}" />
david_williamsc11999c2008-02-19 02:02:32 +0000128 <!--
129 ==================================================================================
130 5 copy all update jars to a common update site directory, if desired.
131 Note: overwite is false to avoid "touching" files already produced and
132 processed be previous steps in a larger build process. This means the updateSite
133 *must* be completely clean before the larger process starts.
134 ==================================================================================
david_williamsb0f0e6c2008-02-10 06:22:40 +0000135 -->
136 <antcall
137 target="makeCopyForUpdate" />
david_williamsc11999c2008-02-19 02:02:32 +0000138 <!--
139 ==================================================================================
140 6. for modularity, pack200 is done here, optionally.
141 The resulting gz files are produced in update site directory.
142 This is optional since processing is expensive to do for every build. Only need
143 when ready to declare an update site, and, for exmaple, no need to do for "local"
144 or HEAD builds since developers wouldn't normally need it for a quick check of a build.
145 ==================================================================================
david_williamsb0f0e6c2008-02-10 06:22:40 +0000146 -->
david_williams403beae2007-12-09 02:10:40 +0000147 <echo
148 level="debug"
149 message="create pack files if desired ..." />
david_williamsb0f0e6c2008-02-10 06:22:40 +0000150 <antcall
151 target="createPackFilesIfDesired" />
david_williams403beae2007-12-09 02:10:40 +0000152 <echo
153 level="debug"
154 message="created pack files: ${packJarFiles}" />
david_williamsc11999c2008-02-19 02:02:32 +0000155 <!--
156 ==================================================================================
157 7. now create traditional zip file of unpacked jars. This type of
158 "unpack" is not related to pack200, but instead means to unpack
159 those jars that are supposed to be unpacked based on feature defintion,
160 if the plugin's unpack attribute is set to true in the feature
161 ==================================================================================
david_williamsb0f0e6c2008-02-10 06:22:40 +0000162 -->
david_williamsb1149ef2006-05-25 22:06:10 +0000163 <!-- use releng task of unpackUpdateJars -->
david_williamsd957bc32006-11-20 00:07:15 +0000164 <unpackUpdateJars
165 site="${tmpsite}/eclipse"
166 output="${tmpsite}/unpacked/eclipse" />
david_williamse9c5b5a2006-05-24 17:17:33 +0000167 <!-- add copy of legal doc's here, product.ini, etc., before re-zipping -->
david_williamsd957bc32006-11-20 00:07:15 +0000168 <copy
169 todir="${tmpsite}/unpacked/eclipse"
170 overwrite="false">
david_williamsb0f0e6c2008-02-10 06:22:40 +0000171 <fileset
172 dir="${wtp.builder.home}/rootfiles"></fileset>
david_williamse9c5b5a2006-05-24 17:17:33 +0000173 </copy>
174
david_williamsb1149ef2006-05-25 22:06:10 +0000175
david_williamsc11999c2008-02-19 02:02:32 +0000176 <!-- delete the zip file of update jars we started with, which we are about to re-create
david_williamsb1149ef2006-05-25 22:06:10 +0000177 as traditional zip file -->
david_williamsb0f0e6c2008-02-10 06:22:40 +0000178 <delete
179 file="${buildDirectory}/${buildLabel}/${archiveName}" />
david_williamsc11999c2008-02-19 02:02:32 +0000180 <mkdir
181 dir="${buildDirectory}/${buildLabel}" />
david_williamse9c5b5a2006-05-24 17:17:33 +0000182
183 <!-- recreate zip file now, same name, traditional content, which is mix of folders and jars -->
david_williamsc11999c2008-02-19 02:02:32 +0000184 <!-- explicitly exclude any features with assembly anywhere in directory names, as
david_williams403beae2007-12-09 02:10:40 +0000185 these are just for controlling what's built, and are not intended for delivery
david_williams35915692007-10-05 06:18:08 +0000186 -->
david_williamsd957bc32006-11-20 00:07:15 +0000187 <zip
188 destfile="${buildDirectory}/${buildLabel}/${archiveName}"
189 basedir="${tmpsite}/unpacked"
190 update="false"
david_williams403beae2007-12-09 02:10:40 +0000191 duplicate="preserve"
192 excludes="**/*assembly*/**" />
david_williamsf9aae9f2006-05-26 23:58:24 +0000193 <!-- always produce checksum files for any zips produced -->
david_williamsb0f0e6c2008-02-10 06:22:40 +0000194 <antcall
195 target="createChecksums" />
david_williamsc11999c2008-02-19 02:02:32 +0000196 <!--
david_williamsb0f0e6c2008-02-10 06:22:40 +0000197 ==================================================================================
david_williamsc11999c2008-02-19 02:02:32 +0000198 8. can now remove tmpsite as no longer needed, unless debugging
199 ==================================================================================
david_williamsb0f0e6c2008-02-10 06:22:40 +0000200 -->
201 <antcall
202 target="deleteTmpSite" />
david_williamse9c5b5a2006-05-24 17:17:33 +0000203 </target>
david_williamsc11999c2008-02-19 02:02:32 +0000204 <!--
david_williamsb0f0e6c2008-02-10 06:22:40 +0000205 ==============================================================================================
david_williamsc11999c2008-02-19 02:02:32 +0000206 Utility and Helper tasks
207 ==============================================================================================
david_williamsb0f0e6c2008-02-10 06:22:40 +0000208 -->
209 <target
david_williamsfb048be2008-02-23 07:15:21 +0000210 name="init"
211 depends="check.sign">
david_williamsd957bc32006-11-20 00:07:15 +0000212 <condition
213 property="verboseIfDebug"
214 value="-verbose"
215 else="">
david_williamsb0f0e6c2008-02-10 06:22:40 +0000216 <istrue
217 value="${debugOptimization}" />
david_williams93912152006-05-26 05:33:36 +0000218 </condition>
david_williamsd957bc32006-11-20 00:07:15 +0000219 <condition
220 property="logIfDebug"
221 value="-debug -consolelog"
222 else="">
david_williamsb0f0e6c2008-02-10 06:22:40 +0000223 <istrue
224 value="${debugOptimization}" />
david_williamsff528922006-11-12 06:53:40 +0000225 </condition>
david_williamsd957bc32006-11-20 00:07:15 +0000226 <condition
227 property="keepIfDebug"
228 value="true">
david_williamsb0f0e6c2008-02-10 06:22:40 +0000229 <istrue
230 value="${debugOptimization}" />
david_williams93912152006-05-26 05:33:36 +0000231 </condition>
david_williamsfb048be2008-02-23 07:15:21 +0000232 <!-- don't normalize if signing, since then it's done by signing -->
david_williams42f9b242006-11-27 18:45:14 +0000233 <condition
234 property="doNormalize"
235 value="true">
david_williamsfb048be2008-02-23 07:15:21 +0000236 <and>
david_williamsb0f0e6c2008-02-10 06:22:40 +0000237 <istrue
238 value="${normalizeJarFiles}" />
david_williamsfb048be2008-02-23 07:15:21 +0000239 <not>
240 <equals
241 arg1="${doSign}"
242 arg2="true"
243 trim="true"
244 casesensitive="false" />
245 </not>
246 </and>
david_williams42f9b242006-11-27 18:45:14 +0000247 </condition>
248 <condition
249 property="doPack"
250 value="true">
251 <and>
david_williamsb0f0e6c2008-02-10 06:22:40 +0000252 <istrue
253 value="${packJarFiles}" />
254 <istrue
255 value="${normalizeJarFiles}" />
david_williams42f9b242006-11-27 18:45:14 +0000256 </and>
257 </condition>
david_williams403beae2007-12-09 02:10:40 +0000258 <condition
259 property="archiveDir"
260 value="${tmpsite}/normalized">
david_williamsb0f0e6c2008-02-10 06:22:40 +0000261 <istrue
262 value="${doPack}" />
david_williamsb8ba26a2006-11-28 08:31:31 +0000263 </condition>
david_williams403beae2007-12-09 02:10:40 +0000264 <condition
265 property="archiveDir"
266 value="${buildDirectory}/${buildLabel}">
david_williamsb0f0e6c2008-02-10 06:22:40 +0000267 <isfalse
268 value="${doPack}" />
david_williams779d6f92006-12-10 03:43:27 +0000269 </condition>
david_williams0bc49752008-05-17 18:23:38 +0000270
271 <!-- echo important values, so it's documneted in build logs -->
david_williamsedb37f32008-05-17 19:19:28 +0000272 <echo message="doPack: ${doPack}" />
273 <echo message="normalizeJarFiles: ${normalizeJarFiles}" />
274 <echo message="doSign: ${doSign}" />
275 <echo message="doNormalize: ${doNormalize}" />
david_williams93912152006-05-26 05:33:36 +0000276 </target>
david_williamsd957bc32006-11-20 00:07:15 +0000277 <target
278 name="deleteTmpSite"
279 unless="keepIfDebug">
david_williamsb0f0e6c2008-02-10 06:22:40 +0000280 <delete
281 dir="${tmpsite}" />
david_williams93912152006-05-26 05:33:36 +0000282 </target>
david_williams42f9b242006-11-27 18:45:14 +0000283 <target
284 name="normalizeJarFiles"
285 if="doNormalize"
286 depends="init">
david_williamsa2716252008-02-19 04:01:58 +0000287
david_williams403beae2007-12-09 02:10:40 +0000288 <java
david_williams54315a72007-02-14 22:50:44 +0000289 jar="${eclipse.launcher}"
david_williams42f9b242006-11-27 18:45:14 +0000290 fork="true"
291 jvm="${env.JAVA_5_HOME}/bin/java"
292 failonerror="true"
293 maxmemory="256m"
294 dir="${buildDirectory}">
david_williamsc11999c2008-02-19 02:02:32 +0000295 <jvmarg value="-Djava.io.tmpdir=${env.RECOMMENDED_TMP_DIR}" />
david_williamsb0f0e6c2008-02-10 06:22:40 +0000296 <arg
297 line="${logIfDebug}" />
david_williams403beae2007-12-09 02:10:40 +0000298 <arg
299 line="-application org.eclipse.update.core.siteOptimizer" />
david_williamsc11999c2008-02-19 02:02:32 +0000300 <!-- note: this -processAll option is critical in this first step.
301 For various reasons, jarProcessor is written to not act on
302 any jar if the jar is not "marked", or if not told explicitly to
303 to processAll. There are ways where not all are literally processed,
304 such as using pack.properties (and others, see
305 http://wiki.eclipse.org/index.php/JarProcessor_Options).
david_williams42f9b242006-11-27 18:45:14 +0000306 -->
307 <arg
308 line="-jarProcessor ${verboseIfDebug} -processAll -outputDir ${archiveDir} -repack ${buildDirectory}/${buildLabel}/${archiveName}" />
309 </java>
310 </target>
david_williamsd957bc32006-11-20 00:07:15 +0000311 <target
312 name="createPackFilesIfDesired"
313 if="doPack"
314 depends="init">
315 <java
david_williams54315a72007-02-14 22:50:44 +0000316 jar="${pde.builder.path}/plugins/org.eclipse.equinox.launcher.jar"
david_williamsd957bc32006-11-20 00:07:15 +0000317 fork="true"
david_williams67d27702006-11-20 16:36:52 +0000318 jvm="${env.JAVA_5_HOME}/bin/java"
david_williamsd957bc32006-11-20 00:07:15 +0000319 failonerror="true"
320 maxmemory="256m"
321 dir="${buildDirectory}">
david_williamsc11999c2008-02-19 02:02:32 +0000322 <jvmarg value="-Djava.io.tmpdir=${env.RECOMMENDED_TMP_DIR}" />
david_williamsb0f0e6c2008-02-10 06:22:40 +0000323 <arg
324 line="${logIfDebug}" />
david_williams403beae2007-12-09 02:10:40 +0000325 <arg
326 line="-application org.eclipse.update.core.siteOptimizer" />
david_williamsd957bc32006-11-20 00:07:15 +0000327 <arg
328 line="-jarProcessor ${verboseIfDebug} -outputDir ${buildDirectory}/${buildLabel}/updateSite -pack ${buildDirectory}/${buildLabel}/updateSite" />
david_williamsb1149ef2006-05-25 22:06:10 +0000329 </java>
330 </target>
331
david_williams504570c2008-03-05 06:03:14 +0000332 <!-- always make copy, since normally either normalized, or signed (and normalized)
333 TODO: (minor) tiny improvement in efficiency could be made, for N-builds?, that are
334 neither normalized nor signed.
335 -->
david_williams42f9b242006-11-27 18:45:14 +0000336 <target
david_williams504570c2008-03-05 06:03:14 +0000337 name="makeCopyForUpdate">
david_williamsb0f0e6c2008-02-10 06:22:40 +0000338 <mkdir
339 dir="${buildDirectory}/${buildLabel}/updateSite" />
david_williams42f9b242006-11-27 18:45:14 +0000340 <copy
341 todir="${buildDirectory}/${buildLabel}/updateSite"
342 overwrite="false">
david_williamsb0f0e6c2008-02-10 06:22:40 +0000343 <fileset
344 dir="${tmpsite}/eclipse">
345 <exclude
346 name="**/*assembly*/**" />
david_williams35915692007-10-05 06:18:08 +0000347 </fileset>
david_williams42f9b242006-11-27 18:45:14 +0000348 </copy>
349 </target>
david_williamsd957bc32006-11-20 00:07:15 +0000350 <target
351 name="makeBackupCopyForDebugging"
352 if="keepIfDebug">
david_williams93912152006-05-26 05:33:36 +0000353 <!-- temporary copy while confirming build to be able to do side-by-side comparisons -->
david_williamsb0f0e6c2008-02-10 06:22:40 +0000354 <mkdir
355 dir="${buildDirectory}/backuporiginalzips" />
david_williamsd957bc32006-11-20 00:07:15 +0000356 <copy
357 file="${buildDirectory}/${buildLabel}/${archiveName}"
358 todir="${buildDirectory}/backuporiginalzips" />
david_williamsb1149ef2006-05-25 22:06:10 +0000359 </target>
david_williamsb0f0e6c2008-02-10 06:22:40 +0000360 <target
361 name="createChecksums">
david_williamsc11999c2008-02-19 02:02:32 +0000362 <!-- This createChecksums task creates two files, for use in two contexts.
363 a. an x.md5 file, that has the name of the file in the contents.
364 This is good for some "third party" executables, like md5summ, that
365 expects the name in the file.
366 b. since ant does not deal well with md5 files with anything in them
367 other than the checksum, we provide same thing in a file with
368 an md5antformat extension, that has only the checksum.
david_williamsb1149ef2006-05-25 22:06:10 +0000369 -->
david_williamsb0f0e6c2008-02-10 06:22:40 +0000370 <mkdir
371 dir="${buildDirectory}/${buildLabel}/checksum" />
david_williamsd957bc32006-11-20 00:07:15 +0000372 <checksum
373 file="${buildDirectory}/${buildLabel}/${archiveName}"
374 property="md5" />
david_williams403beae2007-12-09 02:10:40 +0000375 <echo
david_williamsd957bc32006-11-20 00:07:15 +0000376 message="${md5} *${archiveName}"
377 file="${buildDirectory}/${buildLabel}/checksum/${archiveName}.md5" />
378 <echo
379 message="${md5}"
380 file="${buildDirectory}/${buildLabel}/checksum/${archiveName}.md5antformat" />
david_williamsb1149ef2006-05-25 22:06:10 +0000381 </target>
david_williamsb0f0e6c2008-02-10 06:22:40 +0000382 <target
david_williamsfb048be2008-02-23 07:15:21 +0000383 name="check.sign">
384 <echo
385 message="sign: ${sign}" />
386 <echo
387 message="env skip jar signing: ${env.SKIP_JAR_SIGNING}" />
388 <echo
389 message="skip jar signing: ${SKIP_JAR_SIGNING}" />
390 <condition
391 property="doSign">
392 <and>
393 <equals
394 arg1="${sign}"
395 arg2="true"
396 trim="true"
397 casesensitive="false" />
398 <not>
399 <equals
400 arg1="${env.SKIP_JAR_SIGNING}"
401 arg2="true"
402 trim="true"
403 casesensitive="false" />
404 </not>
405 <not>
406 <equals
407 arg1="${SKIP_JAR_SIGNING}"
408 arg2="true"
409 trim="true"
410 casesensitive="false" />
411 </not>
412 </and>
413 </condition>
david_williamsdd892562008-05-17 20:29:54 +0000414 <echo message="doSign: ${doSign}" />
david_williamsfb048be2008-02-23 07:15:21 +0000415 </target>
416 <target
david_williamsb0f0e6c2008-02-10 06:22:40 +0000417 name="nodefault">
david_williams403beae2007-12-09 02:10:40 +0000418 <echo
419 level="error"
david_williamsd957bc32006-11-20 00:07:15 +0000420 message="There is no default target for this buildutililites.xml ant script." />
david_williamsb1149ef2006-05-25 22:06:10 +0000421 </target>
david_williamsb0f0e6c2008-02-10 06:22:40 +0000422</project>