| <?xml version="1.0" encoding="UTF-8"?> |
| <project name="Packaging"> |
| <target name="create.target.platform.metadata"> |
| <buckminster.targetPlatformLocation property="target.platform.location" /> |
| <property name="target.platform.repository" value="file:${sp:output}" /> |
| <p2.publish.featuresAndBundles metadataRepository="${target.platform.repository}" source="${target.platform.location}" publishArtifacts="false" /> |
| <buckminster.publishJRE metadataRepository="${target.platform.repository}" publishArtifacts="false" /> |
| </target> |
| |
| <target name="-define.package.name.stem"> |
| <property name="incubation.qualifier" value="" /> |
| |
| <!-- if the build.alias is non-empty then use it in preference --> |
| <condition property="package.qualifier" value="${incubation.qualifier}-${build.alias}"> |
| <and> |
| <isset property="build.alias" /> |
| <length string="${build.alias}" when="greater" length="0" /> |
| </and> |
| </condition> |
| <!-- otherwise use the build.id if defined, if not then fall back to an empty string --> |
| <condition property="package.qualifier" value="${incubation.qualifier}-${build.id}" else="${incubation.qualifier}"> |
| <and> |
| <isset property="build.id" /> |
| <length string="${build.id}" when="greater" length="0" /> |
| </and> |
| </condition> |
| |
| <property name="package.name.stem" value="${sp:output}/${package.name}${package.qualifier}" /> |
| </target> |
| |
| <target name="package.site" depends="-define.package.name.stem"> |
| <mkdir dir="${sp:output}" /> |
| |
| <!-- create the desired ZIP file --> |
| <zip basedir="${sp:repository}" destfile="${package.name.stem}.zip" /> |
| </target> |
| |
| <target name="-locate.launcher.jar" unless="launcher.jar"> |
| <pathconvert property="launcher.jar"> |
| <first count="1"> |
| <sort> |
| <fileset dir="${eclipse.home}/plugins" includes="**/org.eclipse.equinox.launcher_*.jar" /> |
| <reverse xmlns="antlib:org.apache.tools.ant.types.resources.comparators"> |
| <date /> |
| </reverse> |
| </sort> |
| </first> |
| </pathconvert> |
| </target> |
| |
| <target name="-define.install.properties" depends="-locate.launcher.jar"> |
| <buckminster.targetPlatformLocation property="target.platform.location" /> |
| |
| <!-- |
| Set the target platform bundle pool path to an empty value in case installation |
| of the target platform components is desired, otherwise set it to the target |
| platform location. |
| The target platform bundle pool path is used as a secondary bundle pool during |
| the installations. So if set to the location of the target platform, then all |
| components in the target platform appear to be already installed to the installation |
| process, and thus are not installed again. On the other hand if set to an empty |
| value then the components from the target platform don't appear to be installed, |
| and thus are installed along with the components produced by the build. |
| --> |
| <condition property="target.platform.bundle.pool.path" value=""> |
| <istrue value="${install.target.platform.dependencies}" /> |
| </condition> |
| <property name="target.platform.bundle.pool.path" location="${target.platform.location}" /> |
| |
| <property name="bundle.pools.property.name" value="org.eclipse.equinox.p2.cache.extensions" /> |
| <property name="install.features.property.name" value="org.eclipse.update.install.features" /> |
| |
| <!-- set default --> |
| <property name="install.features" value="true" /> |
| |
| <!-- default to empty values --> |
| <property name="fs:repositories" value="" /> |
| <property name="fs:metadata.repositories" value="" /> |
| <property name="fs:artifact.repositories" value="" /> |
| <property name="fs:target.platform.repository" value="" /> |
| <property name="fs:install.pools" value="" /> |
| |
| <!-- create a list of all possible metadata repositories --> |
| <pathconvert property="metadata.repositories" dirsep="/" pathsep=","> |
| <buckminster.valuepath value="${fs:repositories}" /> |
| <buckminster.valuepath value="${fs:metadata.repositories}" /> |
| <!-- this is a metadata repository generated for the artifacts in the target platform --> |
| <buckminster.valuepath value="${fs:target.platform.repository}" /> |
| <map from="" to="file:" /> |
| </pathconvert> |
| |
| <!-- create a list of all possible artifact repositories --> |
| <pathconvert property="artifact.repositories" dirsep="/" pathsep=","> |
| <buckminster.valuepath value="${fs:repositories}" /> |
| <buckminster.valuepath value="${fs:artifact.repositories}" /> |
| <!-- this is the real target platform location --> |
| <path location="${target.platform.location}" /> |
| <map from="" to="file:" /> |
| </pathconvert> |
| |
| <condition property="wildcard" value=""*"" else="*"> |
| <os family="windows" /> |
| </condition> |
| </target> |
| |
| <target name="-install.ius" if="${install.ius.property}"> |
| <loadresource property="install.ius"> |
| <propertyresource name="${install.ius.property}" /> |
| </loadresource> |
| |
| <pathconvert property="bundle.pools" dirsep="/" pathsep="|" setonempty="false"> |
| <path path="${default.bundle.pools}" /> |
| <buckminster.valuepath value="${fs:install.pools}" /> |
| <map from="" to="file:" /> |
| </pathconvert> |
| |
| <condition property="profile.properties" value="${bundle.pools.property.name}=${bundle.pools},${install.features.property.name}=${install.features}" else="${install.features.property.name}=${install.features}"> |
| <isset property="bundle.pools" /> |
| </condition> |
| |
| <java jar="${launcher.jar}" fork="true" failonerror="true"> |
| <arg value="-consolelog" /> |
| <arg value="-application" /> |
| <arg value="org.eclipse.equinox.p2.director" /> |
| <arg value="-metadataRepository" /> |
| <arg value="${metadata.repositories}" /> |
| <arg value="-artifactRepository" /> |
| <arg value="${artifact.repositories}" /> |
| <arg value="-destination" /> |
| <arg value="${sp:output}" /> |
| <arg value="-profile" /> |
| <arg value="Install" /> |
| <arg value="-profileproperties" /> |
| <arg value="${profile.properties}" /> |
| <arg value="-installIU" /> |
| <arg value="${install.ius}" /> |
| <arg value="-p2.os" /> |
| <arg value="${wildcard}" /> |
| <arg value="-p2.ws" /> |
| <arg value="${wildcard}" /> |
| <arg value="-p2.arch" /> |
| <arg value="${wildcard}" /> |
| </java> |
| |
| <!-- remove the p2 profile as this is not a real product --> |
| <delete dir="${sp:output}" includeEmptyDirs="true"> |
| <include name="p2/**" /> |
| <include name=".artifactlock/**" /> |
| </delete> |
| </target> |
| |
| <target name="install.ius" depends="-define.install.properties"> |
| <delete dir="${sp:output}" /> |
| |
| <!-- install the specified IUs --> |
| <antcall target="-install.ius"> |
| <param name="install.ius.property" value="ius" /> |
| <param name="default.bundle.pools" value="${target.platform.bundle.pool.path}" /> |
| </antcall> |
| |
| <!-- install the specified target platform IUs --> |
| <antcall target="-install.ius"> |
| <param name="install.ius.property" value="target.platform.ius" /> |
| <param name="default.bundle.pools" value="" /> |
| </antcall> |
| </target> |
| |
| <target name="-appoint.single.install.pool" if="sp:install.pools"> |
| <property name="gathered.pools.directory" location="${sp:install.pools}" /> |
| </target> |
| |
| <target name="-gather.install.pools" depends="-appoint.single.install.pool,-define.package.name.stem" unless="gathered.pools.directory"> |
| <property name="gathered.pools.directory" location="${package.name.stem}" /> |
| |
| <delete dir="${gathered.pools.directory}" /> |
| <mkdir dir="${gathered.pools.directory}" /> |
| |
| <!-- set default --> |
| <property name="fs:install.pools" value="" /> |
| |
| <buckminster.copy todir="${gathered.pools.directory}"> |
| <buckminster.filesetgroup value="${fs:install.pools}" /> |
| </buckminster.copy> |
| </target> |
| |
| <target name="-define.empty.licese.files.resource.set" unless="sp:license.files"> |
| <!-- this is intended to produce an empty zipfileset (cf. with the condition in the target) --> |
| <zipfileset dir="${basedir}" id="license.files"> |
| <selector if="sp:license.files" /> |
| </zipfileset> |
| </target> |
| |
| <target name="-define.license.files.resource.set" depends="-define.empty.licese.files.resource.set" if="sp:license.files"> |
| <!-- define a zipfileset containing all license files and specifying their location in the resulting zip file --> |
| <zipfileset id="license.files" dir="${sp:license.files}" prefix="${license.files.directory}" /> |
| </target> |
| |
| <target name="-define.package.ius.properties"> |
| <!-- set defaults --> |
| <property name="top.directory" value="eclipse" /> |
| <property name="license.files.directory" value="${top.directory}" /> |
| </target> |
| |
| <target name="package.ius" depends="-define.package.ius.properties,-gather.install.pools,-define.license.files.resource.set"> |
| <mkdir dir="${sp:output}" /> |
| |
| <zip destfile="${package.name.stem}.zip"> |
| <zipfileset dir="${gathered.pools.directory}" prefix="${top.directory}"> |
| <exclude name="artifacts.xml" /> |
| </zipfileset> |
| <zipfileset refid="license.files" /> |
| </zip> |
| |
| <!-- cleanup (the directory is present only if fs:install.pools appointed more than one install pool) --> |
| <delete dir="${package.name.stem}" /> |
| </target> |
| |
| <target name="-define.package.models.properties"> |
| <!-- set defaults --> |
| <property name="top.directory" value="models" /> |
| <property name="license.files.directory" value="" /> |
| </target> |
| |
| <target name="package.models" depends="-define.package.models.properties,-gather.install.pools,-define.license.files.resource.set"> |
| <property name="plugins.directory" location="${gathered.pools.directory}/plugins" /> |
| <property name="models.directory" location="${package.name.stem}/models" /> |
| <property name="stamp.file.name" value=".stamp" /> |
| |
| <delete dir="${models.directory}" /> |
| |
| <!-- |
| create a separate subdirectory of the models directory for each bundle found |
| in the plugins subdirectory of the gathered install pools directory |
| --> |
| <touch mkdirs="true" verbose="false"> |
| <fileset dir="${plugins.directory}"> |
| <include name="*.jar" /> |
| <type type="file" /> |
| </fileset> |
| <globmapper from="*.jar" to="${models.directory}/*/${stamp.file.name}" /> |
| </touch> |
| <touch mkdirs="true" verbose="false"> |
| <fileset dir="${plugins.directory}"> |
| <include name="*" /> |
| <type type="dir" /> |
| </fileset> |
| <globmapper from="*" to="${models.directory}/*/${stamp.file.name}" /> |
| </touch> |
| |
| <!-- |
| now call the "-extract.model.files" target for every subdirectory created |
| by the <touch> tasks above |
| --> |
| <subant genericantfile="${ant.file}" target="-extract.model.files" inheritall="true"> |
| <dirset dir="${models.directory}"> |
| <include name="*" /> |
| </dirset> |
| </subant> |
| |
| <!-- |
| delete the .stamp files and also subdirectories which become empty as a result |
| (i.e. subdirectories corresponding to bundles containing no model files) |
| --> |
| <delete dir="${models.directory}" includeemptydirs="true"> |
| <include name="*/${stamp.file.name}" /> |
| <include name="*" /> |
| </delete> |
| |
| <zip destfile="${package.name.stem}.zip"> |
| <zipfileset dir="${models.directory}" prefix="${top.directory}" /> |
| <zipfileset refid="license.files" /> |
| </zip> |
| |
| <!-- cleanup --> |
| <delete dir="${package.name.stem}" /> |
| </target> |
| |
| <target name="-define.plugin.properties"> |
| <pathconvert property="plugin.location.stem"> |
| <path location="${basedir}" /> |
| <map from="${models.directory}" to="${plugins.directory}" /> |
| </pathconvert> |
| <property name="plugin.location" value="${plugin.location.stem}.jar" /> |
| |
| <available property="jar.based.plugin" file="${plugin.location}" type="file" /> |
| |
| <property name="about.file.name" value="about.html" /> |
| |
| <patternset id="model.files"> |
| <include name="model/**" /> |
| <include name="cache/**" /> |
| <include name="${about.file.name}" /> |
| </patternset> |
| </target> |
| |
| <target name="-define.zip.resource.set" depends="-define.plugin.properties" if="jar.based.plugin"> |
| <!-- define a resource set for a jar file based plugin --> |
| <zipfileset id="model.files.resource.set" src="${plugin.location}"> |
| <patternset refid="model.files" /> |
| </zipfileset> |
| </target> |
| |
| <target name="-define.file.resource.set" depends="-define.plugin.properties" unless="jar.based.plugin"> |
| <!-- define a resource set for a directory based plugin --> |
| <fileset id="model.files.resource.set" dir="${plugin.location.stem}"> |
| <patternset refid="model.files" /> |
| </fileset> |
| </target> |
| |
| <target name="-define.model.files.resource.set" depends="-define.zip.resource.set,-define.file.resource.set"> |
| <condition property="model.files.present"> |
| <resourcecount when="greater" count="0"> |
| <restrict> |
| <resources refid="model.files.resource.set" /> |
| <not xmlns="antlib:org.apache.tools.ant.types.resources.selectors"> |
| <name name="${about.file.name}" /> |
| </not> |
| </restrict> |
| </resourcecount> |
| </condition> |
| </target> |
| |
| <target name="-extract.model.files" depends="-define.model.files.resource.set" if="model.files.present"> |
| <!-- copy the model files --> |
| <copy todir="${basedir}"> |
| <resources refid="model.files.resource.set" /> |
| </copy> |
| </target> |
| </project> |