awips2/cave/build/p2-build.xml

483 lines
17 KiB
XML
Raw Normal View History

2022-05-05 12:34:50 -05:00
<project default="main" basedir=".">
<!-- TODO: Verify These Properties References An Actual Directory. -->
<property name="eclipse.dir" value="/awips2/eclipse" />
<property name="build.version" value="1.0.0" />
<property name="build.os" value="linux" />
<property name="build.ws" value="gtk" />
<property name="build.arch" value="x86_64" />
<property name="workspace.dir" value="${basedir}/../" />
<!-- Verify That We Have Access To A Copy Of Eclipse -->
<target name="verify">
</target>
<!-- Creates The Temporary Directories That We Will Need To Build
The P2 Repositories. -->
<target name="init" depends="verify">
<exec executable="/usr/bin/find"
outputproperty="eclipse.launcher.jar">
<arg value="${eclipse.dir}/plugins" />
<arg value="-name" />
<arg value="org.eclipse.equinox.launcher_*.jar" />
</exec>
<exec executable="/usr/bin/find"
outputproperty="pde.dir">
<arg value="${eclipse.dir}/plugins" />
<arg value="-name" />
<arg value="org.eclipse.pde.build_*" />
</exec>
<!-- We Will Use A Temporary p2 Directory And Leave The
cave/tmp Directory For The Original PDE Build. -->
<mkdir dir="${basedir}/cave/p2" />
<!-- Copy The P2 Build build.properties File. -->
<copy tofile="${basedir}/cave/p2/build.properties" file="${basedir}/build.properties.p2" verbose="true" />
<!-- We Will Copy The Plugins Here Eventually. -->
<mkdir dir="${basedir}/cave/p2/plugins" />
<!-- We Will Copy The Features Here Eventually. -->
<mkdir dir="${basedir}/cave/p2/features" />
<mkdir dir="${basedir}/cave/p2/repository" />
<mkdir dir="${basedir}/cave/p2/dist" />
<!-- BEGIN: Copy The Plugins -->
<echo message="PLUGINS: com.*/**" />
<copy todir="${basedir}/cave/p2/plugins">
<fileset dir="${workspace.dir}" includes="com.*/**" />
</copy>
<echo message="PLUGINS: ucar.*/**" />
<copy todir="${basedir}/cave/p2/plugins">
<fileset dir="${workspace.dir}" includes="ucar.*/**" />
</copy>
<echo message="PLUGINS: *.feature*/**" />
<copy todir="${basedir}/cave/p2/plugins">
<fileset dir="${workspace.dir}" includes="*.feature*/**" />
</copy>
<echo message="PLUGINS: ncsa.*/**" />
<copy todir="${basedir}/cave/p2/plugins">
<fileset dir="${workspace.dir}" includes="ncsa.*/**" />
</copy>
<echo message="PLUGINS: org.*/**" />
<copy todir="${basedir}/cave/p2/plugins">
<fileset dir="${workspace.dir}" includes="org.*/**" />
</copy>
<echo message="PLUGINS: net.*/**" />
<copy todir="${basedir}/cave/p2/plugins">
<fileset dir="${workspace.dir}" includes="net.*/**" />
</copy>
<echo message="PLUGINS: ohd*/**" />
<copy todir="${basedir}/cave/p2/plugins">
<fileset dir="${workspace.dir}" includes="ohd*/**" />
</copy>
<echo message="PLUGINS: javax.*/**" />
<copy todir="${basedir}/cave/p2/plugins">
<fileset dir="${workspace.dir}" includes="javax.*/**" />
</copy>
<echo message="PLUGINS: gov.*/**" />
<copy todir="${basedir}/cave/p2/plugins">
<fileset dir="${workspace.dir}" includes="gov.*/**" />
</copy>
<echo message="PLUGINS: edu.*/**" />
<copy todir="${basedir}/cave/p2/plugins">
<fileset dir="${workspace.dir}" includes="edu.*/**" />
</copy>
<echo message="PLUGINS: de.*/**" />
<copy todir="${basedir}/cave/p2/plugins">
<fileset dir="${workspace.dir}" includes="de.*/**" />
</copy>
<echo message="PLUGINS: it.*/**" />
<copy todir="${basedir}/cave/p2/plugins">
<fileset dir="${workspace.dir}" includes="it.*/**" />
</copy>
<echo message="PLUGINS: v*/**" />
<copy todir="${basedir}/cave/p2/plugins">
<fileset dir="${workspace.dir}" includes="v*/**" />
</copy>
<echo message="PLUGINS: ch.*/**" />
<copy todir="${basedir}/cave/p2/plugins">
<fileset dir="${workspace.dir}" includes="ch.*/**" />
</copy>
<!-- END: Copy The Plugins -->
</target>
<!-- Cleans Up Any Temporary Directories -->
<target name="clean">
<if>
<available file="${basedir}/cave/p2" type="dir" />
<then>
<delete includeemptydirs="true">
<fileset dir="${basedir}/cave/p2" />
</delete>
</then>
</if>
</target>
<tstamp>
<format property="build.timestamp" pattern="yyyyMMddHHmm" />
</tstamp>
<target name="p2.build" depends="clean, init">
<!-- We Need To Build The p2 Repos In A Certain Order Due To
Dependencies. -->
<!-- copy the com.raytheon.uf.viz.application.feature feature.
Used by the com.raytheon.viz.feature.awips feature. -->
<copy todir="${basedir}/cave/p2/features" verbose="true">
<fileset dir="${workspace.dir}" includes="com.raytheon.uf.viz.application.feature/**" />
</copy>
<antcall target="p2.build.repo">
<param name="feature" value="com.raytheon.viz.feature.awips" />
<param name="omit" value="true" />
</antcall>
<!--
we will still build this for the MSFT Windows CAVE.
-->
<antcall target="p2.build.repo">
<param name="feature" value="com.raytheon.uf.common.base.feature" />
</antcall>
<antcall target="p2.build.repo">
<param name="feature" value="com.raytheon.uf.viz.base.feature" />
</antcall>
<antcall target="p2.build.repo">
<param name="feature" value="com.raytheon.uf.viz.cots.feature" />
</antcall>
<antcall target="p2.build.repo">
<param name="feature" value="com.raytheon.uf.viz.common.core.feature" />
</antcall>
<antcall target="p2.build.repo">
<param name="feature" value="com.raytheon.uf.viz.localization.perspective.feature" />
</antcall>
<antcall target="p2.build.repo">
<param name="feature" value="com.raytheon.uf.viz.core.feature" />
</antcall>
<antcall target="p2.build.repo">
<param name="feature" value="com.raytheon.uf.viz.core.maps.feature" />
</antcall>
<antcall target="p2.build.repo">
<param name="feature" value="com.raytheon.uf.viz.sounding.feature" />
</antcall>
<antcall target="p2.build.repo">
<param name="feature" value="com.raytheon.uf.viz.dataplugin.obs.feature" />
</antcall>
<antcall target="p2.build.repo">
<param name="feature" value="com.raytheon.uf.viz.dataplugins.feature" />
</antcall>
<antcall target="p2.build.repo">
<param name="feature" value="com.raytheon.uf.viz.d2d.core.feature" />
</antcall>
<antcall target="p2.build.repo">
<param name="feature" value="com.raytheon.viz.radar.feature" />
</antcall>
<antcall target="p2.build.repo">
<param name="feature" value="com.raytheon.viz.text.feature" />
</antcall>
<antcall target="p2.build.repo">
<param name="feature" value="com.raytheon.viz.warngen.feature" />
</antcall>
<antcall target="p2.build.repo">
<param name="feature" value="com.raytheon.uf.viz.grid.feature" />
</antcall>
<antcall target="p2.build.repo">
<param name="feature" value="com.raytheon.uf.viz.kml.export.feature" />
</antcall>
<antcall target="p2.build.repo">
<param name="feature" value="com.raytheon.viz.gfe.feature" />
</antcall>
<antcall target="p2.build.repo">
<param name="feature" value="com.raytheon.uf.viz.displays.feature" />
</antcall>
<antcall target="p2.build.repo">
<param name="feature" value="com.raytheon.viz.satellite.feature" />
</antcall>
<antcall target="p2.build.repo">
<param name="feature" value="com.raytheon.uf.viz.satellite.goesr.feature" />
</antcall>
2022-05-05 12:34:50 -05:00
<antcall target="p2.build.repo">
<param name="feature" value="com.raytheon.uf.viz.ncep.core.feature" />
</antcall>
<antcall target="p2.build.repo">
<param name="feature" value="com.raytheon.uf.viz.aviation.advisory.feature" />
</antcall>
<antcall target="p2.build.repo">
<param name="feature" value="com.raytheon.uf.viz.ncep.dataplugins.feature" />
</antcall>
<antcall target="p2.build.repo">
<param name="feature" value="com.raytheon.viz.hydro.feature" />
</antcall>
<antcall target="p2.build.repo">
<param name="feature" value="com.raytheon.uf.viz.d2d.xy.feature" />
</antcall>
<antcall target="p2.build.repo">
<param name="feature" value="com.raytheon.uf.viz.ncep.displays.feature" />
</antcall>
<antcall target="p2.build.repo">
<param name="feature" value="com.raytheon.uf.viz.ncep.nsharp.feature" />
</antcall>
<antcall target="p2.build.repo">
<param name="feature" value="com.raytheon.uf.viz.archive.feature" />
</antcall>
<antcall target="p2.build.repo">
<param name="feature" value="com.raytheon.uf.viz.ncep.perspective.feature" />
</antcall>
<antcall target="p2.build.repo">
<param name="feature" value="com.raytheon.uf.viz.thinclient.feature" />
</antcall>
<antcall target="p2.build.repo">
<param name="feature" value="com.raytheon.uf.viz.registry.feature" />
</antcall>
<antcall target="p2.build.repo">
<param name="feature" value="com.raytheon.uf.viz.datadelivery.feature" />
</antcall>
<antcall target="p2.build.repo">
<param name="feature" value="com.raytheon.uf.viz.npp.feature" />
</antcall>
<antcall target="p2.build.repo">
<param name="feature" value="com.raytheon.uf.viz.d2d.skewt.feature" />
</antcall>
<antcall target="p2.build.repo">
<param name="feature" value="com.raytheon.viz.volumebrowser.feature" />
</antcall>
<antcall target="p2.build.repo">
<param name="feature" value="com.raytheon.uf.viz.d2d.nsharp.feature" />
</antcall>
<antcall target="p2.build.repo">
<param name="feature" value="com.raytheon.uf.viz.npp.sounding.feature" />
</antcall>
<antcall target="p2.build.repo">
<param name="feature" value="com.raytheon.uf.viz.ncep.npp.feature" />
</antcall>
<antcall target="p2.build.repo">
<param name="feature" value="com.raytheon.uf.viz.acarssounding.feature" />
</antcall>
<antcall target="p2.build.repo">
<param name="feature" value="com.raytheon.uf.viz.ncep.npp.feature" />
</antcall>
<antcall target="p2.build.repo">
<param name="feature" value="com.raytheon.viz.avnfps.feature" />
</antcall>
<antcall target="p2.build.repo">
<param name="feature" value="com.raytheon.uf.viz.dat.feature" />
</antcall>
<antcall target="p2.build.repo">
<param name="feature" value="com.raytheon.uf.viz.ffmp.feature" />
</antcall>
<antcall target="p2.build.repo">
<param name="feature" value="com.raytheon.uf.viz.scan.feature" />
</antcall>
<antcall target="p2.build.repo">
<param name="feature" value="com.raytheon.uf.viz.fssobs.feature" />
</antcall>
<antcall target="p2.build.repo">
<param name="feature" value="com.raytheon.uf.viz.d2d.gfe.feature" />
</antcall>
<antcall target="p2.build.repo">
<param name="feature" value="com.raytheon.uf.viz.d2d.damagepath.feature" />
</antcall>
<antcall target="p2.build.repo">
<param name="feature" value="com.raytheon.uf.viz.gisdatastore.feature" />
</antcall>
<antcall target="p2.build.repo">
<param name="feature" value="com.raytheon.uf.viz.d2d.ui.awips.feature" />
</antcall>
<antcall target="p2.build.repo">
<param name="feature" value="com.raytheon.uf.viz.alertview.feature" />
</antcall>
2022-05-05 12:34:50 -05:00
<antcall target="cleanup.features" />
</target>
<target name="wa-build" depends="p2.build" description="Builds work assignment specific features after the main build">
<for param="wa.feature.list.file">
<fileset dir="${basedir}" includes="*-wa-build.properties" />
<sequential>
<var name="wa.features" unset="true" />
<property file="@{wa.feature.list.file}" />
<for list="${wa.features}" param="wa.feature">
<sequential>
<antcall target="p2.build.repo">
<param name="feature" value="@{wa.feature}" />
</antcall>
</sequential>
</for>
</sequential>
</for>
</target>
<target name="wa-cleanup" depends="wa-build" description="Removes references to WA-specific features that should not be built as an RPM.">
<for param="wa.feature.list.file">
<fileset dir="${basedir}" includes="*-wa-build.properties" />
<sequential>
<var name="wa.features.ignore" unset="true" />
<property file="@{wa.feature.list.file}" />
<for list="${wa.features.ignore}" param="wa.feature">
<sequential>
<if>
<available file="${basedir}/cave/p2/features/@{wa.feature}" type="dir" />
<then>
<!-- Remove the feature directory. -->
<delete includeemptydirs="true">
<fileset dir="${basedir}/cave/p2/features/@{wa.feature}" />
</delete>
<!-- Remove references to the feature from features.txt -->
<exec executable="/bin/sed" output="${basedir}/cave/p2/dist/features.txt.tmp">
<arg value="/@{wa.feature}/d" />
<arg value="${basedir}/cave/p2/dist/features.txt" />
</exec>
<move file="${basedir}/cave/p2/dist/features.txt.tmp" tofile="${basedir}/cave/p2/dist/features.txt" />
</then>
</if>
</sequential>
</for>
</sequential>
</for>
</target>
<target name="main" depends="clean, p2.build, wa-build, wa-cleanup" />
<target name="p2.build.repo">
<!-- Copy The Feature -->
<copy todir="${basedir}/cave/p2/features">
<fileset dir="${workspace.dir}" includes="${feature}/**" />
</copy>
<!-- Update The Feature -->
<property name="process.feature.tool" value="${workspace.dir}/build/tools/ProcessFeature.jar" />
<java jar="${process.feature.tool}" fork="true" failonerror="false" resultproperty="feature.tool.exitcode">
<arg value="-u" />
<arg value="${basedir}/cave/p2/features/${feature}" />
<arg value="${build.version}" />
</java>
<if>
<equals arg1="${feature.tool.exitcode}" arg2="255" />
<then>
<fail message="${process.feature.tool} FAILED." />
</then>
</if>
<!-- Build The Repository -->
<java classname="org.eclipse.core.launcher.Main" fork="true" failonerror="true">
<arg value="-application" />
<arg value="org.eclipse.ant.core.antRunner" />
<arg value="-buildfile" />
<arg value="${pde.dir}/scripts/build.xml" />
<arg value="-Dbuilder=${basedir}/cave/p2" />
<arg value="-DbuildDirectory=${basedir}/cave/p2" />
<arg value="-DbaseLocation=${eclipse.dir}" />
<arg value="-DtopLevelElementId=${feature}" />
<arg value="-DforceContextQualifier=${build.timestamp}" />
<arg value="-Dconfigs=${build.os},${build.ws},${build.arch}" />
<classpath>
<pathelement location="${eclipse.launcher.jar}" />
</classpath>
</java>
<!-- Record that the feature has been built (for now) -->
<if>
<not>
<isset property="omit" />
</not>
<then>
<echo message="${feature}${line.separator}" file="${basedir}/cave/p2/dist/features.txt" append="true" />
</then>
</if>
<!-- Package The Repository -->
<zip destfile="${basedir}/cave/p2/dist/${feature}-repo-${build.os}.${build.arch}.zip" basedir="${basedir}/cave/p2/repository" />
<!-- Cleanup The Current Build -->
<if>
<available file="${basedir}/cave/p2/I.CAVE" type="dir" />
<then>
<delete includeemptydirs="true">
<fileset dir="${basedir}/cave/p2/I.CAVE" />
</delete>
</then>
</if>
<if>
<available file="${basedir}/cave/p2/repository" type="dir" />
<then>
<delete includeemptydirs="true">
<fileset dir="${basedir}/cave/p2/repository" />
</delete>
</then>
</if>
<mkdir dir="${basedir}/cave/p2/repository" />
</target>
<target name="cleanup.features">
<!-- Remove 'com.raytheon.viz.feature.awips' -->
<if>
<available file="${basedir}/cave/p2/features/com.raytheon.viz.feature.awips" type="dir" />
<then>
<delete includeemptydirs="true">
<fileset dir="${basedir}/cave/p2/features/com.raytheon.viz.feature.awips" />
</delete>
</then>
</if>
<!-- Remove 'com.raytheon.uf.viz.feature.alertviz' -->
<if>
<available file="${basedir}/cave/p2/features/com.raytheon.uf.viz.feature.alertviz" type="dir" />
<then>
<delete includeemptydirs="true">
<fileset dir="${basedir}/cave/p2/features/com.raytheon.uf.viz.feature.alertviz" />
</delete>
</then>
</if>
<!-- Remove 'com.raytheon.viz.feature.awips.developer' -->
<if>
<available file="${basedir}/cave/p2/features/com.raytheon.viz.feature.awips.developer" type="dir" />
<then>
<delete includeemptydirs="true">
<fileset dir="${basedir}/cave/p2/features/com.raytheon.viz.feature.awips.developer" />
</delete>
</then>
</if>
<!-- Remove 'com.raytheon.uf.common.base.feature' -->
<if>
<available file="${basedir}/cave/p2/features/com.raytheon.uf.common.base.feature" type="dir" />
<then>
<delete includeemptydirs="true">
<fileset dir="${basedir}/cave/p2/features/com.raytheon.uf.common.base.feature" />
</delete>
</then>
</if>
<!-- Remove 'com.raytheon.uf.viz.collaboration.product.feature' -->
<if>
<available file="${basedir}/cave/p2/features/com.raytheon.uf.viz.collaboration.product.feature" type="dir" />
<then>
<delete includeemptydirs="true">
<fileset dir="${basedir}/cave/p2/features/com.raytheon.uf.viz.collaboration.product.feature" />
</delete>
</then>
</if>
</target>
<taskdef resource="net/sf/antcontrib/antcontrib.properties"/>
</project>