blob: a03904c93a8b45420a85dee00f7fef0f684b206d [file] [log] [blame]
<?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.shutdown"/>
<pathelement location="../org.eclipse.virgo.kernel.authentication"/>
<pathelement location="../org.eclipse.virgo.kernel.core"/>
<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"/>
<!--P2 publishing properties-->
<property name="publishing.dir" value="${basedir}/target/repository"/>
<property name="distro.res" value="${basedir}/distro_resources"/>
<property name="p2.repo.url" value="file:///${publishing.dir}"/>
<property name="product.file" value="${basedir}/org.eclipse.virgo.kernel.product"/>
<property name="lib.product.file" value="${basedir}/org.eclipse.virgo.kernel.lib.product"/>
<property name="lib.kernel.product.file" value="${basedir}/org.eclipse.virgo.kernel.lib.kernel.product"/>
<property name="repository.ext.product.file" value="${basedir}/org.eclipse.virgo.kernel.repository.ext.product"/>
<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="package" depends="ivy.init">
<delete dir="${package.output.dir}" quiet="true"/>
<mkdir dir="${package.output.dir}"/>
<ivy:resolve resolveId="copy.path" file="${basedir}/lib-ivy.xml" transitive="true"/>
<ivy:retrieve resolveId="copy.path" pattern="${package.output.dir}/lib/[artifact]-[revision].[ext]" conf="lib" type="jar"/>
<ivy:resolve resolveId="copy.path" file="${basedir}/kernel-ivy.xml" transitive="true"/>
<ivy:retrieve resolveId="copy.path" pattern="${package.output.dir}/lib/kernel/[artifact]-[revision].[ext]" conf="lib-kernel" type="jar"/>
<!-- Workaround for the issue that exclude does not work properly for Equinox in kernel-ivy.xml -->
<delete file="${package.output.dir}/lib/kernel/org.eclipse.osgi-${org.eclipse.osgi}.jar"/>
<ivy:resolve resolveId="copy.path" file="${basedir}/repository-ext-ivy.xml" transitive="true"/>
<ivy:retrieve resolveId="copy.path" pattern="${package.output.dir}/repository/ext/[artifact]-[revision].[ext]" conf="repository-ext" type="jar"/>
<mkdir dir="${package.output.dir}/config"/>
<mkdir dir="${package.output.dir}/work"/>
<mkdir dir="${package.output.dir}/pickup"/>
<echo file="${package.output.dir}/lib/.version"
message="virgo.kernel.version=${bundle.version}&#xa;"/>
<copy todir="${package.output.dir}" failonerror="false">
<fileset dir="${basedir}/resources"/>
</copy>
<copy todir="${package.output.dir}/bin" failonerror="false">
<fileset dir="${basedir}/bin"/>
</copy>
<copy todir="${package.output.dir}/lib" failonerror="false">
<fileset dir="${basedir}/lib"/>
<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="EQUINOX.REGION.VERSION" value="${org.eclipse.equinox.region}"/>
<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="OSGI.EXTENSIONS.VERSION" value="${org.eclipse.virgo.osgi}"/>
<filter token="FELIX.GOGO.VERSION" value="${org.apache.felix.gogo}"/>
<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>
<copy todir="${package.output.dir}/config" failonerror="false">
<fileset dir="${basedir}/config" excludes="keystore"/>
<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.VERSION" value="${org.apache.felix.gogo}"/>
<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>
<copy todir="${package.output.dir}/repository/ext" failonerror="false">
<fileset dir="${basedir}/repository/ext"/>
</copy>
<copy todir="${package.output.dir}/repository/ext" failonerror="false">
<fileset dir="${package.output.dir}/lib/kernel">
<include name="org.eclipse.virgo.kernel.agent.dm-*.jar"/>
</fileset>
</copy>
<move todir="${package.output.dir}/repository/ext" failonerror="false">
<fileset dir="${package.output.dir}/lib/kernel">
<include name="org.eclipse.virgo.kernel.dmfragment-*.jar"/>
<include name="org.eclipse.virgo.kernel.deployer.dm-*.jar"/>
</fileset>
</move>
<mkdir dir="${package.output.dir}/repository/usr"/>
<copy file="${basedir}/config/keystore" todir="${package.output.dir}/config" failonerror="false"/>
<chmod perm="600">
<fileset dir="${package.output.dir}/config">
<include name="org.eclipse.virgo.kernel.jmxremote.access.properties"/>
</fileset>
</chmod>
<chmod perm="755">
<fileset dir="${package.output.dir}/bin">
<include name="*.sh"/>
</fileset>
</chmod>
<mkdir dir="${artifacts.dir}"/>
<zip destfile="${package.output.file}">
<zipfileset dir="${package.dir}" includes="${package.basename}/bin/*.sh" filemode="755"/>
<zipfileset dir="${package.dir}" includes="${package.basename}/config/org.eclipse.virgo.kernel.jmxremote.access.properties" filemode="600"/>
<zipfileset dir="${package.dir}">
<exclude name="${package.basename}/bin/*.sh"/>
<exclude name="${package.basename}/config/org.eclipse.virgo.kernel.jmxremote.access.properties"/>
</zipfileset>
</zip>
</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>
<target name="package.resources" depends="package"
description="Creates a special bundle containing Virgo entities that are not bundles">
<property name="meta.inf" value="${distro.res}/META-INF"/>
<property name="content" value="${distro.res}/root_content"/>
<property name="resources.jar" value="${package.output.dir}/lib/org.eclipse.virgo.kernel.resources.jar"/>
<zip destfile="${resources.jar}">
<zipfileset dir="${distro.res}"/>
<zipfileset dir="${package.dir}/${package.basename}"
includes="bin/*.sh" filemode="755"/>
<zipfileset dir="${package.dir}/${package.basename}"
includes="config/org.eclipse.virgo.kernel.jmxremote.access.properties" filemode="600"/>
<zipfileset dir="${package.dir}/${package.basename}">
<exclude name="bin/*.sh"/>
<exclude name="config/org.eclipse.virgo.kernel.jmxremote.access.properties"/>
<exclude name="**/*.jar"/>
</zipfileset>
</zip>
</target>
<target name="p2.publish" depends="package.resources, p2.extract-publisher"
description="Publishes bundles, features and product">
<java jar="${p2.launcher.jar}" fork="true" taskname="p2bundles" failonerror="true" maxmemory="256m">
<arg line="-application org.eclipse.equinox.p2.publisher.FeaturesAndBundlesPublisher"/>
<arg line="-metadataRepository ${p2.repo.url}"/>
<arg line="-artifactRepository ${p2.repo.url}"/>
<arg line="-bundles ${package.output.dir}/lib,${package.output.dir}/repository/ext"/>
<arg line="-publishArtifacts"/>
<arg line="-configs all"/>
</java>
<sshexec host="build.eclipse.org"
username="${eclipse.buildId}"
keyfile="${key.file}"
passphrase="${passphrase}"
command="mkdir -pv /opt/public/rt/virgo/update-site/${release.type}/${build.stamp}"/>
<scp todir="${eclipse.buildId}@build.eclipse.org:/opt/public/rt/virgo/update-site/${release.type}/${build.stamp}/"
keyfile="${key.file}"
passphrase="${passphrase}">
<fileset dir="${publishing.dir}"/>
</scp>
<!-- <java jar="${p2.launcher.jar}" fork="true" taskname="p2product" failonerror="true" maxmemory="256m">
<arg line="-application org.eclipse.equinox.p2.publisher.ProductPublisher"/>
<arg line="-metadataRepository ${p2.repo.url}"/>
<arg line="-artifactRepository ${p2.repo.url}"/>
<arg line="-productFile ${product.file}"/>
<arg line="-append"/>
<arg line="-publishArtifacts"/>
<arg line="-flavor tooling"/>
<arg line="-configs all"/>
</java>
<java jar="${p2.launcher.jar}" fork="true" taskname="p2product" failonerror="true" maxmemory="256m">
<arg line="-application org.eclipse.equinox.p2.publisher.ProductPublisher"/>
<arg line="-metadataRepository ${p2.repo.url}"/>
<arg line="-artifactRepository ${p2.repo.url}"/>
<arg line="-productFile ${lib.product.file}"/>
<arg line="-append"/>
<arg line="-publishArtifacts"/>
<arg line="-flavor tooling"/>
<arg line="-configs all"/>
</java>
<java jar="${p2.launcher.jar}" fork="true" taskname="p2product" failonerror="true" maxmemory="256m">
<arg line="-application org.eclipse.equinox.p2.publisher.ProductPublisher"/>
<arg line="-metadataRepository ${p2.repo.url}"/>
<arg line="-artifactRepository ${p2.repo.url}"/>
<arg line="-productFile ${lib.kernel.product.file}"/>
<arg line="-append"/>
<arg line="-publishArtifacts"/>
<arg line="-flavor tooling"/>
<arg line="-configs all"/>
</java>
<java jar="${p2.launcher.jar}" fork="true" taskname="p2product" failonerror="true" maxmemory="256m">
<arg line="-application org.eclipse.equinox.p2.publisher.ProductPublisher"/>
<arg line="-metadataRepository ${p2.repo.url}"/>
<arg line="-artifactRepository ${p2.repo.url}"/>
<arg line="-productFile ${repository.ext.product.file}"/>
<arg line="-append"/>
<arg line="-publishArtifacts"/>
<arg line="-flavor tooling"/>
<arg line="-configs all"/>
</java> -->
<delete dir="${p2.publishing.dir}" excludes="p2agent.zip" includeemptydirs="true" quiet="true"/>
</target>
</project>