blob: 306d240cf7f0e92311dbb77029d5533652dbd11d [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"
30 value="false" />
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
81 executable="zip">
82 <arg
83 line="-r ${buildDirectory}/${buildLabel}/${archiveName} ${wtp.builder.home}/scripts/build/pack.properties" />
84 </exec>
david_williamsb0f0e6c2008-02-10 06:22:40 +000085 <antcall
86 target="makeBackupCopyForDebugging" />
david_williams072c6f72006-05-19 10:50:58 +000087
david_williamsc11999c2008-02-19 02:02:32 +000088 <!--
89 ==================================================================================
90 2. normalize jars here, from a zip file of update jars.
91 The normalized jars are put in zip file of same name, in a directory
92 named normalized
93 ==================================================================================
david_williamsb0f0e6c2008-02-10 06:22:40 +000094 -->
david_williams403beae2007-12-09 02:10:40 +000095 <echo
96 level="debug"
97 message="normalize jars if desired ..." />
david_williamsb0f0e6c2008-02-10 06:22:40 +000098 <antcall
99 target="normalizeJarFiles" />
david_williams403beae2007-12-09 02:10:40 +0000100 <echo
101 level="debug"
102 message="normalized jars: ${normalizeJarFiles}" />
david_williamsc11999c2008-02-19 02:02:32 +0000103 <!--
104 ==================================================================================
105 3. sign the jars in archive file, if desired
106 ==================================================================================
david_williamsb0f0e6c2008-02-10 06:22:40 +0000107 -->
108 <ant
109 antfile="${wtp.builder.home}/scripts/build/signjars.xml" />
david_williamsc11999c2008-02-19 02:02:32 +0000110 <!--
111 ==================================================================================
david_williamsb0f0e6c2008-02-10 06:22:40 +0000112 4. unzip the normalized jars in the zip file produced in step 1., to the
david_williamsc11999c2008-02-19 02:02:32 +0000113 directory {tmpsite} for further processing. plugins and features
114 end up in {tmpsite}/eclipse
115 ==================================================================================
david_williamsb0f0e6c2008-02-10 06:22:40 +0000116 -->
david_williams403beae2007-12-09 02:10:40 +0000117 <echo
118 level="debug"
119 message="unzip normalized update jars to a holding place" />
david_williams403beae2007-12-09 02:10:40 +0000120 <echo
121 level="info"
122 message="archiveDir: ${archiveDir}" />
123 <unzip
124 dest="${tmpsite}"
david_williams42f9b242006-11-27 18:45:14 +0000125 src="${archiveDir}/${archiveName}" />
david_williamsc11999c2008-02-19 02:02:32 +0000126 <!--
127 ==================================================================================
128 5 copy all update jars to a common update site directory, if desired.
129 Note: overwite is false to avoid "touching" files already produced and
130 processed be previous steps in a larger build process. This means the updateSite
131 *must* be completely clean before the larger process starts.
132 ==================================================================================
david_williamsb0f0e6c2008-02-10 06:22:40 +0000133 -->
134 <antcall
135 target="makeCopyForUpdate" />
david_williamsc11999c2008-02-19 02:02:32 +0000136 <!--
137 ==================================================================================
138 6. for modularity, pack200 is done here, optionally.
139 The resulting gz files are produced in update site directory.
140 This is optional since processing is expensive to do for every build. Only need
141 when ready to declare an update site, and, for exmaple, no need to do for "local"
142 or HEAD builds since developers wouldn't normally need it for a quick check of a build.
143 ==================================================================================
david_williamsb0f0e6c2008-02-10 06:22:40 +0000144 -->
david_williams403beae2007-12-09 02:10:40 +0000145 <echo
146 level="debug"
147 message="create pack files if desired ..." />
david_williamsb0f0e6c2008-02-10 06:22:40 +0000148 <antcall
149 target="createPackFilesIfDesired" />
david_williams403beae2007-12-09 02:10:40 +0000150 <echo
151 level="debug"
152 message="created pack files: ${packJarFiles}" />
david_williamsc11999c2008-02-19 02:02:32 +0000153 <!--
154 ==================================================================================
155 7. now create traditional zip file of unpacked jars. This type of
156 "unpack" is not related to pack200, but instead means to unpack
157 those jars that are supposed to be unpacked based on feature defintion,
158 if the plugin's unpack attribute is set to true in the feature
159 ==================================================================================
david_williamsb0f0e6c2008-02-10 06:22:40 +0000160 -->
david_williamsb1149ef2006-05-25 22:06:10 +0000161 <!-- use releng task of unpackUpdateJars -->
david_williamsd957bc32006-11-20 00:07:15 +0000162 <unpackUpdateJars
163 site="${tmpsite}/eclipse"
164 output="${tmpsite}/unpacked/eclipse" />
david_williamse9c5b5a2006-05-24 17:17:33 +0000165 <!-- add copy of legal doc's here, product.ini, etc., before re-zipping -->
david_williamsd957bc32006-11-20 00:07:15 +0000166 <copy
167 todir="${tmpsite}/unpacked/eclipse"
168 overwrite="false">
david_williamsb0f0e6c2008-02-10 06:22:40 +0000169 <fileset
170 dir="${wtp.builder.home}/rootfiles"></fileset>
david_williamse9c5b5a2006-05-24 17:17:33 +0000171 </copy>
172
david_williamsb1149ef2006-05-25 22:06:10 +0000173
david_williamsc11999c2008-02-19 02:02:32 +0000174 <!-- delete the zip file of update jars we started with, which we are about to re-create
david_williamsb1149ef2006-05-25 22:06:10 +0000175 as traditional zip file -->
david_williamsb0f0e6c2008-02-10 06:22:40 +0000176 <delete
177 file="${buildDirectory}/${buildLabel}/${archiveName}" />
david_williamsc11999c2008-02-19 02:02:32 +0000178 <mkdir
179 dir="${buildDirectory}/${buildLabel}" />
david_williamse9c5b5a2006-05-24 17:17:33 +0000180
181 <!-- recreate zip file now, same name, traditional content, which is mix of folders and jars -->
david_williamsc11999c2008-02-19 02:02:32 +0000182 <!-- explicitly exclude any features with assembly anywhere in directory names, as
david_williams403beae2007-12-09 02:10:40 +0000183 these are just for controlling what's built, and are not intended for delivery
david_williams35915692007-10-05 06:18:08 +0000184 -->
david_williamsd957bc32006-11-20 00:07:15 +0000185 <zip
186 destfile="${buildDirectory}/${buildLabel}/${archiveName}"
187 basedir="${tmpsite}/unpacked"
188 update="false"
david_williams403beae2007-12-09 02:10:40 +0000189 duplicate="preserve"
190 excludes="**/*assembly*/**" />
david_williamsf9aae9f2006-05-26 23:58:24 +0000191 <!-- always produce checksum files for any zips produced -->
david_williamsb0f0e6c2008-02-10 06:22:40 +0000192 <antcall
193 target="createChecksums" />
david_williamsc11999c2008-02-19 02:02:32 +0000194 <!--
david_williamsb0f0e6c2008-02-10 06:22:40 +0000195 ==================================================================================
david_williamsc11999c2008-02-19 02:02:32 +0000196 8. can now remove tmpsite as no longer needed, unless debugging
197 ==================================================================================
david_williamsb0f0e6c2008-02-10 06:22:40 +0000198 -->
199 <antcall
200 target="deleteTmpSite" />
david_williamse9c5b5a2006-05-24 17:17:33 +0000201 </target>
david_williamsc11999c2008-02-19 02:02:32 +0000202 <!--
david_williamsb0f0e6c2008-02-10 06:22:40 +0000203 ==============================================================================================
david_williamsc11999c2008-02-19 02:02:32 +0000204 Utility and Helper tasks
205 ==============================================================================================
david_williamsb0f0e6c2008-02-10 06:22:40 +0000206 -->
207 <target
david_williamsfb048be2008-02-23 07:15:21 +0000208 name="init"
209 depends="check.sign">
david_williamsd957bc32006-11-20 00:07:15 +0000210 <condition
211 property="verboseIfDebug"
212 value="-verbose"
213 else="">
david_williamsb0f0e6c2008-02-10 06:22:40 +0000214 <istrue
215 value="${debugOptimization}" />
david_williams93912152006-05-26 05:33:36 +0000216 </condition>
david_williamsd957bc32006-11-20 00:07:15 +0000217 <condition
218 property="logIfDebug"
219 value="-debug -consolelog"
220 else="">
david_williamsb0f0e6c2008-02-10 06:22:40 +0000221 <istrue
222 value="${debugOptimization}" />
david_williamsff528922006-11-12 06:53:40 +0000223 </condition>
david_williamsd957bc32006-11-20 00:07:15 +0000224 <condition
225 property="keepIfDebug"
226 value="true">
david_williamsb0f0e6c2008-02-10 06:22:40 +0000227 <istrue
228 value="${debugOptimization}" />
david_williams93912152006-05-26 05:33:36 +0000229 </condition>
david_williamsfb048be2008-02-23 07:15:21 +0000230 <!-- don't normalize if signing, since then it's done by signing -->
david_williams42f9b242006-11-27 18:45:14 +0000231 <condition
232 property="doNormalize"
233 value="true">
david_williamsfb048be2008-02-23 07:15:21 +0000234 <and>
david_williamsb0f0e6c2008-02-10 06:22:40 +0000235 <istrue
236 value="${normalizeJarFiles}" />
david_williamsfb048be2008-02-23 07:15:21 +0000237 <not>
238 <equals
239 arg1="${doSign}"
240 arg2="true"
241 trim="true"
242 casesensitive="false" />
243 </not>
244 </and>
david_williams42f9b242006-11-27 18:45:14 +0000245 </condition>
246 <condition
247 property="doPack"
248 value="true">
249 <and>
david_williamsb0f0e6c2008-02-10 06:22:40 +0000250 <istrue
251 value="${packJarFiles}" />
252 <istrue
253 value="${normalizeJarFiles}" />
david_williams42f9b242006-11-27 18:45:14 +0000254 </and>
255 </condition>
david_williams403beae2007-12-09 02:10:40 +0000256 <condition
257 property="archiveDir"
258 value="${tmpsite}/normalized">
david_williamsb0f0e6c2008-02-10 06:22:40 +0000259 <istrue
260 value="${doPack}" />
david_williamsb8ba26a2006-11-28 08:31:31 +0000261 </condition>
david_williams403beae2007-12-09 02:10:40 +0000262 <condition
263 property="archiveDir"
264 value="${buildDirectory}/${buildLabel}">
david_williamsb0f0e6c2008-02-10 06:22:40 +0000265 <isfalse
266 value="${doPack}" />
david_williams779d6f92006-12-10 03:43:27 +0000267 </condition>
david_williams93912152006-05-26 05:33:36 +0000268 </target>
david_williamsd957bc32006-11-20 00:07:15 +0000269 <target
270 name="deleteTmpSite"
271 unless="keepIfDebug">
david_williamsb0f0e6c2008-02-10 06:22:40 +0000272 <delete
273 dir="${tmpsite}" />
david_williams93912152006-05-26 05:33:36 +0000274 </target>
david_williams42f9b242006-11-27 18:45:14 +0000275 <target
276 name="normalizeJarFiles"
277 if="doNormalize"
278 depends="init">
david_williamsa2716252008-02-19 04:01:58 +0000279
david_williams403beae2007-12-09 02:10:40 +0000280 <java
david_williams54315a72007-02-14 22:50:44 +0000281 jar="${eclipse.launcher}"
david_williams42f9b242006-11-27 18:45:14 +0000282 fork="true"
283 jvm="${env.JAVA_5_HOME}/bin/java"
284 failonerror="true"
285 maxmemory="256m"
286 dir="${buildDirectory}">
david_williamsc11999c2008-02-19 02:02:32 +0000287 <jvmarg value="-Djava.io.tmpdir=${env.RECOMMENDED_TMP_DIR}" />
david_williamsb0f0e6c2008-02-10 06:22:40 +0000288 <arg
289 line="${logIfDebug}" />
david_williams403beae2007-12-09 02:10:40 +0000290 <arg
291 line="-application org.eclipse.update.core.siteOptimizer" />
david_williamsc11999c2008-02-19 02:02:32 +0000292 <!-- note: this -processAll option is critical in this first step.
293 For various reasons, jarProcessor is written to not act on
294 any jar if the jar is not "marked", or if not told explicitly to
295 to processAll. There are ways where not all are literally processed,
296 such as using pack.properties (and others, see
297 http://wiki.eclipse.org/index.php/JarProcessor_Options).
david_williams42f9b242006-11-27 18:45:14 +0000298 -->
299 <arg
300 line="-jarProcessor ${verboseIfDebug} -processAll -outputDir ${archiveDir} -repack ${buildDirectory}/${buildLabel}/${archiveName}" />
301 </java>
302 </target>
david_williamsd957bc32006-11-20 00:07:15 +0000303 <target
304 name="createPackFilesIfDesired"
305 if="doPack"
306 depends="init">
307 <java
david_williams54315a72007-02-14 22:50:44 +0000308 jar="${pde.builder.path}/plugins/org.eclipse.equinox.launcher.jar"
david_williamsd957bc32006-11-20 00:07:15 +0000309 fork="true"
david_williams67d27702006-11-20 16:36:52 +0000310 jvm="${env.JAVA_5_HOME}/bin/java"
david_williamsd957bc32006-11-20 00:07:15 +0000311 failonerror="true"
312 maxmemory="256m"
313 dir="${buildDirectory}">
david_williamsc11999c2008-02-19 02:02:32 +0000314 <jvmarg value="-Djava.io.tmpdir=${env.RECOMMENDED_TMP_DIR}" />
david_williamsb0f0e6c2008-02-10 06:22:40 +0000315 <arg
316 line="${logIfDebug}" />
david_williams403beae2007-12-09 02:10:40 +0000317 <arg
318 line="-application org.eclipse.update.core.siteOptimizer" />
david_williamsd957bc32006-11-20 00:07:15 +0000319 <arg
320 line="-jarProcessor ${verboseIfDebug} -outputDir ${buildDirectory}/${buildLabel}/updateSite -pack ${buildDirectory}/${buildLabel}/updateSite" />
david_williamsb1149ef2006-05-25 22:06:10 +0000321 </java>
322 </target>
323
david_williams42f9b242006-11-27 18:45:14 +0000324 <!-- no sense in making update dir, if not normalized -->
325 <target
326 name="makeCopyForUpdate"
327 if="doNormalize">
david_williamsb0f0e6c2008-02-10 06:22:40 +0000328 <mkdir
329 dir="${buildDirectory}/${buildLabel}/updateSite" />
david_williams42f9b242006-11-27 18:45:14 +0000330 <copy
331 todir="${buildDirectory}/${buildLabel}/updateSite"
332 overwrite="false">
david_williamsb0f0e6c2008-02-10 06:22:40 +0000333 <fileset
334 dir="${tmpsite}/eclipse">
335 <exclude
336 name="**/*assembly*/**" />
david_williams35915692007-10-05 06:18:08 +0000337 </fileset>
david_williams42f9b242006-11-27 18:45:14 +0000338 </copy>
339 </target>
david_williamsd957bc32006-11-20 00:07:15 +0000340 <target
341 name="makeBackupCopyForDebugging"
342 if="keepIfDebug">
david_williams93912152006-05-26 05:33:36 +0000343 <!-- temporary copy while confirming build to be able to do side-by-side comparisons -->
david_williamsb0f0e6c2008-02-10 06:22:40 +0000344 <mkdir
345 dir="${buildDirectory}/backuporiginalzips" />
david_williamsd957bc32006-11-20 00:07:15 +0000346 <copy
347 file="${buildDirectory}/${buildLabel}/${archiveName}"
348 todir="${buildDirectory}/backuporiginalzips" />
david_williamsb1149ef2006-05-25 22:06:10 +0000349 </target>
david_williamsb0f0e6c2008-02-10 06:22:40 +0000350 <target
351 name="createChecksums">
david_williamsc11999c2008-02-19 02:02:32 +0000352 <!-- This createChecksums task creates two files, for use in two contexts.
353 a. an x.md5 file, that has the name of the file in the contents.
354 This is good for some "third party" executables, like md5summ, that
355 expects the name in the file.
356 b. since ant does not deal well with md5 files with anything in them
357 other than the checksum, we provide same thing in a file with
358 an md5antformat extension, that has only the checksum.
david_williamsb1149ef2006-05-25 22:06:10 +0000359 -->
david_williamsb0f0e6c2008-02-10 06:22:40 +0000360 <mkdir
361 dir="${buildDirectory}/${buildLabel}/checksum" />
david_williamsd957bc32006-11-20 00:07:15 +0000362 <checksum
363 file="${buildDirectory}/${buildLabel}/${archiveName}"
364 property="md5" />
david_williams403beae2007-12-09 02:10:40 +0000365 <echo
david_williamsd957bc32006-11-20 00:07:15 +0000366 message="${md5} *${archiveName}"
367 file="${buildDirectory}/${buildLabel}/checksum/${archiveName}.md5" />
368 <echo
369 message="${md5}"
370 file="${buildDirectory}/${buildLabel}/checksum/${archiveName}.md5antformat" />
david_williamsb1149ef2006-05-25 22:06:10 +0000371 </target>
david_williamsb0f0e6c2008-02-10 06:22:40 +0000372 <target
david_williamsfb048be2008-02-23 07:15:21 +0000373 name="check.sign">
374 <echo
375 message="sign: ${sign}" />
376 <echo
377 message="env skip jar signing: ${env.SKIP_JAR_SIGNING}" />
378 <echo
379 message="skip jar signing: ${SKIP_JAR_SIGNING}" />
380 <condition
381 property="doSign">
382 <and>
383 <equals
384 arg1="${sign}"
385 arg2="true"
386 trim="true"
387 casesensitive="false" />
388 <not>
389 <equals
390 arg1="${env.SKIP_JAR_SIGNING}"
391 arg2="true"
392 trim="true"
393 casesensitive="false" />
394 </not>
395 <not>
396 <equals
397 arg1="${SKIP_JAR_SIGNING}"
398 arg2="true"
399 trim="true"
400 casesensitive="false" />
401 </not>
402 </and>
403 </condition>
404 </target>
405 <target
david_williamsb0f0e6c2008-02-10 06:22:40 +0000406 name="nodefault">
david_williams403beae2007-12-09 02:10:40 +0000407 <echo
408 level="error"
david_williamsd957bc32006-11-20 00:07:15 +0000409 message="There is no default target for this buildutililites.xml ant script." />
david_williamsb1149ef2006-05-25 22:06:10 +0000410 </target>
david_williamsb0f0e6c2008-02-10 06:22:40 +0000411</project>