| <?xml version="1.0" encoding="UTF-8"?> |
| <project name="build-kernel" xmlns:ivy="antlib:org.apache.ivy.ant"> |
| |
| <path id="unit.test.bundles"> |
| <pathelement location="../org.eclipse.virgo.kernel.artifact"/> |
| <pathelement location="../org.eclipse.virgo.kernel.services"/> |
| <pathelement location="../org.eclipse.virgo.kernel.osgi"/> |
| <pathelement location="../org.eclipse.virgo.kernel.deployer"/> |
| <pathelement location="../org.eclipse.virgo.kernel.userregionfactory"/> |
| <pathelement location="../org.eclipse.virgo.kernel.userregion"/> |
| <pathelement location="../org.eclipse.virgo.kernel.agent.dm"/> |
| <pathelement location="../org.eclipse.virgo.kernel.kerneldmfragment"/> |
| <pathelement location="../org.eclipse.virgo.kernel.dmfragment"/> |
| <pathelement location="../org.eclipse.virgo.kernel.deployer.dm"/> |
| <pathelement location="../org.eclipse.virgo.kernel.model"/> |
| <pathelement location="../org.eclipse.virgo.kernel.shell"/> |
| <pathelement location="../org.eclipse.virgo.kernel.osgicommand"/> |
| <pathelement location="../org.eclipse.virgo.kernel.stubs"/> |
| </path> |
| |
| <path id="bundles"> |
| <path refid="unit.test.bundles" /> |
| <pathelement location="../org.eclipse.virgo.kernel"/> |
| <pathelement location="../org.eclipse.virgo.kernel.test"/> |
| <pathelement location="../org.eclipse.virgo.kernel.deployer.testbundle"/> |
| <pathelement location="../org.eclipse.virgo.kernel.deployer.test"/> |
| </path> |
| |
| <property file="${basedir}/../build.properties"/> |
| <property file="${basedir}/../build.versions"/> |
| <import file="${basedir}/../virgo-build/multi-bundle/default.xml"/> |
| |
| <target name="precommit" depends="clean, clean-integration, test, findbugs, package, smoke-test" |
| description="Performs a CI server-like build, should be run prior to performing a Git push"/> |
| |
| <target name="fetch-nano-updatesite"> |
| <mkdir dir="${target.dir}"/> |
| |
| <condition property="dependancy.folder" value="milestone" else="${adjusted.release.type}"> |
| <or> |
| <contains string="${org.eclipse.virgo.nano}" substring=".M"/> |
| <contains string="${org.eclipse.virgo.nano}" substring=".RC"/> |
| </or> |
| </condition> |
| |
| <condition property="dependancy.folder" value="release" else="${adjusted.release.type}"> |
| <contains string="${org.eclipse.virgo.nano}" substring=".RELEASE"/> |
| </condition> |
| |
| <get src="http://build.eclipse.org/rt/virgo/zips/${dependancy.folder}/VN/${org.eclipse.virgo.nano}/virgo-nano-updatesite-${org.eclipse.virgo.nano}.zip" |
| dest="${target.dir}/virgo-nano-updatesite-${org.eclipse.virgo.nano}.zip" |
| usetimestamp="true" /> |
| |
| <echo message="Fetched the Nano zip to ${target.dir}/virgo-nano-updatesite-${org.eclipse.virgo.nano}.zip"/> |
| </target> |
| |
| <target name="package" depends="ivy.init, fetch-nano-updatesite"> |
| <delete dir="${package.output.dir}" quiet="true"/> |
| <mkdir dir="${package.output.dir}"/> |
| |
| <unzip src="${target.dir}/virgo-nano-updatesite-${org.eclipse.virgo.nano}.zip" dest="${p2.repository.dir}"> |
| <globmapper from="virgo-nano-updatesite-${org.eclipse.virgo.nano}/*" to="*"/> |
| </unzip> |
| <delete file="${target.dir}/virgo-nano-updatesite-${org.eclipse.virgo.nano}.zip" quiet="true"/> |
| |
| <echo message="Fetched the Nano update site zip to ${target.dir}/virgo-nano-updatesite-${org.eclipse.virgo.nano}.zip"/> |
| |
| <!-- Assemble the kernel bundles for publishing --> |
| <ivy:resolve resolveId="copy.path" file="${basedir}/plugins-ivy.xml" transitive="true"/> |
| <ivy:retrieve resolveId="copy.path" pattern="${target.dir}/assembly/plugins/[artifact]_[revision].[ext]" conf="plugins" type="jar"/> |
| <!-- Prepare the features for publishing --> |
| <copy todir="${target.dir}/assembly/features" failonerror="false"> |
| <fileset dir="${basedir}/publish_resources/features" excludes="keystore"/> |
| <filterset> |
| <filter token="REGION.VERSION" value="${org.eclipse.equinox.region}"/> |
| <filter token="KERNEL.VERSION" value="${bundle.version}"/> |
| <filter token="REPOSITORY.VERSION" value="${org.eclipse.virgo.repository}"/> |
| <filter token="SPRING.VERSION" value="${org.springframework}"/> |
| </filterset> |
| </copy> |
| |
| <!-- prepare Kernel's resources - configurations and bundles that are not installed initially --> |
| <property name="kernel.resources" value="${target.dir}/kernel_resources"/> |
| |
| <ivy:resolve resolveId="copy.path" file="${basedir}/lib-ivy.xml" transitive="true"/> |
| <ivy:retrieve resolveId="copy.path" pattern="${kernel.resources}/lib/[artifact]_[revision].[ext]" conf="lib" type="jar"/> |
| |
| <ivy:resolve resolveId="copy.path" file="${basedir}/repository-ext-ivy.xml" transitive="true"/> |
| <ivy:retrieve resolveId="copy.path" pattern="${kernel.resources}/repository/ext/[artifact]_[revision].[ext]" conf="repository-ext" type="jar"/> |
| |
| <mkdir dir="${kernel.resources}/configuration"/> |
| |
| <copy todir="${kernel.resources}/configuration" failonerror="false"> |
| <fileset dir="${basedir}/configuration" excludes="org.eclipse.virgo.kernel.userregion.properties"/> |
| </copy> |
| |
| <copy todir="${kernel.resources}" failonerror="false"> |
| <fileset dir="${basedir}/resources"/> |
| </copy> |
| |
| <copy todir="${kernel.resources}/repository/ext" failonerror="false"> |
| <fileset dir="${basedir}/repository/ext"/> |
| </copy> |
| |
| <copy todir="${kernel.resources}/repository/ext" failonerror="false"> |
| <fileset dir="${target.dir}/assembly/plugins"> |
| <include name="org.eclipse.virgo.kernel.agent.dm_*.jar"/> |
| </fileset> |
| </copy> |
| <!-- Prepare these two as part of the resources. They need a later installation, not with the other initial kernel region bundles. --> |
| <copy todir="${kernel.resources}/plugins" failonerror="false"> |
| <fileset dir="${target.dir}/assembly/plugins"> |
| <include name="org.eclipse.virgo.kernel.userregion_*.jar"/> |
| <include name="org.eclipse.virgo.kernel.osgicommand_*.jar"/> |
| </fileset> |
| </copy> |
| |
| <move todir="${kernel.resources}/repository/ext" failonerror="false"> |
| <fileset dir="${target.dir}/assembly/plugins"> |
| <include name="org.eclipse.virgo.kernel.dmfragment_*.jar"/> |
| <include name="org.eclipse.virgo.kernel.deployer.dm_*.jar"/> |
| </fileset> |
| </move> |
| |
| <mkdir dir="${kernel.resources}/repository/usr"/> |
| |
| <property name="kernel.resources.location" value="${target.dir}/kernel_resources_zipped"/> |
| <zip destfile="${kernel.resources.location}/binary/kernel_resources"> |
| <zipfileset dir="${kernel.resources}"/> |
| </zip> |
| <delete dir="${kernel.resources}" quiet="true"/> |
| |
| <!-- Assemble and prepare for publishing the Kernel's specific resources --> |
| <property name="specific.resources" value="${target.dir}/specific_resources"/> |
| <mkdir dir="${specific.resources}/lib"/> |
| <mkdir dir="${specific.resources}/configuration"/> |
| |
| <copy todir="${specific.resources}/configuration" failonerror="false"> |
| <fileset dir="${basedir}/configuration"> |
| <include name="org.eclipse.virgo.kernel.userregion.properties"/> |
| </fileset> |
| <filterset> |
| <filter token="ASPECTJ.VERSION" value="${org.aspectj}"/> |
| <filter token="OSGI.SERVICES.VERSION" value="${org.eclipse.osgi.services}"/> |
| <filter token="EQUINOX.EVENT.VERSION" value="${org.eclipse.equinox.event}"/> |
| <filter token="EQUINOX.CONFIGADMIN.VERSION" value="${org.eclipse.equinox.cm}"/> |
| <filter token="EQUINOX.DS.VERSION" value="${org.eclipse.equinox.ds}"/> |
| <filter token="EQUINOX.UTIL.VERSION" value="${org.eclipse.equinox.util}"/> |
| <filter token="KERNEL.VERSION" value="${bundle.version}"/> |
| <filter token="MEDIC.VERSION" value="${org.eclipse.virgo.medic}"/> |
| <filter token="REPOSITORY.VERSION" value="${org.eclipse.virgo.repository}"/> |
| <filter token="SLF4J.VERSION" value="${org.slf4j}"/> |
| <filter token="SPRING.DM.VERSION" value="${org.springframework.osgi}"/> |
| <filter token="SPRING.VERSION" value="${org.springframework}"/> |
| <filter token="UTIL.VERSION" value="${org.eclipse.virgo.util}"/> |
| <filter token="FELIX.GOGO.RUNTIME.VERSION" value="${org.apache.felix.gogo.runtime}"/> |
| <filter token="FELIX.GOGO.COMMAND.VERSION" value="${org.apache.felix.gogo.command}"/> |
| <filter token="FELIX.GOGO.SHELL.VERSION" value="${org.apache.felix.gogo.shell}"/> |
| <filter token="MINA.CORE.VERSION" value="${com.springsource.org.apache.mina.core}"/> |
| <filter token="SSHD.CORE.VERSION" value="${com.springsource.org.apache.sshd.core}"/> |
| <filter token="EQUINOX.CONSOLE.VERSION" value="${org.eclipse.equinox.console.supportability}"/> |
| </filterset> |
| </copy> |
| |
| <!-- get and reconfigure the serviceability.xml and .version --> |
| <unzip src="${p2.repository.dir}/binary/nano_specific_resources_1.0.0" dest="${specific.resources}"> |
| <globmapper from="nano_specific_resources/*" to="*"/> |
| </unzip> |
| <echo file="${specific.resources}/lib/.version" append="true" message="virgo.kernel.version=${bundle.version}
"/> |
| |
| <replaceregexp match="virgo-nano" replace="virgo-kernel" flags="g" |
| file="${specific.resources}/configuration/serviceability.xml"/> |
| |
| <property name="specific.resources.location" value="${target.dir}/specific_resources_zipped"/> |
| <zip destfile="${specific.resources.location}/binary/kernel_specific_resources"> |
| <zipfileset dir="${specific.resources}"/> |
| </zip> |
| <delete dir="${specific.resources}" quiet="true"/> |
| |
| <!-- Publish --> |
| <mkdir dir="${artifacts.dir}"/> |
| |
| <antcall target="fetch-unzipped-virgo-build-tools"/> |
| |
| <antcall target="p2.generate-inf"> |
| <param name="source" value="${target.dir}/assembly/features"/> |
| </antcall> |
| |
| <property name="p2.products.location" value="${basedir}/publish_resources/products"/> |
| |
| <antcall target="p2.publish-binary"> |
| <param name="repository" value="${p2.repository.dir}"/> |
| <param name="source" value="${kernel.resources.location}"/> |
| </antcall> |
| <echo message="Published the kernel resources to ${p2.repository.dir}."/> |
| |
| <antcall target="p2.publish-binary"> |
| <param name="repository" value="${p2.repository.dir}"/> |
| <param name="source" value="${specific.resources.location}"/> |
| </antcall> |
| <echo message="Published the kernel specific resources to ${p2.repository.dir}."/> |
| |
| <antcall target="p2.publish-bundles-features"> |
| <param name="repository" value="${p2.repository.dir}"/> |
| <param name="source" value="${target.dir}/assembly"/> |
| </antcall> |
| <echo message="Published bundles and features to ${p2.repository.dir}."/> |
| |
| <antcall target="p2.publish-product"> |
| <param name="repository" value="${p2.repository.dir}"/> |
| <param name="product.file.location" value="${p2.products.location}/kernel-base/kernel-base.product"/> |
| </antcall> |
| <echo message="Published kernel base product to ${p2.repository.dir}."/> |
| |
| <antcall target="p2.publish-product"> |
| <param name="repository" value="${p2.repository.dir}"/> |
| <param name="product.file.location" value="${p2.products.location}/kernel/kernel.product"/> |
| </antcall> |
| <echo message="Published kernel product to ${p2.repository.dir}."/> |
| |
| <antcall target="p2.install-virgo-product"> |
| <param name="repository" value="${p2.repository.dir}"/> |
| <param name="destination" value="${package.output.dir}"/> |
| <param name="product.iu" value="kernel.product"/> |
| </antcall> |
| <echo message="Installed Virgo Kernel for distribution purposes."/> |
| |
| <delete dir="${package.output.dir}/Eclipse.app" quiet="true"/> |
| |
| <zip destfile="${package.output.file}"> |
| <zipfileset dir="${package.dir}" includes="${package.basename}/bin/*.sh" filemode="755"/> |
| <zipfileset dir="${package.dir}" includes="${package.basename}/configuration/org.eclipse.virgo.kernel.jmxremote.access.properties" filemode="600"/> |
| <zipfileset dir="${package.dir}"> |
| <exclude name="${package.basename}/bin/*.sh"/> |
| <exclude name="${package.basename}/configuration/org.eclipse.virgo.kernel.jmxremote.access.properties"/> |
| </zipfileset> |
| </zip> |
| <zip destfile="${updatesite.output.file}"> |
| <zipfileset dir="${p2.repository.dir}"/> |
| </zip> |
| |
| <delete dir="${kernel.resources.location}" quiet="true"/> |
| <delete dir="${specific.resources.location}" quiet="true"/> |
| <delete dir="${target.dir}/assembly" quiet="true"/> |
| <delete dir="${tools.dir}" quiet="true"/> |
| </target> |
| |
| <target name="smoke-test" description="Runs a smoke test on the kernel packaged build"> |
| <path id="smoke.test.bundles"> |
| <pathelement location="${basedir}/../org.eclipse.virgo.kernel.smoketest" /> |
| </path> |
| <antcall target="test.pre"/> |
| <all-bundles target="test-package" buildpathRef="smoke.test.bundles"> |
| <property name="package.output.file" value="${package.output.file}"/> |
| <property name="package.basename" value="${package.basename}"/> |
| </all-bundles> |
| <antcall target="test.post"/> |
| </target> |
| |
| </project> |