Add Helium 7 support for package builds.
authorShabe Razvi <shaber@symbian.org>
Tue, 16 Feb 2010 17:50:17 +0000
changeset 899 d80a65072ed8
parent 875 23913c0b1b13
child 900 ed28a33746f2
Add Helium 7 support for package builds. - During operation, if last.major.helium.version is detected as 7.0 then it will use new sbsinput mechanism. - Restore sf-postbuild dependency on sf-build-noprep target
build.xml
common/build.xml
common/common_props.ant.xml
sf-package/build.xml
sf-platform/build.xml
--- a/build.xml	Thu Feb 04 12:16:49 2010 +0000
+++ b/build.xml	Tue Feb 16 17:50:17 2010 +0000
@@ -27,6 +27,16 @@
   <property name="sf.spec.job.name" value="${jobname}"/>
   <property name="sf.spec.job.codeline" value="${codeline}"/>
   
+  <!-- override helium 7 defaults to operate like helium 5.
+     *.log.dir props dont exist yet so need to be set now, otherwise they 
+     become immutable after helium.ant.xml import -->
+    
+  <property name="prep.log.dir"    value="${build.drive}/output/logs"/>
+  <property name="compile.log.dir" value="${build.drive}/output/logs"/>
+  <property name="post.log.dir"    value="${build.drive}/output/logs"/>
+  <property name="archive.log.dir"    value="${build.drive}/output/logs"/>
+  <property name="signals.log.dir"    value="${build.drive}/output/logs"/>
+
   <!-- import project properties/targets/references -->
   <import file="sf-${sf.project.type}/build.xml" />
   
--- a/common/build.xml	Thu Feb 04 12:16:49 2010 +0000
+++ b/common/build.xml	Tue Feb 16 17:50:17 2010 +0000
@@ -54,7 +54,7 @@
     <property name="base_release.getenv_options" value="${sf.spec.baseline.getenv_options}"/>
     <property name="ccm.user.password" value="set_to_any_value_to_skip_scm_checks__for_helium_5"/>
     <property name="ats.drive" value="${sf.spec.ats_worker.drive}"/>
-    
+    <property name="skip.sbs.layer.generation" value="true"/> <!-- helium 7: needs to be predefined before hlm import --> 
     <if>
       <isset property="sf.spec.sbs.numberofjobs"/>
       <then>
@@ -89,6 +89,21 @@
         </else>
     </if>
     
+    <!-- helium 7 compatability. needs to be defined -->
+    <if>
+      <or>
+        <equals arg1="${helium.version}" arg2="7.0"/>
+        <equals arg1="${last.major.helium.version}" arg2="7.0"/>
+      </or>
+      <then>
+          <property name="schema.new" value="true"/>
+      </then>
+    </if>
+    
+    <!--
+      - END OF PROPERTY DEFINITIONS, TARGETS START HERE
+      -->
+    
     <target name="sf-prep" depends="sf-prep-announce,prep-drive,init-build-area,create-bom,log-build-env">
         <!-- Test for the disk space we would like for this build -->
 	<fail>
@@ -439,7 +454,7 @@
     </target>
 
     <!-- This target is overridden in platform builds, but used directly in package builds -->
-    <target name="sf-build-noprep" depends="sf-truclean,sf-model-from-project,sf-compile">
+    <target name="sf-build-noprep" depends="sf-truclean,sf-model-from-project,sf-compile,sf-postbuild">
         <echo>[SF-BUILD-NOPREP]</echo>
     </target>
     
--- a/common/common_props.ant.xml	Thu Feb 04 12:16:49 2010 +0000
+++ b/common/common_props.ant.xml	Tue Feb 16 17:50:17 2010 +0000
@@ -17,6 +17,12 @@
 
     <property name="sf.spec.pdt.root" value="${env.PDT_HOME}"/> <!-- e.g. C:\Symbian\Tools\PDT_1.0\ -->
 
+    <!-- comma separated sbs filter list -->
+    <property name="sf.spec.sbs.filter.list" value=""/> 
+    
+    <!-- options to pass directly to sbs e.g. pp=on for parallel parsing -->
+    <property name="sf.spec.sbs.options" value=""/> 
+    
     <property name="sf.spec.sbs.config" value="armv5"/>
 
     <!-- sbs -t param -->
--- a/sf-package/build.xml	Thu Feb 04 12:16:49 2010 +0000
+++ b/sf-package/build.xml	Tue Feb 16 17:50:17 2010 +0000
@@ -25,11 +25,66 @@
       <arg value="--sources=${sf.spec.sourcesync.sourcespecdir}/${sf.spec.sourcesync.sourcespecfile}"/>
     </exec>
     
-    <runtarget target="sf-package-compile"/>
+    
+    <!-- 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" depends="sf-compile-options">
+    
     
+  <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="${compile.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}"/>
--- a/sf-platform/build.xml	Thu Feb 04 12:16:49 2010 +0000
+++ b/sf-platform/build.xml	Tue Feb 16 17:50:17 2010 +0000
@@ -17,7 +17,7 @@
    -->
 
   <!-- MattD - workaround until generating a model from package definitions works-->
-  <target name="sf-build-noprep" depends="sf-platform-bootstrap,sf-compile">
+  <target name="sf-build-noprep" depends="sf-platform-bootstrap,sf-compile,sf-postbuild">
     <echo>[SF-BUILD-NOPREP] (platform)</echo>
     <echo>[SF-BUILD-NOPREP] WARNING: Not generating model from packages</echo>
   </target>