sf-package/build.xml
author Simon Howkins <simonh@symbian.org>
Tue, 10 Aug 2010 18:11:17 +0100
changeset 1206 4518bca1baf0
parent 1179 9d79e98a47e4
child 1208 86025b85795b
permissions -rw-r--r--
Improved diagnostic output: when the build fails because a package cannot be cloned into the build drive, it says which package and the repo source and destination. Improved caching logic, so that it doesn't depend on network availability as much. Improved indentation.

<?xml version="1.0" encoding="UTF-8"?>
<project name="SF-PACKAGE-CONFIG" xmlns:hlm="http://www.nokia.com/helium">
  <!-- location of this config -->
  <dirname property="sf.package.config.dir" file="${ant.file.SF-PACKAGE-CONFIG}"/>
  
  <!-- import codeline-specific properties -->
  <import file="${sf.package.config.dir}/${sf.spec.job.codeline}_props.ant.xml" optional="yes"/>
  
  <!-- import package properties -->
  <import file="${sf.package.config.dir}/package_props.ant.xml" />
  
  <!-- import common properties/targets/references -->
  <import file="../common/build.xml" />
  
  <!-- import package references -->
  <import file="${sf.package.config.dir}/package_refs.ant.xml" />
  
  <target name="sf-compile">
  
    <!-- Check that package_definition is not in v 3.0.0 otherwise transforms it to 2.0.1 -->
    <echo message="Check that model file is in a version usable by Raptor"/>
    <exec executable="perl" dir="${sf.common.config.dir}/sysdefdowngrade" failonerror="false" output="${build.log.dir}/sysdefdowngrade.log">
      <arg value="sysdefdowngrade.pl"/>
      <arg value="--model=${build.drive}/${sf.spec.systemdefinition.location}"/>
      <arg value="--sources=${sf.spec.sourcesync.sourcespecdir}/${sf.spec.sourcesync.sourcespecfile}"/>
    </exec>
    
    
    <!-- helium 7+ should use new sf-package-compile target -->
    <if>
        <or>
          <equals arg1="${helium.version}" arg2="7.0"/>
          <equals arg1="${last.major.helium.version}" arg2="7.0"/>
        </or>
        <then>
            <runtarget target="sf-package-compile"/>
        </then>
        <else>
            <runtarget target="sf-package-compile-hlm-5"/>
        </else>
    </if>
    
  </target>
  
    
    
  <target name="sf-package-compile">

    <!-- build stuff -->
    <for list="${sf.spec.sbs.config}" delimiter="," param="item.sbs.splitconfig">
      <sequential>
      
      <hlm:sbsinput id="sf.build">
        <sbsOptions>
            <arg line="-c @{item.sbs.splitconfig}"/>
            <arg line="-k" />
            <arg line="-j ${sf.spec.sbs.numberofjobs}"/>
            <arg line="-t ${sf.spec.sbs.retry.limit}"/>
            <arg line="${sf.spec.sbs.options}"/>
            <arg name="--filters" value="&quot;${sf.spec.sbs.filter.list}&quot;"/>
            <arg name="--logfile" value="${build.log.dir}/${build.id}_@{item.sbs.splitconfig}_compile.log" />
            <arg name="--makefile" value="${compile.log.dir}/${build.id}_@{item.sbs.splitconfig}_Makefile" />
        </sbsOptions>
      </hlm:sbsinput>
      
      <echo message="INFO [Iterative compile] Building target: @{item.sbs.splitconfig}"/>
      <antcall target="compile-main" inheritAll="false" inheritRefs="true">
          <param name="build.system" value="${sf.spec.build.system}" />
          <param name="sysdef.configurations.list" value="${sf.spec.sysdef.configurations.list}" />
          <param name="sbs.inputs.list" value="sf.build"/>
          <reference refid="sf.spec.system.definition.files" torefid="system.definition.files" />
      </antcall>    
      </sequential>
    </for>
    
    
    <!-- CHECK -->
    <exec executable="cmd" dir="${build.drive}/" output="${build.drive}/output\logs\build_check_compile.log">
      <arg value="/c sbs.bat -s ${build.drive}/output\build\canonical_system_definition_SF.xml -k -c tools2_rel -c winscw -c armv5 -j 32 --check -m ${build.drive}/output\logs\build_check_Makefile"/>
      <!-- argument of -j option can be parameterized with: ${number.of.threads} -->
    </exec>
    
  </target>
        
        
  <target name="sf-package-compile-hlm-5">

    <for list="${sf.spec.sbs.config}" delimiter="," param="item.sbs.splitconfig">
      <sequential>
        <echo message="INFO [Iterative compile] Building target: @{item.sbs.splitconfig}"/>
        
        <!-- Do CLEAN
        <hlm:argSet id="sbs.iterate.clean.var">
          <hlm:arg name="config" value="@{item.sbs.splitconfig}" />
          <hlm:arg name="enable-filter" value="${sf.spec.logs.raptorfilter.enable}" />
          <hlm:arg name="command" value="CLEAN"/>
        </hlm:argSet>
        <antcall target="compile-main" inheritAll="false" inheritRefs="true">
          <param name="build.system" value="${sf.spec.build.system}" />
          <param name="sysdef.configurations.list" value="${sf.spec.sysdef.configurations.list}" />
          <reference refid="sbs.iterate.clean.var" torefid="sbs.var" />
          <reference refid="sbs.fullbuild.options" torefid="sbs.make.options" />
          <reference refid="sf.spec.system.definition.files" torefid="system.definition.files" />
        </antcall>
        -->

        <!-- Do BUILD -->
        <hlm:argSet id="sbs.main.iterate.sbs.var">
          <hlm:arg name="config" value="@{item.sbs.splitconfig}" />
          <hlm:arg name="enable-filter" value="${sf.spec.logs.raptorfilter.enable}" />
          <hlm:arg name="retry-limit" value="${sf.spec.sbs.retry.limit}" />
        </hlm:argSet>
        <antcall target="compile-main" inheritAll="false" inheritRefs="true">
          <param name="build.system" value="${sf.spec.build.system}" />
          <param name="sysdef.configurations.list" value="${sf.spec.sysdef.configurations.list}" />
          <reference refid="sbs.main.iterate.sbs.var" torefid="sbs.var" />
          <reference refid="sbs.fullbuild.options" torefid="sbs.make.options" />
          <reference refid="sf.spec.system.definition.files" torefid="system.definition.files" />
        </antcall>                
      </sequential>
    </for>
    
    <!-- CHECK -->
    <exec executable="cmd" dir="${build.drive}/" output="${build.drive}/output\logs\build_check_compile.log">
      <arg value="/c sbs.bat -s ${build.drive}/output\build\canonical_system_definition_SF.xml -k -c tools2_rel -c winscw -c armv5 -j 32 --check -m ${build.drive}/output\logs\build_check_Makefile"/>
      <!-- argument of -j option can be parameterized with: ${number.of.threads} -->
    </exec>
    
  </target>
  
</project>