| <?xml version="1.0" encoding="UTF-8"?> |
| <!-- |
| Copyright (c) 2010, 2019 IBM Corporation and others. |
| This program and the accompanying materials |
| are made available under the terms of the Eclipse Public License 2.0 |
| which accompanies this distribution, and is available at |
| https://www.eclipse.org/legal/epl-2.0/ |
| |
| SPDX-License-Identifier: EPL-2.0 |
| |
| Contributors: |
| IBM Corporation - initial API and implementation |
| --> |
| |
| <project |
| name="buildutilities" |
| default="nodefault" |
| basedir="."> |
| |
| |
| <target |
| name="conditionAndSignJars" |
| depends="init" |
| if="doSign"> |
| <!-- |
| get zip for signing exclude content* artifacts* add |
| pack.properties send to eclipse and wait write over |
| p2.build.repo, but update content and artifacts files remove |
| temp file |
| --> |
| <echo |
| level="debug" |
| message="p2.build.repo: ${p2.build.repo}"/> |
| <zip destfile="${buildDirectory}/${buildLabel}/temp-${buildLabel}-${component}.zip"> |
| <zipfileset |
| dir="${buildDirectory}/${buildLabel}/buildrepository/${component}/" |
| excludes="content.xml,content.jar,artifacts.xml,artifacts.jar"/> |
| </zip> |
| <updatePackProperties |
| archiveFilename="${buildDirectory}/${buildLabel}/temp-${buildLabel}-${component}.zip" |
| verbose="false"/> |
| <!-- |
| comment out the following delete statement, when debugging, |
| to see original zip files, before updatePackProperties ran |
| --> |
| <delete |
| quiet="true" |
| file="${buildDirectory}/${buildLabel}/temp-${buildLabel}-${component}.zip.bak"/> |
| <!-- |
| ================================================================================== |
| sign the jars in archive file |
| ================================================================================== |
| --> |
| <ant antfile="${wtp.builder.home}/scripts/build/signjars.xml"> |
| <property |
| name="archiveName" |
| value="temp-${buildLabel}-${component}.zip"/> |
| </ant> |
| |
| <!-- now after signing, replace what we had --> |
| <unzip |
| dest="${buildDirectory}/${buildLabel}/buildrepository/${component}" |
| src="${buildDirectory}/${buildLabel}/temp-${buildLabel}-${component}.zip" |
| overwrite="true"> |
| <patternset excludes="pack.properties"/> |
| </unzip> |
| <!-- |
| Now we need to "fix" metata after being signed. do not |
| 'pack' yet, as we want to create downloadable zipped repos, |
| without pack.gz files (they are not used, if jars present, |
| for efficiency |
| --> |
| <p2.process.artifacts repositoryPath="${p2.build.repo}"/> |
| <!-- |
| remove our temp zip file. Can comment out the delete |
| statement, when testing or debugging. |
| --> |
| <delete |
| quiet="true" |
| file="${buildDirectory}/${buildLabel}/temp-${buildLabel}-${component}.zip"/> |
| </target> |
| <target |
| name="finishPackages" |
| depends="init"> |
| <!-- |
| now create zip of repo. This is done by us, and requires |
| that skipMirroring=true, or else pde builder does it later, |
| but does not use our conditioned jars (instead it would |
| reuse those in builderDirectory/tmp/eclipse. ... there's |
| gotta be an easier way! :) |
| --> |
| <mkdir dir="${buildDirectory}/${buildLabel}/repos/"/> |
| <zip destfile="${buildDirectory}/${buildLabel}/repos/${archiveName}"> |
| <zipfileset dir="${buildDirectory}/${buildLabel}/buildrepository/${component}"/> |
| </zip> |
| <antcall target="createChecksums"> |
| <param |
| name="subdir" |
| value="repos/"/> |
| <param |
| name="archiveName" |
| value="${archiveName}"/> |
| </antcall> |
| <!-- |
| now pack what's in repository ... |
| TODO: invalid if not conditioned. |
| make conditional on conditioning/signing |
| even if signed, still not great to do here, since it is a lengthy process, |
| we should do only at end (or as part of "promote") once we know we need |
| the pack.gz versions. Also, when we created downloadable repos, we don't |
| want pack.gz files in them. |
| <p2.process.artifacts |
| repositoryPath="${p2.build.repo}" |
| pack="true"/> |
| --> |
| <!-- |
| now add this repo to our overall repo, via composite. Note |
| we depend on relative location. |
| --> |
| <p2.composite.repository> |
| <repository |
| location="file:${buildDirectory}/${buildLabel}/buildrepository" |
| name="Build repository ${buildLabel}"/> |
| <add> |
| <repository location="${component}"/> |
| </add> |
| </p2.composite.repository> |
| </target> |
| <!-- |
| ============================================================================================== |
| Utility and Helper tasks |
| ============================================================================================== |
| --> |
| <target |
| name="init" |
| depends="standardInit,check.sign" |
| unless="buildutilities.initialized"> |
| <condition |
| property="verboseIfDebug" |
| value="-verbose" |
| else=""> |
| <istrue value="${debugOptimization}"/> |
| </condition> |
| <condition |
| property="logIfDebug" |
| value="-debug -consolelog" |
| else=""> |
| <istrue value="${debugOptimization}"/> |
| </condition> |
| <condition |
| property="keepIfDebug" |
| value="true"> |
| <istrue value="${debugOptimization}"/> |
| </condition> |
| <!-- don't normalize if signing, since then it's done by signing --> |
| <condition |
| property="doNormalize" |
| value="true"> |
| <and> |
| <istrue value="${normalizeJarFiles}"/> |
| <not> |
| <equals |
| arg1="${doSign}" |
| arg2="true" |
| trim="true" |
| casesensitive="false"/> |
| </not> |
| </and> |
| </condition> |
| <condition |
| property="doPack" |
| value="true"> |
| <and> |
| <istrue value="${packJarFiles}"/> |
| <istrue value="${createP2repo}"/> |
| <and> |
| <or> |
| <istrue value="${normalizeJarFiles}"/> |
| <istrue value="${doSign}"/> |
| </or> |
| </and> |
| </and> |
| </condition> |
| <condition |
| property="excludeFromRepoZip" |
| value="site.xml"> |
| <isfalse value="${doPack}"/> |
| </condition> |
| <condition |
| property="excludeFromRepoZip" |
| value="site.xml,plugins/*.jar,features/*.jar"> |
| <istrue value="${doPack}"/> |
| </condition> |
| <condition |
| property="archiveDir" |
| value="${tmpsite}/normalized"> |
| <istrue value="${doPack}"/> |
| </condition> |
| <condition |
| property="archiveDir" |
| value="${buildDirectory}/${buildLabel}"> |
| <isfalse value="${doPack}"/> |
| </condition> |
| |
| <!-- echo important values, so it's documneted in build logs --> |
| <echo |
| level="debug" |
| message="doPack: ${doPack}"/> |
| <echo |
| level="debug" |
| message="packJarFiles: ${packJarFiles}"/> |
| <echo |
| level="debug" |
| message="normalizeJarFiles: ${normalizeJarFiles}"/> |
| <echo |
| level="debug" |
| message="doNormalize: ${doNormalize}"/> |
| <property |
| name="buildutilities.initialized" |
| value="true"/> |
| |
| </target> |
| |
| |
| <target |
| name="standardInit" |
| unless="standardInitialized"> |
| |
| <!-- = = = standard properties pattern = = = --> |
| <!-- |
| Note to be cross-platform, "environment variables" are only |
| appropriate for some variables, e.g. ones we set, since |
| properties are case sensitive, even if the environment variables |
| on your operating system are not, e.g. it will be ${env.Path} |
| not ${env.PATH} on Windows |
| --> |
| <property environment="env"/> |
| <!-- |
| Let users override standard properties, if desired. If |
| directory, file, or some properties do not exist, then standard |
| properties will be used. |
| --> |
| <property file="${env.LOCAL_BUILD_PROPERTIES_DIR}/${ant.project.name}.properties"/> |
| |
| <!-- = = = end standard properties pattern = = = --> |
| |
| |
| <!-- if not otherwise set, use these default properties --> |
| <property |
| name="debugOptimization" |
| value="false"/> |
| <!-- |
| We should not always normalize ("-repack") jars by default, |
| since in production we sign the jars (which does the -repack for |
| us) and not in production we don't really care so why spend the |
| extra time. For jars which are not supposed to be normalized, |
| such as pre-existing jars, they need to be added to the |
| pack.properties file (see the updatePackProperties task). Note: |
| signing does the -repack when we sign. This can be over-ridden |
| by the caller setting normalize to true, but there are know |
| known cases where we want to normalize (and eventually pack) the |
| jar files but not sign them. |
| --> |
| <property |
| name="normalizeJarFiles" |
| value="false"/> |
| <!-- |
| we'll currently pack jar files, just as part of "debugging" to |
| help sanity check all is working as expected. Eventually we may |
| want to provide some service there jar files in the bundles |
| directory are packed ... but, there's no known use-case for this |
| so far |
| --> |
| <property |
| name="packJarFiles" |
| value="false"/> |
| <!-- |
| Let tmp site be global. Note: we use this odd |
| "tmpsite-archiveName-temp" to make sure unique directories, |
| since in some cases these directories can not be deleted from |
| ant, see https://bugs.eclipse.org/bugs/show_bug.cgi?id=142926, |
| and since directory names ending in .zip are misinterpreted by |
| jarProcessor, see |
| https://bugs.eclipse.org/bugs/show_bug.cgi?id=143385 But, its |
| handy to do as unique directories anyway, since if a larger |
| process calls this mulitiple times, on different zips, and if |
| debugging is turnned on, then all the tmpsite directories are |
| left on disk for post-build inspection. |
| --> |
| <property |
| name="tmpsite" |
| value="${buildDirectory}/tmpsite-${archiveName}-temp"/> |
| |
| <property |
| name="standardInitialized" |
| value="true"/> |
| |
| |
| |
| </target> |
| |
| <!-- |
| always make copy, since normally either normalized, or signed |
| (and normalized) TODO: (minor) tiny improvement in efficiency |
| could be made, for N-builds?, that are neither normalized nor |
| signed. |
| --> |
| <target name="createChecksums"> |
| <!-- |
| This createChecksums task creates two files, for use in two |
| contexts. a. an x.md5 file, that has the name of the file in |
| the contents. This is good for some "third party" |
| executables, like md5summ, that expects the name in the |
| file. b. since ant does not deal well with md5 files with |
| anything in them other than the checksum, we provide same |
| thing in a file with an md5antformat extension, that has |
| only the checksum. |
| --> |
| <!-- if not set, do not use a subdir. caller must include follow '/', such as sudir="repos/" --> |
| <property |
| name="subdir" |
| value=""/> |
| |
| <mkdir dir="${buildDirectory}/${buildLabel}/${subdir}checksum"/> |
| <checksum |
| file="${buildDirectory}/${buildLabel}/${subdir}${archiveName}" |
| todir="${buildDirectory}/${buildLabel}/${subdir}checksum/" |
| pattern="{0} *{1}" |
| fileext=".md5" |
| algorithm="MD5"/> |
| <checksum |
| file="${buildDirectory}/${buildLabel}/${subdir}${archiveName}" |
| todir="${buildDirectory}/${buildLabel}/${subdir}checksum/" |
| pattern="{0} *{1}" |
| fileext=".sha1" |
| algorithm="SHA1"/> |
| </target> |
| <target |
| name="check.sign" |
| unless="check.sign.initialized"> |
| <echo |
| level="debug" |
| message="sign: ${sign}"/> |
| <echo |
| level="debug" |
| message="env skip jar signing: ${env.SKIP_JAR_SIGNING}"/> |
| <echo |
| level="debug" |
| message="skip jar signing: ${SKIP_JAR_SIGNING}"/> |
| <condition property="doSign"> |
| <and> |
| <equals |
| arg1="${sign}" |
| arg2="true" |
| trim="true" |
| casesensitive="false"/> |
| <not> |
| <equals |
| arg1="${env.SKIP_JAR_SIGNING}" |
| arg2="true" |
| trim="true" |
| casesensitive="false"/> |
| </not> |
| <not> |
| <equals |
| arg1="${SKIP_JAR_SIGNING}" |
| arg2="true" |
| trim="true" |
| casesensitive="false"/> |
| </not> |
| </and> |
| </condition> |
| <echo |
| level="info" |
| message="doSign: ${doSign}"/> |
| <property |
| name="check.sign.initialized" |
| value="true"/> |
| </target> |
| <target |
| name="createTraditionalZipFiles" |
| depends="init"> |
| <property |
| name="temprunnabledir" |
| value="${buildDirectory}/runnable/${component}"/> |
| <property |
| name="temprunnabledireclipse" |
| value="${temprunnabledir}/eclipse"/> |
| <p2.repo2runnable> |
| <repository location="file:/${temprunnabledireclipse}"/> |
| <source> |
| <repository location="${p2.build.repo}"/> |
| </source> |
| </p2.repo2runnable> |
| <property |
| name="ziparchiveName" |
| value="${component}-${buildLabel}.zip"/> |
| <copy |
| todir="${temprunnabledireclipse}" |
| overwrite="false"> |
| <fileset dir="${wtp.builder.home}/rootfiles"> |
| </fileset> |
| </copy> |
| <zip destfile="${buildDirectory}/${buildLabel}/${ziparchiveName}"> |
| <zipfileset |
| dir="${temprunnabledir}" |
| excludes="**/content.xml,**/content.jar,**/artifacts.xml,**/artifacts.jar"/> |
| </zip> |
| <antcall target="createChecksums"> |
| <param |
| name="archiveName" |
| value="${ziparchiveName}"/> |
| </antcall> |
| |
| <delete |
| quiet="true" |
| dir="${temprunnabledir}"/> |
| |
| </target> |
| <target name="nodefault"> |
| <echo |
| level="error" |
| message="There is no default target for this buildutililites.xml ant script."/> |
| </target> |
| </project> |