<!-- This build.xml file is designed to be used for building COE SOFTWARE Segments. -->
<!-- SOFTWARE segments include source code than may need to be extracted -->
<!-- and then compiled. -->
<project name="COE" default="build" basedir="../../..">
<!-- Segment Name -->
<property name="name" value="COE"/>
<!-- Segment Type -->
<property name="type" value="SOFTWARE"/>
<!-- Segment Version -->
<property name="version" value="1.1.4.1"/>
<!-- Segment Full Name -->
<property name="fullname" value="COE Kernel"/>
<!-- Segment Architecture -->
<property name="os" value="COE"/>
<!-- property name="os" value="LINUX"/ -->
<!-- property name="os" value="MS"/ -->
<!-- property name="os" value="SOL"/ -->
<!-- Segment Architecture -->
<property name="cpu" value="ALL"/>
<!-- property name="cpu" value="I586"/ -->
<!-- property name="cpu" value="SPARC"/ -->
<!-- Segment Architecture -->
<property name="arch" value="${os}_${cpu}"/>
<!-- Segment Name Seperator -->
<property name="sep" value="-"/>
<!-- Long Segment Name -->
<property name="segname"
value="${name}${sep}${type}${sep}${version}${sep}${arch}"/>
<!-- COE Enviroment -->
<property name="coe.home" value="/h/COE"/>
<property name="coe.comp" value="/h/COE/Comp"/>
<property name="coe.cots" value="/h/COTS"/>
<property name="coe.apps" value="/h"/>
<property name="coe.user" value="/h/USERS"/>
<property name="coe.data" value="/h/DATA"/>
<!-- Install Directory -->
<property name="install.dir" value="${coe.home}"/>
<!-- Build Directory -->
<property name="build.dir" value="src/OpenCOE/build/${name}"/>
<!-- Build Temporary Directory -->
<property name="tmp.dir" value="src/OpenCOE/build/tmp"/>
<!-- Distribution Directory -->
<property name="dist.dir" value="src/OpenCOE/build/dist"/>
<!-- ========== COE SDK Targets ======================================== -->
<target name="ArchUpdate" depends="build"
description="(public) Updates Architecture type in SegInfo file.">
<filter token="CPU" value="${cpu}"/>
<filter token="OS" value="${os}"/>
<copy todir="${tmp.dir}/SegDescrip" overwrite="true" filtering="true">
<fileset dir="${build.dir}/SegDescrip">
<include name="SegInfo"/>
</fileset>
</copy>
<copy todir="${build.dir}/SegDescrip" overwrite="true">
<fileset dir="${tmp.dir}/SegDescrip">
<include name="SegInfo"/>
</fileset>
</copy>
</target>
<target name="CalcSpace" depends="build"
description="(public) Calculates disk space used by segment.">
<exec executable="/usr/bin/du" os="Linux"
output="${tmp.dir}/seg.size">
<arg value="-sk"/>
<arg value="${build.dir}"/>
</exec>
<exec executable="/usr/bin/cut" os="Linux"
outputproperty="seg.size">
<arg value="-f1"/>
<arg value="${tmp.dir}/seg.size"/>
</exec>
<filter token="SIZE" value="${seg.size}"/>
<copy todir="${tmp.dir}/SegDescrip" overwrite="true" filtering="true">
<fileset dir="${build.dir}/SegDescrip">
<include name="SegInfo"/>
</fileset>
</copy>
<copy todir="${build.dir}/SegDescrip" overwrite="true">
<fileset dir="${tmp.dir}/SegDescrip">
<include name="SegInfo"/>
</fileset>
</copy>
</target>
<target name="CanInstall" depends="build"
description="(public) Runs checks used by COEInstaller.">
</target>
<target name="MakeAttribs" depends="build"
description="(public) Creates the FileAttribs file.">
</target>
<target name="MakeSegment" depends="clean, VerifySeg"
description="(public) Creates basic segment file.">
<antcall target="segtar"/>
</target>
<target name="MakeInstall"
description="(public) Packages segment for distribution.">
<antcall target="insttar"/>
</target>
<target name="TestInstall" depends="build"
description="(public) Installs the segment from the build directory.">
</target>
<target name="TestRemove" depends="TestInstall"
description="(public) Deinstalls segment without removing it.">
</target>
<target name="TimeStamp" depends="build"
description="(public) Puts current time and date into VERSION file.">
<tstamp>
<format property="seg.time"
pattern="MM/dd/yyyy : hh:mm"/>
</tstamp>
<filter token="TIMESTAMP" value="${seg.time}"/>
<copy todir="${tmp.dir}/SegDescrip" overwrite="true" filtering="true">
<fileset dir="${build.dir}/SegDescrip">
<include name="VERSION"/>
</fileset>
</copy>
<copy todir="${build.dir}/SegDescrip" overwrite="true">
<fileset dir="${tmp.dir}/SegDescrip">
<include name="VERSION"/>
</fileset>
</copy>
</target>
<target name="VerUpdate" depends="build"
description="(public) Puts current version into VERSION file.">
<filter token="VERSION" value="${version}"/>
<copy todir="${tmp.dir}/SegDescrip" overwrite="true" filtering="true">
<fileset dir="${build.dir}/SegDescrip">
<include name="VERSION"/>
</fileset>
</copy>
<copy todir="${build.dir}/SegDescrip" overwrite="true">
<fileset dir="${tmp.dir}/SegDescrip">
<include name="VERSION"/>
</fileset>
</copy>
</target>
<target name="VerifySeg" depends="ArchUpdate, CalcSpace, TimeStamp, VerUpdate"
description="(public) Verifies Segment Compliance,validates with MD5 checksum">
<antcall target="checksum"/>
</target>
<target name="checksum"
description="(private) Generates MD5 checksum for segment">
<antcall target="tmptar"/>
<checksum file="${tmp.dir}/${segname}.tar" property="seg.sum" />
<echo file="${build.dir}/SegDescrip/Validated" message="${seg.sum}"/>
</target>
<!-- ========== Utility Targets ======================================== -->
<target name="clean"
description="(public) Clean build directories">
<!-- Delete build directories -->
<delete dir="src/OpenCOE/build/classes"/>
<delete dir="src/OpenCOE/build/${name}"/>
<delete dir="src/OpenCOE/build/tmp"/>
</target>
<target name="prepare"
description="(private) Create build directories">
<!-- Create build directories -->
<mkdir dir="src/OpenCOE/build/classes"/>
<mkdir dir="src/OpenCOE/build/dist"/>
<mkdir dir="src/OpenCOE/build/${name}"/>
<mkdir dir="src/OpenCOE/build/tmp"/>
</target>
<target name="clean-extract"
description="(public) Clean extraction directories">
<!-- Delete build directories -->
<!-- delete dir="src/${name}/*"/ -->
</target>
<target name="clean-dist"
description="(public) Clean Distribution directories">
<!-- Delete build directories -->
<delete dir="src/OpenCOE/build/dist"/>
</target>
<target name="clean-all"
description="(public) Clean ALL directories">
<antcall target="clean"/>
<antcall target="clean-dist"/>
<antcall target="clean-extract"/>
<ant dir="${basedir}" antfile="src/${name}/build/build.xml" target="clean" inheritAll="false"/>
</target>
<!-- ========== Build SOFTWARE ======================================== -->
<target name="prebuild"
description="(private) Builds COE SegDescrip files"
depends="prepare">
<!-- copy the SegDescrip files -->
<copy todir="${build.dir}/SegDescrip">
<fileset dir="src/OpenCOE/SEGROOT/SegDescrip">
<include name="*"/>
</fileset>
</copy>
<!-- update the SegName file -->
<filter token="FULLNAME" value="${fullname}"/>
<filter token="PREFIX" value="${name}"/>
<filter token="TYPE" value="${type}"/>
<copy todir="${build.dir}/SegDescrip" overwrite="true" filtering="true">
<fileset dir="src/OpenCOE/SEGROOT/SegDescrip">
<include name="SegName"/>
</fileset>
</copy>
<!-- overwrite default scripts with architecture specific files -->
<move file="${build.dir}/SegDescrip/DEINSTALL.${arch}"
failonerror="false"
tofile="${build.dir}/SegDescrip/DEINSTALL"/>
<move file="${build.dir}/SegDescrip/PostInstall.${arch}"
failonerror="false"
tofile="${build.dir}/SegDescrip/PostInstall"/>
<move file="${build.dir}/SegDescrip/PreInstall.${arch}"
failonerror="false"
tofile="${build.dir}/SegDescrip/PreInstall"/>
<!-- delete remaing architecture specific scripts -->
<delete>
<fileset dir="${build.dir}/SegDescrip" includes="DEINSTALL.*"/>
<fileset dir="${build.dir}/SegDescrip" includes="PostInstall.*"/>
<fileset dir="${build.dir}/SegDescrip" includes="PreInstall.*"/>
</delete>
<!-- for windows move default scripts to *.bat to execute -->
<exec executable="move" os="Windows">
<arg value="${build.dir}/SegDescrip/DEINSTALL"/>
<arg value="${build.dir}/SegDescrip/DEINSTALL.bat"/>
</exec>
<exec executable="move" os="Windows">
<arg value="${build.dir}/SegDescrip/PreInstall"/>
<arg value="${build.dir}/SegDescrip/PreInstall.bat"/>
</exec>
<exec executable="move" os="Windows">
<arg value="${build.dir}/SegDescrip/PostInstall"/>
<arg value="${build.dir}/SegDescrip/PostInstall.bat"/>
</exec>
<!-- change ownership for SegDescrip -->
<!-- must be root or COE -->
<chmod dir="${build.dir}/SegDescrip" perm="744" includes="**"/>
<exec executable="/bin/chown" os="Linux">
<arg value="-R"/>
<arg value="COE:COE"/>
<arg value="${build.dir}/"/>
</exec>
</target>
<target name="extract"
description="(private) Extracts the archived COTS file.">
</target>
<target name="compile"
description="(private) Compiles source code.">
<ant dir="${basedir}" antfile="src/${name}/build/build.xml" target="clean" inheritAll="false"/>
<ant dir="${basedir}" antfile="src/${name}/build/build.xml" target="jars" inheritAll="false"/>
</target>
<target name="import"
description="(private) Imports compiled source code.">
<property name="import.dir"
value="src/${name}"/>
<filter token="VERSION" value="${version}"/>
<copy todir="${build.dir}/bin" failonerror="false" filtering="true">
<fileset dir="${import.dir}/bin">
<include name="**"/>
</fileset>
</copy>
<copy todir="${build.dir}/data" failonerror="false">
<fileset dir="${import.dir}/data">
<include name="**"/>
</fileset>
</copy>
<copy todir="${build.dir}/lib" failonerror="false">
<fileset dir="${import.dir}/lib">
<include name="**"/>
</fileset>
</copy>
<copy todir="${build.dir}/docs" failonerror="false">
<fileset dir="${import.dir}/docs">
<include name="**"/>
</fileset>
</copy>
</target>
<target name="build"
description="(private) Builds the segment in the build directory">
<antcall target="prebuild"/>
<antcall target="extract"/>
<antcall target="compile"/>
<antcall target="import"/>
</target>
<target name="toc"
description="(private) Creates toc file from segment info">
<property name="toc.str"
value="1:0:1:${arch}:${name}:${fullname}:${name}:${type}:${version}:UNCLASS:${seg.size}"/>
<mkdir dir="${tmp.dir}/toc"/>
<echo message="${toc.str}" file="${tmp.dir}/toc/toc"/>
</target>
<!-- ========== Make Segment ======================================== -->
<target name="tmptar"
description="(private) Makes tmp tar for MD5 Checksum."
depends="prepare">
<tar longfile="gnu" tarfile="${tmp.dir}/${segname}.tar">
<tarfileset dir="${build.dir}/.." id="seg.tar.bin"
username="COE" group="COE" mode="755">
<exclude name="${name}/bin/COEInstaller"/>
<exclude name="${name}/bin/COESegInstall"/>
<exclude name="${name}/bin/secbanner.pl"/>
<include name="${name}/bin/**"/>
</tarfileset>
<tarfileset dir="${build.dir}/.." id="seg.tar.bin.SA"
username="COE" group="SA" mode="754">
<include name="${name}/bin/COEInstaller"/>
<include name="${name}/bin/COESegInstall"/>
<include name="${name}/bin/secbanner.pl"/>
</tarfileset>
<tarfileset dir="${build.dir}/.." id="seg.tar.lib"
username="COE" group="COE" mode="444">
<include name="${name}/lib/**"/>
</tarfileset>
<tarfileset dir="${build.dir}/.." id="seg.tar.data"
username="COE" group="COE" mode="444">
<include name="${name}/data/**"/>
</tarfileset>
<tarfileset dir="${build.dir}/.." id="seg.tar.docs"
username="COE" group="COE" mode="444">
<include name="${name}/docs/**"/>
</tarfileset>
<tarfileset dir="${build.dir}/.." id="seg.tar.SegDescrip"
username="COE" group="COE" mode="644">
<exclude name="${name}/SegDescrip/DEINSTALL"/>
<exclude name="${name}/SegDescrip/PreInstall"/>
<exclude name="${name}/SegDescrip/PostInstall"/>
<include name="${name}/SegDescrip/**"/>
</tarfileset>
<tarfileset dir="${build.dir}/.." id="seg.tar.SegDescrip.Scripts"
username="COE" group="COE" mode="744">
<include name="${name}/SegDescrip/DEINSTALL"/>
<include name="${name}/SegDescrip/PreInstall"/>
<include name="${name}/SegDescrip/PostInstall"/>
</tarfileset>
</tar>
</target>
<target name="segtar"
description="(private) Makes segment tar.">
<!-- Checksum has been called, so now repeat tmptar with Validated file included -->
<delete file="${tmp.dir}/${segname}.tar"/>
<antcall target="tmptar"/>
<gzip zipfile="${dist.dir}/${segname}.tar.gz"
src="${tmp.dir}/${segname}.tar"/>
<delete file="${tmp.dir}/${segname}.tar"/>
</target>
<target name="insttar"
description="(private) Makes segment installation bundle">
<mkdir dir="${tmp.dir}/TOC/${segname}/SegDescrip"/>
<copy todir="${tmp.dir}/TOC/${segname}/SegDescrip">
<fileset dir="${build.dir}/SegDescrip"/>
</copy>
<copy file="${dist.dir}/${segname}.tar.gz" todir="${tmp.dir}"/>
<antcall target="toc"/>
<touch file="${tmp.dir}/DIIHeader"/>
<touch file="${tmp.dir}/distrib"/>
<tar longfile="gnu" tarfile="${dist.dir}/${name}.tar">
<tarfileset dir="${tmp.dir}"
username="COE" group="COE" mode="444">
<include name="DIIHeader"/>
<include name="distrib"/>
<include name="TOC/${segname}/**"/>
<include name="toc/toc"/>
<include name="${segname}.tar.gz"/>
</tarfileset>
</tar>
</target>
<!-- ========== Source ======================================== -->
<target name="MakeSource"
description="(public) Make segment source file."
depends="clean-all">
<property name="srcname"
value="${name}${sep}${type}${sep}${version}${sep}SRC"/>
<mkdir dir="src/OpenCOE/build/dist"/>
<tar longfile="gnu" tarfile="${dist.dir}/${srcname}.tar" >
<tarfileset dir=".." username="COE" group="COE" mode="644">
<include name="${name}/src/OpenCOE/**"/>
<include name="${name}/src/archive/**"/>
<include name="${name}/src/${name}/*"/>
</tarfileset>
</tar>
<gzip zipfile="${dist.dir}/${srcname}.tar.gz"
src="${dist.dir}/${srcname}.tar"/>
<delete file="${dist.dir}/${srcname}.tar"/>
<delete file="${tmp.dir}/${srcname}.tar"/>
</target>
</project>