Merge
authorDario Sestito <darios@symbian.org>
Mon, 05 Oct 2009 18:24:10 +0100
changeset 595 6358982cd10e
parent 594 3692c6f462b4 (current diff)
parent 590 339b33d6402f (diff)
child 596 3bb02a90f7e7
Merge
--- a/build.xml	Mon Oct 05 18:23:03 2009 +0100
+++ b/build.xml	Mon Oct 05 18:24:10 2009 +0100
@@ -6,7 +6,11 @@
   <property name="sf.subproject.path" value=""/>
   <property name="sf.project.location" value="${sf.config.dir}/../build/config/${sf.subproject.path}"/>
   <property name="sf.project.name" value="job"/>
-     
+   
+  <target name="set-arm-version"/>
+  <target name="check-env-arm-license"/>
+  <target name="get-arm-license"/>
+  
   <!-- import job properties -->
   <import file="${sf.project.location}/${sf.project.name}_props.ant.xml" optional="yes"/>
   
--- a/common/build.postbuild.xml	Mon Oct 05 18:23:03 2009 +0100
+++ b/common/build.postbuild.xml	Mon Oct 05 18:24:10 2009 +0100
@@ -296,6 +296,7 @@
 
     <target name="sf-run-analysis-raptor">            
       <echo message="Preprocessing *_compile.log files"/>
+      <delete file="${build.log.dir}/analysis/${build.id}_preprocess.log"/>
       <for param="logfile">
         <path>
           <fileset dir="${build.log.dir}">
@@ -304,11 +305,12 @@
           </fileset>
         </path>
         <sequential>
-		  <propertyregex override="yes" property="preprocessedlogfile" input="@{logfile}" regexp=".*[\\/](.*)_compile\.log" replace="\1_compile_preprocessed.log"/>
-	      <echo message="Preprocessing @{logfile}..."/>
-          <exec executable="perl" dir="${sf.common.config.dir}/tools/raptor" failonerror="false" input="@{logfile}" output="${build.log.dir}/analysis/${preprocessedlogfile}" error="${build.log.dir}/analysis/${build.id}_preprocess.log" append="true">
+          <propertyregex override="yes" property="preprocessedlogfile" input="@{logfile}" regexp=".*[\\/](.*)_compile\.log" replace="\1_compile_preprocessed.log"/>
+          <echo message="Preprocessing @{logfile}..."/>
+          <exec executable="perl" dir="${sf.common.config.dir}/tools/raptor" failonerror="false" input="@{logfile}" output="${build.log.dir}/analysis/${preprocessedlogfile}" errorProperty="@{logfile}" >
             <arg value="${sf.common.config.dir}/tools/raptor/preprocess_log.pl"/>
           </exec>
+	  <echo file="${build.log.dir}/analysis/${build.id}_preprocess.log" append="true" message="${@{logfile}}${line.separator}"/>
         </sequential>
       </for>
       
@@ -321,7 +323,6 @@
         </path>
         <sequential>
           <echo message="Extracting whatlog info from @{whatlogfile}..."/>
-          <echo message="Exec: [${sf.common.config.dir}/tools/raptor] perl ${sf.common.config.dir}/tools/raptor/parse.pl --releaseable --log=@{whatlogfile} --basedir=${build.log.dir} --append"/>
           <exec executable="perl" dir="${sf.common.config.dir}/tools/raptor" failonerror="false" output="${build.log.dir}/analysis/${build.id}_whatlog.log" append="true">
             <arg value="${sf.common.config.dir}/tools/raptor/parse.pl"/>
             <arg value="--releaseable"/>
@@ -342,7 +343,6 @@
         <sequential>
           <echo message="Extracting error info from @{raptorlogfile}..."/>
           <propertyregex override="yes" property="raptorconfig" input="@{raptorlogfile}" regexp=".*[\\/].*__(.*)\.whatlog_(single|multiple)_thread.*" replace="\1" casesensitive="false" defaultValue="noconfig"/>
-          <echo message="Exec: [${sf.common.config.dir}/tools/raptor] perl ${sf.common.config.dir}/tools/raptor/parse.pl --error --warning --unreciped --recipe --config=${raptorconfig} --log=@{raptorlogfile} --basedir=${build.log.dir}/raptorbits --append"/>
           <exec executable="perl" dir="${sf.common.config.dir}/tools/raptor" failonerror="false" output="${build.log.dir}/analysis/${build.id}_raptorparse.log" append="true">
             <arg value="${sf.common.config.dir}/tools/raptor/parse.pl"/>
             <arg value="--error"/>
@@ -352,12 +352,11 @@
             <arg value="--config=${raptorconfig}"/>
             <arg value="--log=@{raptorlogfile}"/>
             <arg value="--basedir=${build.log.dir}/raptorbits"/>
-            <arg value="--append"/>
           </exec>
         </sequential>
       </for>
       
-      <echo message="Exec: [${sf.common.config.dir}/tools/raptor] perl ${sf.common.config.dir}/tools/raptor/summarize.pl --raptorbitsdir=${build.log.dir}/raptorbits --outputdir=${build.log.dir}"/>
+      <echo message="Summarizing Raptor data"/>
       <exec executable="perl" dir="${sf.common.config.dir}/tools/raptor" failonerror="false" output="${build.log.dir}/analysis/${build.id}_raptorparse.log" append="true">
         <arg value="${sf.common.config.dir}/tools/raptor/summarize.pl"/>
         <arg value="--raptorbitsdir=${build.log.dir}/raptorbits"/>
@@ -377,6 +376,15 @@
           </exec>
         </sequential>
       </for>
+
+      <!-- Cook the raptor analysis further to produce something in the right format for the BRAG system -->
+      <exec executable="perl" output="${build.log.dir}/summary/Raptor_BRAG.xml" logError="yes">
+        <arg value="${sf.common.config.dir}/tools/brag/raptorToBRAG.pl"/>
+        <arg value="--raptorsummary"/>
+        <arg value="${build.log.dir}/raptorbits/summary.csv"/>
+      </exec>
+      <!-- And copy the XSL so the output can be transformed by a browser -->
+      <copy file="${sf.common.config.dir}/tools/brag/brag.xsl" toDir="${build.log.dir}/summary/"/>
     </target>
 
     <target name="sf-run-analysis-yarp">          
@@ -632,6 +640,46 @@
             <reference refid="sbs.fullbuild.options" torefid="sbs.make.options" />
             <reference refid="sf.spec.s60.system.definition.files" torefid="system.definition.files" />
         </antcall>
+        
+    </target>
+    
+    <target name="sf-create-public-PDK" depends="sf-prebuild,sf-run-sfl-licence-munging" >
+        <if>
+            <istrue value="${sf.spec.md5.enable}"/>
+            <then>
+                <echo message="INFO Creating MD5s"/>
+                <runtarget target="sf-run-evalid"/>
+            </then>
+        </if>
+        
+        <!-- Package up the binaries we built -->
+        <if>
+            <istrue value="${sf.spec.package.bin.enable}"/>
+            <then>
+                <echo message="INFO Packaging Binaries"/>
+                <runtarget target="sf-package-binary"/>
+                <runtarget target="sf-package-tools"/>
+
+                <echo message="INFO Validate Zip files"/>
+                <runtarget target="sf-package-validate"/>
+            </then>
+        </if>
+        <runtarget target="sf-zip-logs"/>
+        <if>
+            <istrue value="${sf.spec.publish.enable}" />
+            <then>
+                <echo message="Publish log files and reports to ${sf.spec.publish.rootdir}"/>
+                <runtarget target="sf-publish"/>
+            </then>
+        </if>
+    </target>
+
+
+    <target name="sf-run-sfl-licence-munging" depends="sf-check-utilities-dir" if="sf-utilities-available">    
+        <echo message="Running SFL Licence Munging writing log to ${build.log.dir}"/>
+        <exec executable="perl" dir="${build.drive}" failonerror="false" output="${build.log.dir}/postbuild_sfl-licence_munging_results.log">
+          <arg value="${build.drive}/utilities/williamr/convert_to_eula.pl"/>
+        </exec>
     </target>
 
 </project>
--- a/common/build.test.xml	Mon Oct 05 18:23:03 2009 +0100
+++ b/common/build.test.xml	Mon Oct 05 18:24:10 2009 +0100
@@ -115,7 +115,7 @@
                             <exec executable="perl" dir="${sf.common.config.dir}/tools/ats/" failonerror="false" append="true" output="${build.log.dir}/ATS_${build.id}_dynamicbc.log">
                               <arg value="ats_specialise_test_drop.pl"/>
                               <arg value="--test-drop-name=${env.COMPUTERNAME}-bctest-${build.id}_${program}"/> 
-                              <arg value="--device-name=GENERIC EMULATOR on ${env.COMPUTERNAME}"/>
+                              <arg value="--host-name=${env.COMPUTERNAME}.ad-sfpd.intra"/>
                               <arg value="--src=${sf.spec.test.package.location}/../bctest/${program}"/>
                               <arg value="--dest=${sf.spec.test.package.location}\${env.COMPUTERNAME}-bctest-${build.id}_${program}" />						 
                             </exec>
@@ -165,7 +165,7 @@
         <exec executable="perl" dir="${sf.common.config.dir}/tools/ats/" failonerror="false" append="true" output="${build.log.dir}/ATS_${build.id}_smoketest.log">
             <arg value="ats_specialise_test_drop.pl"/>
             <arg value="--test-drop-name=Smoketest-${build.id}"/> 
-            <arg value="--device-name=GENERIC EMULATOR on ${env.COMPUTERNAME}"/>
+            <arg value="--device-name=${env.COMPUTERNAME}.ad-sfpd.intra"/>
             <arg value="--src=${sf.spec.test.package.location}\smoketest.zip"/>
             <arg value="--dest=${sf.spec.test.package.location}\${sf.spec.test.package.name}"/>	
             <arg value="--build-id=http://${sf.spec.publish.diamonds.server}${diamonds.build.id}"/>			
--- a/common/common_props.ant.xml	Mon Oct 05 18:23:03 2009 +0100
+++ b/common/common_props.ant.xml	Mon Oct 05 18:24:10 2009 +0100
@@ -41,6 +41,7 @@
     <property name="sf.spec.sourcesync.usecache" value="false"/>
     <property name="sf.spec.sourcesync.sourcespecfile" value="sources.csv"/>
     <property name="sf.spec.sourcesync.cachelocation" value="${sf.spec.job.rootdir}/hgcache"/>
+    <property name="sf.spec.sourcesync.bug419" value="true"/> <!--Temporary workaround for bug 419 - Does source sync manually -->
     
     <property name="sf.spec.baseline.enable" value="true"/>
     <property name="sf.spec.baseline.select" value="auto"/> <!-- auto|explicit|location -->
--- a/common/templates/source-spec.ant.xml.ftl	Mon Oct 05 18:23:03 2009 +0100
+++ b/common/templates/source-spec.ant.xml.ftl	Mon Oct 05 18:24:10 2009 +0100
@@ -17,6 +17,17 @@
   <#assign fast_sync = false />
 </#if>
 
+<#if ("${ant['sf.spec.sourcesync.bug419']}")??>
+  <#if "${ant['sf.spec.sourcesync.bug419']}" == "true">
+    <#assign bug419 = true />
+  <#else>
+    <#assign bug419 = false />
+  </#if>
+<#else>
+  <#assign bug419 = false />
+</#if>
+
+
     <!-- remove previous version of BOM file (if exists)  -->
     <target name="reset-bom-sources-csv">
         <delete file="${ant['build.drive']}/output/logs/BOM/sources.csv" quiet="true"/>
@@ -55,6 +66,19 @@
                 <arg value="${ant['build.drive']}${pkg_detail.dst}"/>
             </exec>
             
+            <#if bug419 >
+              <exec executable="hg" dir="${ant['build.drive']}${pkg_detail.dst}" outputproperty="sf.sourcesync.${count}.checksum">
+                  <arg value="identify"/>
+                  <arg value="-i"/>
+                  <arg value="-r"/>
+                  <arg value="${pkg_detail.pattern}"/>
+              </exec>
+              <exec executable="hg" dir="${ant['build.drive']}${pkg_detail.dst}">
+                  <arg value="update"/>
+                  <arg value="-r"/>
+                  <arg value="${dollar}{sf.sourcesync.${count}.checksum}"/>
+              </exec>            
+            <#else>
             <hlm:scm verbose="true" scmUrl="scm:hg:${pkg_detail.source}">
                 <!--hlm:checkout basedir="${ant['build.drive']}${pkg_detail.dst}"/-->
                 <#if "${pkg_detail.type}"=="tag" >
@@ -71,6 +95,7 @@
                 </hlm:update>
                 </#if>
             </hlm:scm>
+            </#if>
                 <exec executable="hg" dir="${ant['build.drive']}${pkg_detail.dst}" outputproperty="sf.sourcesync.${count}.checksum">
                 <arg value="identify"/>
                 <arg value="-i"/>
--- a/common/tools/ats/ats_specialise_test_drop.pl	Mon Oct 05 18:23:03 2009 +0100
+++ b/common/tools/ats/ats_specialise_test_drop.pl	Mon Oct 05 18:24:10 2009 +0100
@@ -11,6 +11,7 @@
 #   Mike Kinghan, mikek@symbian.org
 #
 # Contributors:
+#	Brendan Donegan, brendand@symbian.org
 #
 # Description:
 #   This is a tool for setting the name of an ATS test drop, and/or the build id
@@ -24,13 +25,13 @@
 use Data::Dumper;
 
 my $test_drop_name;	# Test drop name to be embedded in output XML
-my $build_id;    # Build ID to be embedded in output XML 
-my $device_name; # Device name to be embedded in output XML
+my $build_id;   # Build ID to be embedded in output XML 
+my $host_name;  # Host name to be embedded in output XML
 my $srcfile;	# Input test drop file, either .xml or .zip
 my $destfile;	# Leafname for output file. Extension will be .xml or .zip as input.
 				# If unspecified then the input file is updated. 
 my $help;		# Do help?
-my $srctype;	# Type of inpout file, .xml or .zip
+my $srctype;	# Type of input file, .xml or .zip
 my $dev_null = $^O =~ /^MSWin/ ? "nul" : "/dev/null";	# OS-dependent nul device.
 my $zipper;		# Zip command, depending on whether zip or 7z is available.
 my $unzipper;	# Unzip command, depending on whether [unzip or 7z is available.
@@ -43,7 +44,7 @@
 sub silent_command($);
 
 my %optmap = (  'test-drop-name' => \$test_drop_name,
-			    'device-name' => \$device_name,
+			    'host-name' => \$host_name,
 			    'build-id' => \$build_id,
 			    'src' => \$srcfile,
 			    'dest' => \$destfile,
@@ -51,7 +52,7 @@
 
 GetOptions(\%optmap,
           'test-drop-name=s',
-          'device-name=s',
+          'host-name=s',
           'build-id=s',
           'src=s',
           'dest=s',
@@ -123,11 +124,11 @@
 # Insert the specified build id, if any.
 $test_drop->{'test'}->{'buildid'}->[0] = $build_id, if $build_id;
 
-if ($device_name) { # Also insert sepcified device name.
+if ($host_name) { # Also insert specified host name
 	
 	my $device_properties = $test_drop->{'test'}->{'target'}->[0]->{'device'}->[0]->{'property'};
 	my $num_properties = @{$device_properties};
-	$device_properties->[$num_properties]= { 'name' => "NAME", 'value' => "$device_name" };
+	$device_properties->[$num_properties]= { 'name' => "HOST", 'value' => "$host_name" };
 	$test_drop->{'test'}->{'target'}->[0]->{'device'}->[0]->{'property'} = $device_properties;
     #print Dumper($device_properties);
     #exit(0);		
@@ -169,12 +170,12 @@
             "Specify the name, build id and target device in an ATS XML test drop\n" .
             "synopsis:\n" .
             "  ats_specialise_test_drop.pl --help\n" .
-            "  ats_specialise_test_drop.pl [--test-drop-name=TESTNAME] [--build-id=BUILDID] [--device-name=DEVICENAME] [--dest=FILE] --src=FILE \n" .
+            "  ats_specialise_test_drop.pl [--test-drop-name=TESTNAME] [--build-id=BUILDID] [--host-name=HOSTNAME] [--dest=FILE] --src=FILE \n" .
             "options:\n" .
             "  --help                        Display this help and exit\n" .
             "  --test-drop-name=TESTNAME     TESTNAME is the desired name of the test drop. If not specified then the test drop name is not modified.\n" .
             "  --build-id=BUILDID            BUILDID is id of the build being tested. If not specified then the build id is not modified.\n" .            
-            "  --device-name=DEVICENAME      DEVICENAME  is the name of the device on which the test should be run. " .
+            "  --device-name=HOSTNAME        HOSTNAME  is the name of the ATS worker on which the test should be run. " .
             "If not specified then the test device name is not modified.\n" .
             "  --src=INFILE                  INFILE is the file containing the test drop XML to be modified, or else a zip file " .
             "                                containing the test drop XML in the file 'test.xml'. INFILE must have extension .xml or.zip\n" .
--- a/common/tools/ats/bctest/appsupport/profilesengine/profilesengine.pl	Mon Oct 05 18:23:03 2009 +0100
+++ b/common/tools/ats/bctest/appsupport/profilesengine/profilesengine.pl	Mon Oct 05 18:24:10 2009 +0100
@@ -20,15 +20,15 @@
 use File::Path;
 
 unlink "profilesengine.zip";
-##rmtree "temp";
+rmtree "temp";
 mkpath "temp/bcprofilesengine/general/testframework";
 mkpath "temp/bcprofilesengine/winscw_udeb";
 
 my $epoc=$ENV{'EPOCROOT'} . "epoc32/";
 copy("profilesengine.xml",	"temp/test.xml");
 
-copy($epoc . "release/winscw/udeb/proengwrapapi.dll",                   "temp/bcprofilesengine/winscw_udeb/proengwrapapi.dll");
-copy($epoc . "winscw/c/testframework/testframework_proengwrapapi.ini",  "temp/bcprofilesengine/general/testframework/testframework_proengwrapapi.ini");
-copy($epoc . "winscw/c/testframework/proengwrapapi.cfg",                "temp/bcprofilesengine/general/testframework/proengwrapapi.cfg");
+copy($epoc . "release/winscw/udeb/proengwrapapi.dll",                   "temp/bcprofilesengine/winscw_udeb/proengwrapapi.dll") or die "failed : $!";
+copy($epoc . "winscw/c/testframework/testframework_proengwrapapi.ini",  "temp/bcprofilesengine/general/testframework/testframework_proengwrapapi.ini") or die "failed : $!";
+copy($epoc . "winscw/c/testframework/proengwrapapi.cfg",                "temp/bcprofilesengine/general/testframework/proengwrapapi.cfg") or die "failed : $!";
 
 system("7z a -tzip profilesengine.zip ./temp/*");
\ No newline at end of file
--- a/common/tools/ats/bctest/appsupport/profilesengine/profilesengine.xml	Mon Oct 05 18:23:03 2009 +0100
+++ b/common/tools/ats/bctest/appsupport/profilesengine/profilesengine.xml	Mon Oct 05 18:24:10 2009 +0100
@@ -8,7 +8,6 @@
 	<target>
         <device rank="master" alias="emulator_udeb">
             <property name="HARNESS" value="ATSINTERFACE" />
-            <property name="NAME" value="emulator_udeb" />
         </device>
 	</target>
 	<plan id="" name="Profiles Engine BC WINSCW UDEB" harness="ATSINTERFACE" enabled="true" passrate="100">
--- a/common/tools/ats/bctest/base/test.xml	Mon Oct 05 18:23:03 2009 +0100
+++ b/common/tools/ats/bctest/base/test.xml	Mon Oct 05 18:24:10 2009 +0100
@@ -9,7 +9,6 @@
 	<target>
 		<device alias="emulator_udeb" rank="master">
 			<property name="harness" value="GENERIC" />
-			<property name="name" value="emulator_udeb" />
 		</device>
 	</target>
 	<plan id="" name="Base SVS Plan" harness="GENERIC" enabled="true" passrate="100">
--- a/common/tools/ats/bctest/browser/browser.pl	Mon Oct 05 18:23:03 2009 +0100
+++ b/common/tools/ats/bctest/browser/browser.pl	Mon Oct 05 18:24:10 2009 +0100
@@ -27,9 +27,9 @@
 my $epoc=$ENV{'EPOCROOT'} . "epoc32/";
 copy("browser.xml", "temp/test.xml");
 
-copy($epoc . "release/winscw/udeb/favouritesbctest.dll",		"temp/bcbrowser/winscw_udeb/favouritesbctest.dll");
-copy($epoc . "release/winscw/udeb/downloadmgrbctest.dll",		"temp/bcbrowser/winscw_udeb/downloadmgrbctest.dll");
+copy($epoc . "release/winscw/udeb/favouritesbctest.dll",		"temp/bcbrowser/winscw_udeb/favouritesbctest.dll") or die "failed : $!";
+copy($epoc . "release/winscw/udeb/downloadmgrbctest.dll",		"temp/bcbrowser/winscw_udeb/downloadmgrbctest.dll") or die "failed : $!";
 
-copy($epoc . "winscw/c/testframework/testframework_dwmgr.ini",	"temp/bcbrowser/general/testframework/testframework_dwmgr.ini");
+copy($epoc . "winscw/c/testframework/testframework_dwmgr.ini",	"temp/bcbrowser/general/testframework/testframework_dwmgr.ini") or die "failed : $!";
 
 system("7z a -tzip browser.zip ./temp/*");
--- a/common/tools/ats/bctest/contacts/phonebook/phonebook.xml	Mon Oct 05 18:23:03 2009 +0100
+++ b/common/tools/ats/bctest/contacts/phonebook/phonebook.xml	Mon Oct 05 18:24:10 2009 +0100
@@ -8,7 +8,6 @@
 	<target>
         <device rank="master" alias="emulator_udeb">
             <property name="HARNESS" value="ATSINTERFACE" />
-            <property name="NAME" value="emulator_udeb" />
         </device>
 	</target>
 	<plan id="" name="Contacts Phonebook BC WINSCW UDEB" harness="ATSINTERFACE" enabled="true" passrate="100">
@@ -66,7 +65,7 @@
 							<param file="atsinterface.exe"/>
 							<param parameters="-testmodule testcombiner -config C:\testframework\tcbctestpbkdataaddedit.cfg"/>
                             <param result-file="c:\spd_logs\xml\testcombiner.xml"/>
-                            <param timeout="3600"/>
+                            <param timeout="300"/>
 						</params>
 					</step>
 					<step id="" name="bctestpbkdataaddedit (fetch-log)" harness="ATSINTERFACE" enabled="true" passrate="100">
@@ -837,7 +836,7 @@
 							<param file="atsinterface.exe"/>
 							<param parameters="-testmodule testcombiner -config C:\TestFramework\tcbctestsmsaddsel.cfg"/>
                             <param result-file="c:\spd_logs\xml\testcombiner.xml"/>
-                            <param timeout="3600"/>
+                            <param timeout="300"/>
 						</params>
 					</step>
 					<step id="" name="mtpbksmsaddressselect (fetch-log)" harness="ATSINTERFACE" enabled="true" passrate="100">
@@ -1014,7 +1013,7 @@
 							<param file="atsinterface.exe"/>
 							<param parameters="-testmodule testcombiner -config C:\TestFramework\tcbctestphonenumber.cfg"/>
                             <param result-file="c:\spd_logs\xml\testcombiner.xml"/>
-                            <param timeout="3600"/>
+                            <param timeout="300"/>
 						</params>
 					</step>
 					<step id="" name="mtpbkphonenumberselect (fetch-log)" harness="ATSINTERFACE" enabled="true" passrate="100">
@@ -1132,7 +1131,7 @@
 							<param file="atsinterface.exe"/>
 							<param parameters="-testmodule testcombiner -config C:\TestFramework\tcbctestmmsaddsel.cfg"/>
                             <param result-file="c:\spd_logs\xml\testcombiner.xml"/>
-                            <param timeout="3600"/>
+                            <param timeout="300"/>
 						</params>
 					</step>
 					<step id="" name="mtpbkmmsaddressselect (fetch-log)" harness="ATSINTERFACE" enabled="true" passrate="100">
@@ -1368,7 +1367,7 @@
 							<param file="atsinterface.exe"/>
 							<param parameters="-testmodule testcombiner -config C:\TestFramework\tcbctestemaioversms.cfg"/>
                             <param result-file="c:\spd_logs\xml\testcombiner.xml"/>
-                            <param timeout="3600"/>
+                            <param timeout="300"/>
 						</params>
 					</step>
 					<step id="" name="mtpbkemailoversms (fetch-log)" harness="ATSINTERFACE" enabled="true" passrate="100">
@@ -1622,7 +1621,7 @@
 							<param file="atsinterface.exe"/>
 							<param parameters="-testmodule testcombiner -config C:\TestFramework\tcbctestfielddlg.cfg"/>
                             <param result-file="c:\spd_logs\xml\testcombiner.xml"/>
-                            <param timeout="3600"/>
+                            <param timeout="300"/>
 						</params>
 					</step>
 					<step id="" name="mtpbkselectfielddlg (fetch-log)" harness="ATSINTERFACE" enabled="true" passrate="100">
@@ -1945,7 +1944,7 @@
 							<param file="atsinterface.exe"/>
 							<param parameters="-testmodule testcombiner -config C:\TestFramework\tcspeeddial.cfg"/>
                             <param result-file="c:\spd_logs\xml\testcombiner.xml"/>
-                            <param timeout="3600"/>
+                            <param timeout="300"/>
 						</params>
 					</step>
 					<step id="" name="bctestspeeddial (fetch-log)" harness="ATSINTERFACE" enabled="true" passrate="100">
@@ -1977,12 +1976,12 @@
 		<file>phonebooktest/winscw_udeb/mtpbkiconinfo.dll</file>
 		<file>phonebooktest/general/testframework/testframework_pbkinfo.ini</file>
         <file>phonebooktest/general/testframework/tcbctestpbkinfo.cfg</file>
-        <file>phonebooktest/general/testframework/ui_tcbctestpbkinfo.cfg</file>
+        <file>phonebooktest/general/testframework/ui_bctestpbkinfo.cfg</file>
 
 		<file>phonebooktest/winscw_udeb/mtpbkiconid.dll</file>
 		<file>phonebooktest/general/testframework/testframework_pbkicon.ini</file>
         <file>phonebooktest/general/testframework/tcbctestpbkicon.cfg</file>
-        <file>phonebooktest/general/testframework/ui_tcbctestpbkicon.cfg</file>
+        <file>phonebooktest/general/testframework/ui_bctestpbkicon.cfg</file>
 
 		<file>phonebooktest/winscw_udeb/mtpbkfields.dll</file>
 		<file>phonebooktest/general/testframework/testframework_pbkfeilds.ini</file>
@@ -1992,7 +1991,7 @@
 		<file>phonebooktest/winscw_udeb/mtpbkfielddata.dll</file>
 		<file>phonebooktest/general/testframework/testframework_pbkfdata.ini</file>
         <file>phonebooktest/general/testframework/tcbctestpbkfdata.cfg</file>
-        <file>phonebooktest/general/testframework/ui_tcbctestpbkfdata.cfg</file>
+        <file>phonebooktest/general/testframework/ui_bctestpbkfdata.cfg</file>
 
 		<file>phonebooktest/winscw_udeb/mtpbkcontactiter.dll</file>
 		<file>phonebooktest/general/testframework/testframework_pbkiter.ini</file>
--- a/common/tools/ats/bctest/drm/drm.pl	Mon Oct 05 18:23:03 2009 +0100
+++ b/common/tools/ats/bctest/drm/drm.pl	Mon Oct 05 18:24:10 2009 +0100
@@ -20,21 +20,21 @@
 use File::Path;
 
 unlink "drmtest.zip";
-##rmtree "temp";
+rmtree "temp";
 mkpath "temp/drmtest/general/testframework";
 mkpath "temp/drmtest/winscw_udeb";
 
 my $epoc=$ENV{'EPOCROOT'} . "epoc32/";
 copy("drm.xml",	"temp/test.xml");
 
-copy($epoc . "release/winscw/udeb/drm_caf.dll",					"temp/drmtest/winscw_udeb/drm_caf.dll");
-copy($epoc . "release/winscw/udeb/bcdrmcafcaps.exe",			"temp/drmtest/winscw_udeb/bcdrmcafcaps.exe");
-copy($epoc . "winscw/c/testframework/testframework_drmcaf.ini",	"temp/drmtest/general/testframework/testframework_drmcaf.ini");
-copy($epoc . "winscw/c/testframework/drm_caf.cfg",				"temp/drmtest/general/testframework/drm_caf.cfg");
-copy($epoc . "winscw/c/content-noenc-trunc.odf",				"temp/drmtest/general/content-noenc-trunc.odf");
-copy($epoc . "winscw/c/content.odf",							"temp/drmtest/general/content.odf");
-copy($epoc . "winscw/c/content.txt",							"temp/drmtest/general/content.txt");
-copy($epoc . "winscw/c/content-noenc.odf",						"temp/drmtest/general/content-noenc.odf");
-copy($epoc . "winscw/c/content.dcf",							"temp/drmtest/general/content.dcf");
+copy($epoc . "release/winscw/udeb/drm_caf.dll",					"temp/drmtest/winscw_udeb/drm_caf.dll") or die "failed : $!";
+copy($epoc . "release/winscw/udeb/bcdrmcafcaps.exe",			"temp/drmtest/winscw_udeb/bcdrmcafcaps.exe") or die "failed : $!";
+copy($epoc . "winscw/c/testframework/testframework_drmcaf.ini",	"temp/drmtest/general/testframework/testframework_drmcaf.ini") or die "failed : $!";
+copy($epoc . "winscw/c/testframework/drm_caf.cfg",				"temp/drmtest/general/testframework/drm_caf.cfg") or die "failed : $!";
+copy($epoc . "winscw/c/content-noenc-trunc.odf",				"temp/drmtest/general/content-noenc-trunc.odf") or die "failed : $!";
+copy($epoc . "winscw/c/content.odf",							"temp/drmtest/general/content.odf") or die "failed : $!";
+copy($epoc . "winscw/c/content.txt",							"temp/drmtest/general/content.txt") or die "failed : $!";
+copy($epoc . "winscw/c/content-noenc.odf",						"temp/drmtest/general/content-noenc.odf") or die "failed : $!";
+copy($epoc . "winscw/c/content.dcf",							"temp/drmtest/general/content.dcf") or die "failed : $!";
 
 system("7z a -tzip drmtest.zip ./temp/*");
--- a/common/tools/ats/bctest/drm/drm.xml	Mon Oct 05 18:23:03 2009 +0100
+++ b/common/tools/ats/bctest/drm/drm.xml	Mon Oct 05 18:24:10 2009 +0100
@@ -8,7 +8,6 @@
 	<target>
         <device rank="master" alias="emulator_udeb">
             <property name="HARNESS" value="ATSINTERFACE" />
-            <property name="NAME" value="emulator_udeb" />
         </device>
 	</target>
 	<plan id="" name="Digital Rights Managment BC WINSCW UDEB" harness="ATSINTERFACE" enabled="true" passrate="100">
--- a/common/tools/ats/bctest/locationsrv/landmarks_api/landmarks.xml	Mon Oct 05 18:23:03 2009 +0100
+++ b/common/tools/ats/bctest/locationsrv/landmarks_api/landmarks.xml	Mon Oct 05 18:24:10 2009 +0100
@@ -8,7 +8,6 @@
 	<target>
         <device rank="master" alias="emulator_udeb">
             <property name="HARNESS" value="ATSINTERFACE" />
-            <property name="NAME" value="emulator_udeb" />
         </device>
 	</target>
 	<plan id="" name="Landmarks API BCTests WINSCW UDEB" harness="ATSINTERFACE" enabled="true" passrate="100">
--- a/common/tools/ats/bctest/locationsrv/landmarks_api/landmarks_api.pl	Mon Oct 05 18:23:03 2009 +0100
+++ b/common/tools/ats/bctest/locationsrv/landmarks_api/landmarks_api.pl	Mon Oct 05 18:24:10 2009 +0100
@@ -17,18 +17,18 @@
 use File::Path;
 
 unlink "landmarks_api.zip";
-##rmtree "temp";
+rmtree "temp";
 mkpath "temp/landmarks/general/testframework";
 mkpath "temp/landmarks/winscw_udeb";
 
 my $epoc=$ENV{'EPOCROOT'} . "epoc32/";
 copy("landmarks.xml",	"temp/test.xml");
 
-copy($epoc . "release/winscw/udeb/testlandmarksapi.dll",				"temp/landmarks/winscw_udeb/testlandmarksapi.dll");
-copy($epoc . "winscw/c/testframework/TestFramework_Landmarks.ini",		"temp/landmarks/general/testframework/TestFramework_Landmarks.ini");
-copy($epoc . "winscw/c/testframework/testlandmarksapi.cfg",				"temp/landmarks/general/testframework/testlandmarksapi.cfg");
-copy($epoc . "winscw/c/testing/data/smiltemplate.mif",					"temp/landmarks/general/smiltemplate.mif");
-copy($epoc . "winscw/c/testing/data/testEposLmImport.lmx",				"temp/landmarks/general/testEposLmImport.lmx");
-copy($epoc . "winscw/c/testing/data/testEposLmImportCollection.lmx",	"temp/landmarks/general/testEposLmImportCollection.lmx");
+copy($epoc . "release/winscw/udeb/testlandmarksapi.dll",				"temp/landmarks/winscw_udeb/testlandmarksapi.dll") or die "failed : $!";
+copy($epoc . "winscw/c/testframework/TestFramework_Landmarks.ini",		"temp/landmarks/general/testframework/TestFramework_Landmarks.ini") or die "failed : $!";
+copy($epoc . "winscw/c/testframework/testlandmarksapi.cfg",				"temp/landmarks/general/testframework/testlandmarksapi.cfg") or die "failed : $!";
+copy($epoc . "winscw/c/testing/data/smiltemplate.mif",					"temp/landmarks/general/smiltemplate.mif") or die "failed : $!";
+copy($epoc . "winscw/c/testing/data/testEposLmImport.lmx",				"temp/landmarks/general/testEposLmImport.lmx") or die "failed : $!";
+copy($epoc . "winscw/c/testing/data/testEposLmImportCollection.lmx",	"temp/landmarks/general/testEposLmImportCollection.lmx") or die "failed : $!";
 
 system("7z a -tzip landmarks_api.zip ./temp/*");
--- a/common/tools/ats/bctest/locationsrv/lmdbmanagement/lmdbmanagement.pl	Mon Oct 05 18:23:03 2009 +0100
+++ b/common/tools/ats/bctest/locationsrv/lmdbmanagement/lmdbmanagement.pl	Mon Oct 05 18:24:10 2009 +0100
@@ -20,15 +20,15 @@
 use File::Path;
 
 unlink "lmdbmanagementtest.zip";
-##rmtree "temp";
+rmtree "temp";
 mkpath "temp/lmdbmanagementtest/general/testframework";
 mkpath "temp/lmdbmanagementtest/winscw_udeb";
 
 my $epoc=$ENV{'EPOCROOT'} . "epoc32/";
 copy("lmdbmanagement.xml",	"temp/test.xml");
 
-copy($epoc . "release/winscw/udeb/testdbmanagementapi.dll",			"temp/lmdbmanagementtest/winscw_udeb/testdbmanagementapi.dll");
-copy($epoc . "winscw/c/testframework/testframework_lmdbmanagement.ini",	"temp/lmdbmanagementtest/general/testframework/testframework_lmdbmanagement.ini");
-copy($epoc . "winscw/c/testframework/testdbmanagementapi.cfg",				"temp/lmdbmanagementtest/general/testframework/testdbmanagementapi.cfg");
+copy($epoc . "release/winscw/udeb/testdbmanagementapi.dll",			"temp/lmdbmanagementtest/winscw_udeb/testdbmanagementapi.dll") or die "failed : $!";
+copy($epoc . "winscw/c/testframework/testframework_lmdbmanagement.ini",	"temp/lmdbmanagementtest/general/testframework/testframework_lmdbmanagement.ini") or die "failed : $!";
+copy($epoc . "winscw/c/testframework/testdbmanagementapi.cfg",				"temp/lmdbmanagementtest/general/testframework/testdbmanagementapi.cfg") or die "failed : $!";
 
 system("7z a -tzip lmdbmanagementtest.zip ./temp/*");
--- a/common/tools/ats/bctest/locationsrv/lmdbmanagement/lmdbmanagement.xml	Mon Oct 05 18:23:03 2009 +0100
+++ b/common/tools/ats/bctest/locationsrv/lmdbmanagement/lmdbmanagement.xml	Mon Oct 05 18:24:10 2009 +0100
@@ -8,7 +8,6 @@
 	<target>
         <device rank="master" alias="emulator_udeb">
             <property name="HARNESS" value="ATSINTERFACE" />
-            <property name="NAME" value="emulator_udeb" />
         </device>
 	</target>
 	<plan id="" name="Landmarks Database Management BC WINSCW UDEB" harness="ATSINTERFACE" enabled="true" passrate="100">
--- a/common/tools/ats/bctest/locationsrv/lmsearch/lmsearch.pl	Mon Oct 05 18:23:03 2009 +0100
+++ b/common/tools/ats/bctest/locationsrv/lmsearch/lmsearch.pl	Mon Oct 05 18:24:10 2009 +0100
@@ -20,15 +20,15 @@
 use File::Path;
 
 unlink "lmsearchtest.zip";
-##rmtree "temp";
+rmtree "temp";
 mkpath "temp/lmsearchtest/general/testframework";
 mkpath "temp/lmsearchtest/winscw_udeb";
 
 my $epoc=$ENV{'EPOCROOT'} . "epoc32/";
 copy("lmsearch.xml",	"temp/test.xml");
 
-copy($epoc . "release/winscw/udeb/testlmksearchapi.dll",			"temp/lmsearchtest/winscw_udeb/testlmksearchapi.dll");
-copy($epoc . "winscw/c/testframework/TestFramework_lmsearch.ini",	"temp/lmsearchtest/general/testframework/TestFramework_lmsearch.ini");
-copy($epoc . "winscw/c/testframework/testlmksearchapi.cfg",			"temp/lmsearchtest/general/testframework/testlmksearchapi.cfg");
+copy($epoc . "release/winscw/udeb/testlmksearchapi.dll",			"temp/lmsearchtest/winscw_udeb/testlmksearchapi.dll") or die "failed : $!";
+copy($epoc . "winscw/c/testframework/TestFramework_lmsearch.ini",	"temp/lmsearchtest/general/testframework/TestFramework_lmsearch.ini") or die "failed : $!";
+copy($epoc . "winscw/c/testframework/testlmksearchapi.cfg",			"temp/lmsearchtest/general/testframework/testlmksearchapi.cfg") or die "failed : $!";
 
 system("7z a -tzip lmsearchtest.zip ./temp/*");
--- a/common/tools/ats/bctest/locationsrv/lmsearch/lmsearch.xml	Mon Oct 05 18:23:03 2009 +0100
+++ b/common/tools/ats/bctest/locationsrv/lmsearch/lmsearch.xml	Mon Oct 05 18:24:10 2009 +0100
@@ -8,7 +8,6 @@
 	<target>
         <device rank="master" alias="emulator_udeb">
             <property name="HARNESS" value="ATSINTERFACE" />
-            <property name="NAME" value="emulator_udeb" />
         </device>
 	</target>
 	<plan id="" name="Landmarks Search BC WINSCW UDEB" harness="ATSINTERFACE" enabled="true" passrate="100">
--- a/common/tools/ats/bctest/locationsrv/locblid/locblid.pl	Mon Oct 05 18:23:03 2009 +0100
+++ b/common/tools/ats/bctest/locationsrv/locblid/locblid.pl	Mon Oct 05 18:24:10 2009 +0100
@@ -20,16 +20,16 @@
 use File::Path;
 
 unlink "locblidtest.zip";
-##rmtree "temp";
+rmtree "temp";
 mkpath "temp/locblidtest/general/testframework";
 mkpath "temp/locblidtest/winscw_udeb";
 
 my $epoc=$ENV{'EPOCROOT'} . "epoc32/";
 copy("locblid.xml",	"temp/test.xml");
 
-copy($epoc . "release/winscw/udeb/BCBlidTest.dll",					"temp/locblidtest/winscw_udeb/BCBlidTest.dll");
-copy($epoc . "winscw/c/testframework/testframework_locblid.ini",	"temp/locblidtest/general/testframework/testframework_locblid.ini");
-copy($epoc . "winscw/c/testframework/tcLmkBlid.cfg",				"temp/locblidtest/general/testframework/tcLmkBlid.cfg");
-copy($epoc . "winscw/c/testframework/UI_BCBLid.cfg",				"temp/locblidtest/general/testframework/UI_BCBLid.cfg");
+copy($epoc . "release/winscw/udeb/BCBlidTest.dll",					"temp/locblidtest/winscw_udeb/BCBlidTest.dll") or die "failed : $!";
+copy($epoc . "winscw/c/testframework/testframework_locblid.ini",	"temp/locblidtest/general/testframework/testframework_locblid.ini") or die "failed : $!";
+copy($epoc . "winscw/c/testframework/tcLmkBlid.cfg",				"temp/locblidtest/general/testframework/tcLmkBlid.cfg") or die "failed : $!";
+copy($epoc . "winscw/c/testframework/UI_BCBLid.cfg",				"temp/locblidtest/general/testframework/UI_BCBLid.cfg") or die "failed : $!";
 
 system("7z a -tzip locblidtest.zip ./temp/*");
--- a/common/tools/ats/bctest/messaging/messaging.xml	Mon Oct 05 18:23:03 2009 +0100
+++ b/common/tools/ats/bctest/messaging/messaging.xml	Mon Oct 05 18:24:10 2009 +0100
@@ -8,7 +8,6 @@
 	<target>
         <device rank="master" alias="emulator_udeb">
             <property name="HARNESS" value="ATSINTERFACE" />
-            <property name="NAME" value="emulator_udeb" />
         </device>
 	</target>
 	<plan id="" name="Messaging BC WINSCW UDEB" harness="ATSINTERFACE" enabled="true" passrate="100">
@@ -143,7 +142,7 @@
 							<param file="atsinterface.exe"/>
 							<param parameters="-testmodule testcombiner -config C:\TestFramework\tcTestUIBioCombiner.cfg"/>
                             <param result-file="c:\spd_logs\xml\testcombiner.xml"/>
-                            <param timeout="3600"/>
+                            <param timeout="300"/>
 						</params>
 					</step>
 					<step id="" name="PluginBioControlAPITest (fetch-log)" harness="ATSINTERFACE" enabled="true" passrate="100">
--- a/common/tools/ats/bctest/messagingmw/sendui/sendui.xml	Mon Oct 05 18:23:03 2009 +0100
+++ b/common/tools/ats/bctest/messagingmw/sendui/sendui.xml	Mon Oct 05 18:24:10 2009 +0100
@@ -8,7 +8,6 @@
 	<target>
         <device rank="master" alias="emulator_udeb">
             <property name="HARNESS" value="ATSINTERFACE" />
-            <property name="NAME" value="emulator_udeb" />
         </device>
 	</target>
 	<plan id="" name="Send UI BC WINSCW UDEB" harness="ATSINTERFACE" enabled="true" passrate="100">
--- a/common/tools/ats/bctest/multimedia/multimediasvs.pl	Mon Oct 05 18:23:03 2009 +0100
+++ b/common/tools/ats/bctest/multimedia/multimediasvs.pl	Mon Oct 05 18:24:10 2009 +0100
@@ -21,7 +21,7 @@
 use File::Path;
 
 unlink "multimediatest.zip";
-rmtree "temp" or die "failed : $!";
+rmtree "temp";
 
 mkpath "temp/multimediatest/general/multimedia/t_imagedecoder";
 mkpath "temp/multimediatest/general/multimedia/t_imageencoder";
--- a/common/tools/ats/bctest/multimedia/multimediatest.xml	Mon Oct 05 18:23:03 2009 +0100
+++ b/common/tools/ats/bctest/multimedia/multimediatest.xml	Mon Oct 05 18:24:10 2009 +0100
@@ -8,7 +8,6 @@
 	<target>
         <device rank="master" alias="emulator_udeb">
             <property name="HARNESS" value="GENERIC" />
-			<property name="NAME" value="emulator_udeb" />
         </device>
 	</target>
 	<plan id="0.54" name="MultimediaSVSTests WINSCW UDEB" harness="GENERIC" enabled="true" passrate="100">
--- a/common/tools/ats/bctest/package_definition.xml	Mon Oct 05 18:23:03 2009 +0100
+++ b/common/tools/ats/bctest/package_definition.xml	Mon Oct 05 18:24:10 2009 +0100
@@ -1,169 +1,400 @@
 <?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE SystemDefinition [
+<!ENTITY codeline.oss.fcl						"//v800008/builds01/mercurial_development/oss/FCL" >
+<!ENTITY codeline.sfl.fcl						"//v800008/builds01/mercurial_development/sfl/FCL" >
+<!ENTITY codeline.sfl.mcl						"//v800008/builds01/Mercurial_master_prod/sfl/MCL" >
+<!ENTITY param.updatebranch						"RCL_1" >
+<!ENTITY cmd.clone								"metacmd.py mcclone" >
+<!ENTITY cmd.copy								"metacmd.py mccopy" >
+<!ENTITY cmd.makedirs							"metacmd.py mcmakedirs" >
+<!ENTITY cmd.perl								"perl" >
+<!ENTITY cmd.sisbld								"makesis" >
+<!ENTITY cmd.unzip								"7z -y x" >
+<!ENTITY cmd.update								"hg update &param.updatebranch;" >
+<!ENTITY cmd.wget								"wget" >
+<!ENTITY dir.50_asp_connection					"sf/mw/websrv/websrv_pub/web_service_connection_api/tsrc/bc/connection/sis" >
+<!ENTITY dir.50_asp_hostconn					"sf/mw/websrv/websrv_pub/hostlet_connection_api/tsrc/bc/hostconn/sis" >
+<!ENTITY dir.50_asp_newsoapclasses				"sf/mw/websrv/websrv_pub/web_service_messaging_api/tsrc/bc/newsoapclasses/sis" >
+<!ENTITY dir.50_Browser_DownloadMgr				"sftools/ana/compatanamdw/apicompatanamdw/bcdrivers/src/bcdrivers/apps/browser/apps/DownloadMgrBCTest/sis" >
+<!ENTITY dir.50_Browser_Favourites				"sftools/ana/compatanamdw/apicompatanamdw/bcdrivers/src/bcdrivers/apps/browser/apps/FavouritesBCTest/sis" >
+<!ENTITY dir.50_loc_landmarks					"sftools/ana/compatanamdw/apicompatanamdw/bcdrivers/src/bcdrivers/apps/location/apps/LandmarksEngine/landmarks_api/sis" >
+<!ENTITY dir.50_loc_LmkDBMgmt					"sftools/ana/compatanamdw/apicompatanamdw/bcdrivers/src/bcdrivers/apps/location/apps/LandmarksEngine/landmarks_database_management_api/sis" >
+<!ENTITY dir.50_loc_LmkSearch					"sftools/ana/compatanamdw/apicompatanamdw/bcdrivers/src/bcdrivers/apps/location/apps/LandmarksEngine/landmarks_search_api/sis" >
+<!ENTITY dir.50_Messaging_MMSClientMTM			"sf/app/messaging/msg_pub/mms_client_mtm_api/tsrc/bc/sis" >
+<!ENTITY dir.50_Messaging_PluginBio				"sf/app/messaging/msg_pub/plugin_bio_control_api/tsrc/bc/sis" >
+<!ENTITY dir.50_MM_DRMCAF						"sf/mw/drm/drm_pub/oma_drm_caf_agent_api/tsrc/bc/sis" >
+<!ENTITY dir.50_PIM_PbkDataAddEdit				"sf/app/contacts/contacts_pub/phonebook_data_addedit_ui_api/tsrc/bc/sis" >
+<!ENTITY dir.50_PIM_PbkDataMgmt					"sf/app/contacts/contacts_pub/phonebook_data_management_api/tsrc/bc/sis" >
+<!ENTITY dir.50_PIM_PbkFetchAPI					"sf/app/contacts/contacts_pub/phonebook_fetch_ui_api/tsrc/bc/sis" >
+<!ENTITY dir.50_PIM_PbkUIUtil					"sf/app/contacts/contacts_pub/phonebook_ui_utilities_api/tsrc/bc/sis" >
+<!ENTITY dir.50_PIM_PbkVcard					"sf/app/contacts/contacts_pub/phonebook_vcard_importexport_api/tsrc/bc/sis" >
+<!ENTITY dir.50_PIM_Spdial						"sf/app/contacts/contacts_pub/speed_dial_utility_control_api/tsrc/bc/sis" >
+<!ENTITY dir.50_SP_PROENG						"sf/mw/appsupport/appsupport_pub/profiles_engine_wrapper_api/tsrc/BC/ProfilesEngineWrapperAPI/sis" >
+<!ENTITY dir.50_Symbian_AudioConvertUtility		"sftools/ana/compatanamdw/apicompatanamdw/bcdrivers/src/bcdrivers/apps/symbian/apps/multimedia/mmf/T_MdaAudioConvertUtility/sis" >
+<!ENTITY dir.50_Symbian_AudioInputStream		"sftools/ana/compatanamdw/apicompatanamdw/bcdrivers/src/bcdrivers/apps/symbian/apps/multimedia/mmf/T_MdaAudioInputStream/sis" >
+<!ENTITY dir.50_Symbian_AudioOutputStream		"sftools/ana/compatanamdw/apicompatanamdw/bcdrivers/src/bcdrivers/apps/symbian/apps/multimedia/mmf/T_MdaAudioOutputStream/sis" >
+<!ENTITY dir.50_Symbian_AudioPlayerUtility		"sftools/ana/compatanamdw/apicompatanamdw/bcdrivers/src/bcdrivers/apps/symbian/apps/multimedia/mmf/T_MdaAudioPlayerUtility/sis" >
+<!ENTITY dir.50_Symbian_AudioRecorderUtility	"sftools/ana/compatanamdw/apicompatanamdw/bcdrivers/src/bcdrivers/apps/symbian/apps/multimedia/mmf/T_MdaAudioRecorderUtility/sis" >
+<!ENTITY dir.50_Symbian_Base					"sftools/ana/compatanamdw/apicompatanamdw/bcdrivers/src/bcdrivers/apps/symbian/apps/base/sis" >
+<!ENTITY dir.50_Symbian_Ecom					"sftools/ana/compatanamdw/apicompatanamdw/bcdrivers/src/bcdrivers/apps/symbian/apps/SysLibs/ecom/sis" >
+<!ENTITY dir.50_symbian_graphics				"sftools/ana/compatanamdw/apicompatanamdw/bcdrivers/src/bcdrivers/apps/symbian/apps/graphics/sis" >
+<!ENTITY dir.50_Symbian_ImageDecoder			"sftools/ana/compatanamdw/apicompatanamdw/bcdrivers/src/bcdrivers/apps/symbian/apps/multimedia/icl/T_ImageDecoder/sis" >
+<!ENTITY dir.50_Symbian_ImageEncoder			"sftools/ana/compatanamdw/apicompatanamdw/bcdrivers/src/bcdrivers/apps/symbian/apps/multimedia/icl/T_ImageEncoder/sis" >
+<!ENTITY dir.50_Symbian_T_Camera				"sftools/ana/compatanamdw/apicompatanamdw/bcdrivers/src/bcdrivers/apps/symbian/apps/multimedia/ecam/T_Camera/sis" >
+<!ENTITY dir.50_Symbian_T_MdaAudioToneUtility	"sftools/ana/compatanamdw/apicompatanamdw/bcdrivers/src/bcdrivers/apps/symbian/apps/multimedia/mmf/T_MdaAudioToneUtility/sis" >
+<!ENTITY dir.50_Symbian_T_MidiClientUtility		"sftools/ana/compatanamdw/apicompatanamdw/bcdrivers/src/bcdrivers/apps/symbian/apps/multimedia/mmf/T_MidiClientUtility/sis" >
+<!ENTITY dir.50_systemsw						"sftools/ana/compatanamdw/apicompatanamdw/bcdrivers/src/bcdrivers/apps/systemsw/sis" >
+
+
+<!ELEMENT SystemDefinition ( systemModel | layer | package | collection | component)>
+<!ATTLIST SystemDefinition
+  schema CDATA #REQUIRED
+>
+<!-- this DTD describes schema="3.0.0" -->
+
+<!-- all relative paths are relative to this file
+	all absolute paths are relative to the environment variable specified by the root attribute, or SRCROOT if not.  -->
+
+<!-- Container for metadata
+	meta, if present, should always be the first element in the parent
+	 -->
+<!ELEMENT meta ANY>
+<!ATTLIST meta
+  href		CDATA #IMPLIED
+  type	CDATA "auto"
+  rel	CDATA "Generic"
+>
+
+<!-- systemModel element has name but no ID -->
+<!ELEMENT systemModel (meta*, layer+)>
+<!ATTLIST systemModel
+  name CDATA #IMPLIED
+>
+
+<!-- All items from layer down to component should have either @href or at least one valid child item.
+	Anything else will be considered a placeholder
+	-->
+
+<!ELEMENT layer (meta*, (package | collection)*)  >
+<!ATTLIST layer
+  id ID #REQUIRED
+  name CDATA #IMPLIED
+  href		CDATA #IMPLIED
+  levels NMTOKENS #IMPLIED
+  span CDATA #IMPLIED
+  before NMTOKEN #IMPLIED
+>
+
+<!ELEMENT package (meta*,  (package | collection)*)>
+ <!-- Nested packages are for backwards compatibility only -->
+<!ATTLIST package
+  id ID #REQUIRED
+  name CDATA #IMPLIED
+  version CDATA #IMPLIED
+  href	 CDATA #IMPLIED
+  levels NMTOKENS #IMPLIED
+  span CDATA #IMPLIED
+  level NMTOKEN #IMPLIED
+  before NMTOKEN #IMPLIED
+>
+
+<!ELEMENT collection (meta*, (component* ))>
+<!ATTLIST collection
+  id ID #REQUIRED
+  name CDATA #IMPLIED
+  href		CDATA #IMPLIED
+  level NMTOKEN #IMPLIED
+  before NMTOKEN #IMPLIED
+>
+
+<!ELEMENT component (meta*, unit*)>
+<!-- contains units or is a placeholder -->
+<!ATTLIST component
+  id ID #REQUIRED
+  name CDATA #IMPLIED
+  href		CDATA #IMPLIED
+  deprecated CDATA #IMPLIED
+  introduced CDATA #IMPLIED
+  target  ( device | desktop | other ) "device"
+  purpose ( optional | mandatory | development ) "optional"
+  class NMTOKENS #IMPLIED
+  filter CDATA #IMPLIED
+  before NMTOKEN #IMPLIED
+  origin-model CDATA #IMPLIED
+>
+<!--
+	"filter" attribute is deprecated
+	"origin-model" attribute is only to be inserted by tools when merging models
+ 	recommended class values are:
+		doc, config, plugin, tool, api -->
+
+<!ELEMENT unit EMPTY >
+<!ATTLIST unit
+  mrp CDATA #IMPLIED
+  bldFile CDATA #IMPLIED
+  base CDATA #IMPLIED
+  root CDATA #IMPLIED
+  version NMTOKEN #IMPLIED
+  prebuilt NMTOKEN #IMPLIED
+  late (yes|no) #IMPLIED
+  filter CDATA #IMPLIED
+  priority CDATA #IMPLIED
+>
+<!-- filter and priority are deprecated
+	"root" attribute will usually be inserted by tools when merging models, although it can be set manually-->
+]>
 <SystemDefinition name="Foundation" schema="2.0.1">
 	<systemModel>
-		<layer name="bc" long-name="Binary Compatability" levels="generic specific">
-			<block long-name="Dynamic BC Tests" level="specific" name="dynamicbctest" levels="fts">
-				<collection name="aspconnectionsis" long-name="50_asp_connection.sis">
-					<component id="aspconnection" name="ASP Connection Test">
-					  <unit bldFile="sf/mw/websrv/websrv_pub/web_service_connection_api/tsrc/bc/connection/group"/>
-					</component>
-				</collection>
-				<collection name="hostconnsis" long-name="50_asp_hostconn.sis">
-				  <component id="hostconn" name="Hostlet Connection Test">
+		<layer name="pre_bld" long-name="Binary Compatability Sync" levels="generic specific">
+			<meta type="commands">
+				<command cmd="&cmd.makedirs;	interim/fbf/configs" />
+				<command cmd="&cmd.makedirs;	sf/app" />
+				<command cmd="&cmd.makedirs;	sf/mw" />
+				<command cmd="&cmd.makedirs;	sf/os" />
+				<command cmd="&cmd.makedirs;	sftools/ana" />
+				<command cmd="&cmd.clone;		&codeline.oss.fcl;/interim/fbf/configs/default	interim/fbf/configs/default" />
+				<command cmd="&cmd.update;"		dir="interim/fbf/configs/default" />
+				<command cmd="&cmd.clone;		&codeline.sfl.fcl;/sf/app/contacts				sf/app/contacts" />
+				<command cmd="&cmd.update;"		dir="sf/app/contacts" />
+				<command cmd="&cmd.clone;		&codeline.sfl.fcl;/sf/app/messaging				sf/app/messaging" />
+				<command cmd="&cmd.update;"		dir="sf/app/messaging" />
+				<command cmd="&cmd.clone;		&codeline.sfl.fcl;/sf/mw/appsupport				sf/mw/appsupport" />
+				<command cmd="&cmd.update;"		dir="sf/mw/appsupport" />
+				<command cmd="&cmd.clone;		&codeline.sfl.mcl;/sf/mw/drm					sf/mw/drm" />
+				<command cmd="&cmd.update;"		dir="sf/mw/drm" />
+				<command cmd="&cmd.clone;		&codeline.sfl.mcl;/sf/mw/locationsrv			sf/mw/locationsrv" />
+				<command cmd="&cmd.update;"		dir="sf/mw/locationsrv" />
+				<command cmd="&cmd.clone;		&codeline.sfl.mcl;/sf/mw/messagingmw			sf/mw/messagingmw" />
+				<command cmd="&cmd.update;"		dir="sf/mw/messagingmw" />
+				<command cmd="&cmd.clone;		&codeline.sfl.mcl;/sf/mw/mmmw					sf/mw/mmmw" />
+				<command cmd="&cmd.update;"		dir="sf/mw/mmmw" />
+				<command cmd="&cmd.clone;		&codeline.sfl.fcl;/sf/mw/websrv					sf/mw/websrv" />
+				<command cmd="&cmd.update;"		dir="sf/mw/websrv" />
+				<command cmd="&cmd.clone;		&codeline.sfl.fcl;/sf/os/devicesrv				sf/os/devicesrv" />
+				<command cmd="&cmd.update;"		dir="sf/os/devicesrv" />
+				<command cmd="&cmd.clone;		&codeline.sfl.mcl;/sf/os/graphics				sf/os/graphics" />
+				<command cmd="&cmd.update;"		dir="sf/os/graphics" />
+				<command cmd="&cmd.clone;		&codeline.sfl.mcl;/sf/os/kernelhwsrv			sf/os/kernelhwsrv" />
+				<command cmd="&cmd.update;"		dir="sf/os/kernelhwsrv" />
+				<command cmd="&cmd.clone;		&codeline.sfl.mcl;/sf/os/mm						sf/os/mm" />
+				<command cmd="&cmd.update;"		dir="sf/os/mm" />
+				<command cmd="&cmd.clone;		&codeline.sfl.mcl;/sf/os/ossrv					sf/os/ossrv" />
+				<command cmd="&cmd.update;"		dir="sf/os/ossrv" />
+				<command cmd="&cmd.clone;		&codeline.sfl.mcl;/sf/os/shortlinksrv			sf/os/shortlinksrv" />
+				<command cmd="&cmd.update;"		dir="sf/os/shortlinksrv" />
+				<command cmd="&cmd.clone;		&codeline.sfl.fcl;/sftools/ana/compatanamdw		sftools/ana/compatanamdw" />
+				<command cmd="&cmd.update;"		dir="sftools/ana/compatanamdw" />
+				<command cmd="&cmd.wget;		http://developer.symbian.org/wiki/images/e/e7/Xvid.zip" />
+				<command cmd="&cmd.unzip;		xvid.zip" />
+				<command cmd="&cmd.perl;		sftools/ana/compatanamdw/apicompatanamdw/bcdrivers/src/bcdrivers/group/SetEnv.pl" />
+			</meta>
+		</layer>
+		<layer name="bld_production" long-name="Binary Compatability Production code build" levels="generic specific">
+			<collection name="aspconnectionsis" long-name="50_asp_connection.sis">
+				<component id="aspconnection" name="ASP Connection Test">
+					<unit bldFile="sf/mw/websrv/websrv_pub/web_service_connection_api/tsrc/bc/connection/group"/>
+				</component>
+			</collection>
+			<collection name="hostconnsis" long-name="50_asp_hostconn.sis">
+				<component id="hostconn" name="Hostlet Connection Test">
 					<unit bldFile="sf/mw/websrv/websrv_pub/hostlet_connection_api/tsrc/bc/hostconn/group"/>
-				  </component>
-				</collection>
-				<collection name="newsoapclassessis" long-name="50_asp_newsoapclasses.sis">
-				  <component id="newsoapclasses" name="New SOAP Classes Test">
+				</component>
+			</collection>
+			<collection name="newsoapclassessis" long-name="50_asp_newsoapclasses.sis">
+				<component id="newsoapclasses" name="New SOAP Classes Test">
 					<unit bldFile="sf/mw/websrv/websrv_pub/web_service_messaging_api/tsrc/bc/newsoapclasses/group"/>
-				  </component>
-				</collection>
-				<collection name="favouritesbctestsis" long-name="50_Browser_Favourites.SIS">
-				  <component id="favouritesbctest" name="Browser Favourites BC Test">
-				    <unit bldFile="sftools/ana/compatanamdw/apicompatanamdw/bcdrivers/src/bcdrivers/apps/browser/apps/FavouritesBCTest/group"/>
-				  </component>
-				</collection>
-				<collection name="downloadmgrbctestsis" long-name="50_Browser_DownloadMgr.SIS">
-				  <component id="downloadmgrbctest" name="Download Manager BC Test">
-					<unit bldFile="sftools/ana/compatanamdw/apicompatanamdw/bcdrivers/src/bcdrivers/apps/browser/apps/DownloadMgrBCTest/group"/>
-				  </component>	
-				</collection>
-				
-				<component id="lmksearch" name="Landmark Search Test">
-				  <unit bldFile="sftools/ana/compatanamdw/apicompatanamdw/bcdrivers/src/bcdrivers/apps/location/apps/LandmarksEngine/landmarks_search_api/group"/>
-				</component>
-				<component id="lmkdbmgmt" name="Landmark Database Management Test">
-				  <unit bldFile="sftools/ana/compatanamdw/apicompatanamdw/bcdrivers/src/bcdrivers/apps/location/apps/LandmarksEngine/landmarks_database_management_api/group"/>
-				</component>
-				<component id="landmarks" name="Landmarks API Test">
-				  <unit bldFile="sftools/ana/compatanamdw/apicompatanamdw/bcdrivers/src/bcdrivers/apps/location/apps/LandmarksEngine/landmarks_api/group"/>
 				</component>
-				
-				<collection name="mmsclientmtmsis" long-name="50_Messaging_MMSClientMTM.SIS">
-				  <component id="mmsclientmtm" name="Messaging MMS Client MTM BC Test">
-				    <unit bldFile="sf/app/messaging/msg_pub/mms_client_mtm_api/tsrc/bc/group"/>
-				  </component>
-				</collection>
+			</collection>
+			<collection name="favouritesbctestsis" long-name="50_Browser_Favourites.SIS">
+				<component id="favouritesbctest" name="Browser Favourites BC Test">
+					<unit bldFile="sftools/ana/compatanamdw/apicompatanamdw/bcdrivers/src/bcdrivers/apps/browser/apps/FavouritesBCTest/group"/>
+				</component>
+			</collection>
+			<collection name="downloadmgrbctestsis" long-name="50_Browser_DownloadMgr.SIS">
+				<component id="downloadmgrbctest" name="Download Manager BC Test">
+					<unit bldFile="sftools/ana/compatanamdw/apicompatanamdw/bcdrivers/src/bcdrivers/apps/browser/apps/DownloadMgrBCTest/group"/>
+				</component>	
+			</collection>
 
-				<collection name="senduiapisis" long-name="50_msg_sendui.sis">
-				  <component id="sendui" name="Messaging Send UI API BC Test">
-				    <unit bldFile="sf/mw/messagingmw/msgfw_pub/send_ui_api/tsrc/bc/group"/>
-				  </component>
-				</collection>
-				
-				<collection name="pluginbiosis" long-name="50_Messaging_PluginBio.sis">
-				  <component id="pluginbio" name="Messaging Plugin BIO BC Test">
-				    <unit bldFile="sf/app/messaging/msg_pub/plugin_bio_control_api/tsrc/bc/group"/>
-				  </component>
-				</collection>
-				
-				<component id="drmcaf" name="DRM CAF BC Test">
-				  <unit bldFile="sf/mw/drm/drm_pub/oma_drm_caf_agent_api/tsrc/bc/group"/>
+					<component id="lmksearch" name="Landmark Search Test">
+						<unit bldFile="sftools/ana/compatanamdw/apicompatanamdw/bcdrivers/src/bcdrivers/apps/location/apps/LandmarksEngine/landmarks_search_api/group"/>
+					</component>
+					<component id="lmkdbmgmt" name="Landmark Database Management Test">
+						<unit bldFile="sftools/ana/compatanamdw/apicompatanamdw/bcdrivers/src/bcdrivers/apps/location/apps/LandmarksEngine/landmarks_database_management_api/group"/>
+					</component>
+					<component id="landmarks" name="Landmarks API Test">
+						<unit bldFile="sftools/ana/compatanamdw/apicompatanamdw/bcdrivers/src/bcdrivers/apps/location/apps/LandmarksEngine/landmarks_api/group"/>
+					</component>
+
+			<collection name="mmsclientmtmsis" long-name="50_Messaging_MMSClientMTM.SIS">
+				<component id="mmsclientmtm" name="Messaging MMS Client MTM BC Test">
+					<unit bldFile="sf/app/messaging/msg_pub/mms_client_mtm_api/tsrc/bc/group"/>
 				</component>
-				
-				<collection name="pbkdataaddeditsis" long-name="50_PIM_PbkDataAddEdit.SIS">
-				  <component id="pbkdataaddedit" name="Phonebook Data Add Edit BC Test">
-				    <unit bldFile="sf/app/contacts/contacts_pub/phonebook_data_addedit_ui_api/tsrc/bc/group"/>
-				  </component>
-				</collection>
-				
-				<collection name="pbkdatamanagementsis" long-name="50_PIM_PbkDataMgmt.SIS">
-				  <component id="pbkdatamgmt" name="Phonebook Data Management BC Test">
-				    <unit bldFile="sf/app/contacts/contacts_pub/phonebook_data_management_api/tsrc/bc/group"/>
-				  </component>
-				</collection>
-				
-				<collection name="pbkfetchuisis" long-name="50_PIM_PbkFetchAPI.SIS">
-				  <component id="pbkfetchui" name="Phonebook Fetch UI BC Test">
-				    <unit bldFile="sf/app/contacts/contacts_pub/phonebook_fetch_ui_api/tsrc/bc/group"/>
-				  </component>
-				</collection>
-				
-				<component id="pbkuiutil" name="Phonebook UI Utils BC Test">
-				  <unit bldFile="sf/app/contacts/contacts_pub/phonebook_ui_utilities_api/tsrc/bc/group"/>
+			</collection>
+
+			<collection name="senduiapisis" long-name="50_msg_sendui.sis">
+				<component id="sendui" name="Messaging Send UI API BC Test">
+					<unit bldFile="sf/mw/messagingmw/msgfw_pub/send_ui_api/tsrc/bc/group"/>
+				</component>
+			</collection>
+
+			<collection name="pluginbiosis" long-name="50_Messaging_PluginBio.sis">
+				<component id="pluginbio" name="Messaging Plugin BIO BC Test">
+					<unit bldFile="sf/app/messaging/msg_pub/plugin_bio_control_api/tsrc/bc/group"/>
+				</component>
+			</collection>
+
+					<component id="drmcaf" name="DRM CAF BC Test">
+						<unit bldFile="sf/mw/drm/drm_pub/oma_drm_caf_agent_api/tsrc/bc/group"/>
+					</component>
+
+			<collection name="pbkdataaddeditsis" long-name="50_PIM_PbkDataAddEdit.SIS">
+				<component id="pbkdataaddedit" name="Phonebook Data Add Edit BC Test">
+					<unit bldFile="sf/app/contacts/contacts_pub/phonebook_data_addedit_ui_api/tsrc/bc/group"/>
+				</component>
+			</collection>
+
+			<collection name="pbkdatamanagementsis" long-name="50_PIM_PbkDataMgmt.SIS">
+				<component id="pbkdatamgmt" name="Phonebook Data Management BC Test">
+					<unit bldFile="sf/app/contacts/contacts_pub/phonebook_data_management_api/tsrc/bc/group"/>
+				</component>
+			</collection>
+
+			<collection name="pbkfetchuisis" long-name="50_PIM_PbkFetchAPI.SIS">
+				<component id="pbkfetchui" name="Phonebook Fetch UI BC Test">
+					<unit bldFile="sf/app/contacts/contacts_pub/phonebook_fetch_ui_api/tsrc/bc/group"/>
 				</component>
-				<component id="pbkvcard" name="Phonebook vCard Import Export BC Test">
-				  <unit bldFile="sf/app/contacts/contacts_pub/phonebook_vcard_importexport_api/tsrc/bc/group"/>
-				</component>
-				<component id="pbkspeeddial" name="Phonebook Speed Dial BC Test">
-				  <unit bldFile="sf/app/contacts/contacts_pub/speed_dial_utility_control_api/tsrc/bc/group"/>
-				</component>
-				<component id="proengwrap" name="Profiles Engine Wrapper Test">
-				  <unit bldFile="sf/mw/appsupport/appsupport_pub/profiles_engine_wrapper_api/tsrc/BC/ProfilesEngineWrapperAPI/group"/>
-				</component>
-				
-				<component id="basesvs" name="SVS Base API Tests" class="test">
-				  <unit bldFile="sf/os/kernelhwsrv/baseapitest/basesvs/group"/>
-				</component>
-				
-				<component id="graphicssvs" name="SVS Graphics API Tests" class="test">
-				  <unit bldFile="sf/os/graphics/graphicsapitest/graphicssvs/group"/>
+			</collection>
+
+					<component id="pbkuiutil" name="Phonebook UI Utils BC Test">
+						<unit bldFile="sf/app/contacts/contacts_pub/phonebook_ui_utilities_api/tsrc/bc/group"/>
+					</component>
+					<component id="pbkvcard" name="Phonebook vCard Import Export BC Test">
+						<unit bldFile="sf/app/contacts/contacts_pub/phonebook_vcard_importexport_api/tsrc/bc/group"/>
+					</component>
+					<component id="pbkspeeddial" name="Phonebook Speed Dial BC Test">
+						<unit bldFile="sf/app/contacts/contacts_pub/speed_dial_utility_control_api/tsrc/bc/group"/>
+					</component>
+					<component id="proengwrap" name="Profiles Engine Wrapper Test">
+						<unit bldFile="sf/mw/appsupport/appsupport_pub/profiles_engine_wrapper_api/tsrc/BC/ProfilesEngineWrapperAPI/group"/>
+					</component>
+
+			<collection name="multimediasvs" long-name="SVS Multimedia API Tests">
+				<component id="testfwsrv" name="Multimedia Test Framework Server">
+					<unit bldFile="sf/os/mm/mmtestenv/mmtestfw/group"/>
 				</component>
-				
-				<!-- OS Services SVS -->
-				<collection name="systemlibrariessvs" long-name="SVS System Libraries API Tests">
-				  <component id="syslibssvs" name="SysLibs SVS Suite" class="test">
-				    <unit bldFile="sf/os/ossrv/syslibsapitest/syslibssvs/group"/>
-				  </component>
-				</collection>
-				  
-				<collection name="multimediasvs" long-name="SVS Multimedia API Tests">
-				  <component id="mmsvs" name="Multimedia SVS Suite" class="test">
-					<unit bldFile="sf/os/mm/mmapitest/mmsvs/suite/group"/>
-				  </component>
-				  <component id="testfwsrv" name="Multimedia Test Framework Server">
-					<unit bldFile="sf/os/mm/mmtestenv/mmtestfw/group"/>
-				  </component>
-				</collection>
-				
-				<collection name="systemswsis" long-name="50_systemsw.sis">
-				  <component id="systemsw" name="System Software">
+			</collection>
+
+			<collection name="systemswsis" long-name="50_systemsw.sis">
+				<component id="systemsw" name="System Software">
 					<unit bldFile="sftools/ana/compatanamdw/apicompatanamdw/bcdrivers/src/bcdrivers/apps/systemsw/group"/>
-				  </component>
-				  <component id="featurediscovery" name="Feature Discovery API">
+				</component>
+				<component id="featurediscovery" name="Feature Discovery API">
 					<unit bldFile="sf/os/devicesrv/devicesrv_pub/feature_discovery_api/tsrc/bc/featurediscovery/group"/>
-				  </component>
-				  <component id="finditem" name="Find Item API">
+				</component>
+				<component id="finditem" name="Find Item API">
 					<unit bldFile="sf/os/devicesrv/devicesrv_pub/find_item_api/tsrc/bc/finditem/group"/>
-				  </component>
-				  <component id="light" name="Light API">
+				</component>
+				<component id="light" name="Light API">
 					<unit bldFile="sf/os/devicesrv/devicesrv_pub/light_api/tsrc/bc/light/group"/>
-				  </component>
-				  <component id="phoneparser" name="Phone Parser API">
+				</component>
+				<component id="phoneparser" name="Phone Parser API">
 					<unit bldFile="sf/os/devicesrv/devicesrv_pub/phone_parser_api/tsrc/bc/phoneparser/group"/>
-				  </component>
-				  <component id="platformenv" name="Platform Environment API">
+				</component>
+				<component id="platformenv" name="Platform Environment API">
 					<unit bldFile="sf/os/devicesrv/devicesrv_pub/platform_environment_api/tsrc/bc/platformenv/group"/>
-				  </component>
-				  <component id="powerstate" name="HW Resource Management Power State API">
+				</component>
+				<component id="powerstate" name="HW Resource Management Power State API">
 					<unit bldFile="sf/os/devicesrv/devicesrv_pub/hwrm_power_state_api/tsrc/bc/powerstate/group"/>
-				  </component>
-				  <component id="sysutil" name="System Utilities API">
+				</component>
+				<component id="sysutil" name="System Utilities API">
 					<unit bldFile="sf/os/devicesrv/devicesrv_pub/sysutil_api/tsrc/bc/sysutil/group"/>
-				  </component>
-				  <component id="textresolver" name="Text Resolver API">
+				</component>
+				<component id="textresolver" name="Text Resolver API">
 					<unit bldFile="sf/os/devicesrv/devicesrv_pub/text_resolver_api/tsrc/bc/textresolver/group"/>
-				  </component>
-				  <component id="vibra" name="Vibra API">
+				</component>
+				<component id="vibra" name="Vibra API">
 					<unit bldFile="sf/os/devicesrv/devicesrv_pub/vibra_api/tsrc/bc/vibra/group"/>
-				  </component>
-				  <component id="platformvertest" name="Platform Version Test">
+				</component>
+				<component id="platformvertest" name="Platform Version Test">
 					<unit bldFile="sf/os/devicesrv/devicesrv_pub/version_info_api/tsrc/bc/platformvertest/group"/>
-				  </component>
-				  <component id="accmonapibctests" name="Accessory Monitoring API BC Test">
+				</component>
+				<component id="accmonapibctests" name="Accessory Monitoring API BC Test">
 					<unit bldFile="sf/os/devicesrv/devicesrv_pub/accessory_monitoring_api/tsrc/bc/accmonapibctests/group"/>
-				  </component>
-				  <component id="networkstatus" name="Network Status API">
+				</component>
+				<component id="networkstatus" name="Network Status API">
 					<unit bldFile="sf/mw/appsupport/appsupport_pub/network_status_api/tsrc/bc/networkstatus/group"/>
-				  </component>
-				</collection>
-				
-				<collection name="proengwrapsis" long-name="50_SP_PROENG.SIS">
-				  <component id="proeng" name="Profile Engine Wrapper">
-				    <unit bldFile="sf/mw/appsupport/appsupport_pub/profiles_engine_wrapper_api/tsrc/bc/profilesenginewrapperapi/group"/>
-				  </collection>
-				</collection>
-			</block>
+				</component>
+			</collection>
+
+			<collection name="proengwrapsis" long-name="50_SP_PROENG.SIS">
+				<component id="proeng" name="Profile Engine Wrapper">
+					<unit bldFile="sf/mw/appsupport/appsupport_pub/profiles_engine_wrapper_api/tsrc/bc/profilesenginewrapperapi/group"/>
+				</component>
+			</collection>
+		</layer>
+		<layer name="bld_test" long-name="Binary Compatability Test code build" levels="generic specific">
+			<collection name="basesvs" long-name="SVS Base API Tests">
+				<component id="basesvs" name="SVS Base API Tests" class="test">
+					<unit bldFile="sf/os/kernelhwsrv/baseapitest/basesvs/group"/>
+				</component>
+			</collection>
+
+			<collection name="graphicssvs" long-name="SVS Graphics API Tests">
+				<component id="graphicssvs" name="SVS Graphics API Tests" class="test">
+					<unit bldFile="sf/os/graphics/graphicsapitest/graphicssvs/group"/>
+				</component>
+			</collection>
+
+			<!-- OS Services SVS -->
+			<collection name="systemlibrariessvs" long-name="SVS System Libraries API Tests">
+				<component id="syslibssvs" name="SysLibs SVS Suite" class="test">
+					<unit bldFile="sf/os/ossrv/syslibsapitest/syslibssvs/group"/>
+				</component>
+			</collection>
+
+			<collection name="multimediasvs" long-name="SVS Multimedia API Tests">
+				<component id="mmsvs" name="Multimedia SVS Suite" class="test">
+					<unit bldFile="sf/os/mm/mmapitest/mmsvs/suite/group"/>
+				</component>
+			</collection>
+		</layer>
+		<layer name="post_bld" long-name="Binary Compatability SIS build" levels="generic specific">
+			<meta type="commands">
+				<command cmd="&cmd.makedirs;	sis" />
+				<command cmd="&cmd.sisbld;		-d&dir.50_asp_connection;					&dir.50_asp_connection;/50_asp_connection.pkg								sis/50_asp_connection.sis" />
+				<command cmd="&cmd.sisbld;		-d&dir.50_asp_hostconn; 					&dir.50_asp_hostconn;/50_asp_hostconn.pkg									sis/50_asp_hostconn.sis" />
+				<command cmd="&cmd.sisbld;		-d&dir.50_asp_newsoapclasses;		 		&dir.50_asp_newsoapclasses;/50_asp_newsoapclasses.pkg						sis/50_asp_newsoapclasses.sis" />
+				<command cmd="&cmd.sisbld;		-d&dir.50_Browser_DownloadMgr; 				&dir.50_Browser_DownloadMgr;/50_Browser_DownloadMgr.pkg						sis/50_Browser_DownloadMgr.sis" />
+				<command cmd="&cmd.sisbld;		-d&dir.50_Browser_Favourites; 				&dir.50_Browser_Favourites;/50_Browser_Favourites.pkg						sis/50_Browser_Favourites.sis" />
+				<command cmd="&cmd.sisbld;		-d&dir.50_loc_landmarks; 					&dir.50_loc_landmarks;/50_loc_landmarks.pkg									sis/50_loc_landmarks.sis" />
+				<command cmd="&cmd.sisbld;		-d&dir.50_loc_LmkDBMgmt;		 			&dir.50_loc_LmkDBMgmt;/50_loc_LmkDBMgmt.pkg									sis/50_loc_LmkDBMgmt.sis" />
+				<command cmd="&cmd.sisbld;		-d&dir.50_loc_LmkSearch;		 			&dir.50_loc_LmkSearch;/50_loc_LmkSearch.pkg									sis/50_loc_LmkSearch.sis" />
+				<command cmd="&cmd.sisbld;		-d&dir.50_Messaging_MMSClientMTM;	 		&dir.50_Messaging_MMSClientMTM;/50_Messaging_MMSClientMTM.pkg				sis/50_Messaging_MMSClientMTM.sis" />
+				<command cmd="&cmd.sisbld;		-d&dir.50_Messaging_PluginBio; 				&dir.50_Messaging_PluginBio;/50_Messaging_PluginBio.pkg						sis/50_Messaging_PluginBio.sis" />
+				<command cmd="&cmd.sisbld;		-d&dir.50_MM_DRMCAF; 						&dir.50_MM_DRMCAF;/50_MM_DRMCAF.pkg											sis/50_MM_DRMCAF.sis" />
+				<command cmd="&cmd.sisbld;		-d&dir.50_PIM_PbkDataAddEdit;		 		&dir.50_PIM_PbkDataAddEdit;/50_PIM_PbkDataAddEdit.pkg						sis/50_PIM_PbkDataAddEdit.sis" />
+				<command cmd="&cmd.sisbld;		-d&dir.50_PIM_PbkDataMgmt; 					&dir.50_PIM_PbkDataMgmt;/50_PIM_PbkDataMgmt.pkg								sis/50_PIM_PbkDataMgmt.sis" />
+				<command cmd="&cmd.sisbld;		-d&dir.50_PIM_PbkFetchAPI; 					&dir.50_PIM_PbkFetchAPI;/50_PIM_PbkFetchAPI.pkg								sis/50_PIM_PbkFetchAPI.sis" />
+				<command cmd="&cmd.sisbld;		-d&dir.50_PIM_PbkUIUtil; 					&dir.50_PIM_PbkUIUtil;/50_PIM_PbkUIUtil.pkg									sis/50_PIM_PbkUIUtil.sis" />
+				<command cmd="&cmd.sisbld;		-d&dir.50_PIM_PbkVcard; 					&dir.50_PIM_PbkVcard;/50_PIM_PbkVcard.pkg									sis/50_PIM_PbkVcard.sis" />
+				<command cmd="&cmd.sisbld;		-d&dir.50_PIM_Spdial; 						&dir.50_PIM_Spdial;/50_PIM_Spdial.pkg										sis/50_PIM_Spdial.sis" />
+				<command cmd="&cmd.sisbld;		-d&dir.50_SP_PROENG;	 					&dir.50_SP_PROENG;/50_SP_PROENG.pkg											sis/50_SP_PROENG.sis" />
+				<command cmd="&cmd.sisbld;		-d&dir.50_Symbian_AudioConvertUtility; 		&dir.50_Symbian_AudioConvertUtility;/50_Symbian_AudioConvertUtility.pkg		sis/50_Symbian_AudioConvertUtility.sis" />
+				<command cmd="&cmd.sisbld;		-d&dir.50_Symbian_AudioInputStream; 		&dir.50_Symbian_AudioInputStream;/50_Symbian_AudioInputStream.pkg			sis/50_Symbian_AudioInputStream.sis" />
+				<command cmd="&cmd.sisbld;		-d&dir.50_Symbian_AudioOutputStream; 		&dir.50_Symbian_AudioOutputStream;/50_Symbian_AudioOutputStream.pkg			sis/50_Symbian_AudioOutputStream.sis" />
+				<command cmd="&cmd.sisbld;		-d&dir.50_Symbian_AudioPlayerUtility;	 	&dir.50_Symbian_AudioPlayerUtility;/50_Symbian_AudioPlayerUtility.pkg		sis/50_Symbian_AudioPlayerUtility.sis" />
+				<command cmd="&cmd.sisbld;		-d&dir.50_Symbian_AudioRecorderUtility; 	&dir.50_Symbian_AudioRecorderUtility;/50_Symbian_AudioRecorderUtility.pkg	sis/50_Symbian_AudioRecorderUtility.sis" />
+				<command cmd="&cmd.sisbld;		-d&dir.50_Symbian_Base; 					&dir.50_Symbian_Base;/50_Symbian_Base.pkg									sis/50_Symbian_Base.sis" />
+				<command cmd="&cmd.sisbld;		-d&dir.50_Symbian_Ecom; 					&dir.50_Symbian_Ecom;/50_Symbian_Ecom.pkg									sis/50_Symbian_Ecom.sis" />
+				<command cmd="&cmd.sisbld;		-d&dir.50_symbian_graphics; 				&dir.50_symbian_graphics;/50_symbian_graphics.pkg							sis/50_symbian_graphics.sis" />
+				<command cmd="&cmd.sisbld;		-d&dir.50_Symbian_ImageDecoder; 			&dir.50_Symbian_ImageDecoder;/50_Symbian_ImageDecoder.pkg					sis/50_Symbian_ImageDecoder.sis" />
+				<command cmd="&cmd.sisbld;		-d&dir.50_Symbian_ImageEncoder; 			&dir.50_Symbian_ImageEncoder;/50_Symbian_ImageEncoder.pkg					sis/50_Symbian_ImageEncoder.sis" />
+				<command cmd="&cmd.sisbld;		-d&dir.50_Symbian_T_Camera;	 				&dir.50_Symbian_T_Camera;/50_Symbian_T_Camera.pkg							sis/50_Symbian_T_Camera.sis" />
+				<command cmd="&cmd.sisbld;		-d&dir.50_Symbian_T_MdaAudioToneUtility;	&dir.50_Symbian_T_MdaAudioToneUtility;/50_Symbian_T_MdaAudioToneUtility.pkg	sis/50_Symbian_T_MdaAudioToneUtility.sis" />
+				<command cmd="&cmd.sisbld;		-d&dir.50_Symbian_T_MidiClientUtility;		&dir.50_Symbian_T_MidiClientUtility;/50_Symbian_T_MidiClientUtility.pkg		sis/50_Symbian_T_MidiClientUtility.sis" />
+				<command cmd="&cmd.sisbld;		-d&dir.50_systemsw;							&dir.50_systemsw;/50_systemsw.pkg											sis/50_systemsw.sis" />
+			</meta>
 		</layer>
 	</systemModel>
-</SystemDefinition>
\ No newline at end of file
+</SystemDefinition>
--- a/common/tools/ats/bctest/pim/clock/clock.xml	Mon Oct 05 18:23:03 2009 +0100
+++ b/common/tools/ats/bctest/pim/clock/clock.xml	Mon Oct 05 18:24:10 2009 +0100
@@ -8,7 +8,6 @@
 	<target>
         <device rank="master" alias="emulator_udeb">
             <property name="HARNESS" value="ATSINTERFACE" />
-            <property name="NAME" value="emulator_udeb" />
         </device>
 	</target>
 	<plan id="" name="PIM Clock BC WINSCW UDEB" harness="ATSINTERFACE" enabled="true" passrate="100">
--- a/common/tools/ats/bctest/syslibs/syslibssvs.pl	Mon Oct 05 18:23:03 2009 +0100
+++ b/common/tools/ats/bctest/syslibs/syslibssvs.pl	Mon Oct 05 18:24:10 2009 +0100
@@ -28,16 +28,16 @@
 my $epoc=$ENV{'EPOCROOT'} . "epoc32/";
 copy("syslibstest.xml",	"temp/test.xml");
 
-copy($epoc . "data/z/syslibs/t_syslibs.tcs",		"temp/syslibstest/general/syslibs/t_syslibs.tcs");
-copy($epoc . "data/z/syslibs/winscw/t_syslibs.ini",	"temp/syslibstest/general/syslibs/t_syslibs.ini");
+copy($epoc . "data/z/syslibs/t_syslibs.tcs",		"temp/syslibstest/general/syslibs/t_syslibs.tcs") or die "failed : $!";
+copy($epoc . "data/z/syslibs/winscw/t_syslibs.ini",	"temp/syslibstest/general/syslibs/t_syslibs.ini") or die "failed : $!";
 
-copy($epoc . "data/z/ecom/syslib-ecom-publicapi.script",	"temp/syslibstest/general/ecom/syslib-ecom-publicapi.script");
-copy($epoc . "data/z/ecom/syslib-ecom-publicapi.ini",		"temp/syslibstest/general/ecom/syslib-ecom-publicapi.ini");
-copy($epoc . "data/z/ecom/testproduct_plugin.rsc",			"temp/syslibstest/general/ecom/testproduct_plugin.rsc");
-copy($epoc . "release/winscw/udeb/testproduct_plugin.dll",	"temp/syslibstest/general/ecom/testproduct_plugin.dll");
+copy($epoc . "data/z/ecom/syslib-ecom-publicapi.script",	"temp/syslibstest/general/ecom/syslib-ecom-publicapi.script") or die "failed : $!";
+copy($epoc . "data/z/ecom/syslib-ecom-publicapi.ini",		"temp/syslibstest/general/ecom/syslib-ecom-publicapi.ini") or die "failed : $!";
+copy($epoc . "data/z/ecom/testproduct_plugin.rsc",			"temp/syslibstest/general/ecom/testproduct_plugin.rsc") or die "failed : $!";
+copy($epoc . "release/winscw/udeb/testproduct_plugin.dll",	"temp/syslibstest/general/ecom/testproduct_plugin.dll") or die "failed : $!";
 
-copy($epoc . "release/winscw/udeb/t_ecom.exe",				"temp/syslibstest/winscw_udeb/t_ecom.exe");
-copy($epoc . "release/winscw/udeb/tpcopyfileutility.exe",	"temp/syslibstest/winscw_udeb/tpcopyfileutility.exe");
-copy($epoc . "release/winscw/udeb/tpdeletefileutility.exe",	"temp/syslibstest/winscw_udeb/tpdeletefileutility.exe");
+copy($epoc . "release/winscw/udeb/t_ecom.exe",				"temp/syslibstest/winscw_udeb/t_ecom.exe") or die "failed : $!";
+copy($epoc . "release/winscw/udeb/tpcopyfileutility.exe",	"temp/syslibstest/winscw_udeb/tpcopyfileutility.exe") or die "failed : $!";
+copy($epoc . "release/winscw/udeb/tpdeletefileutility.exe",	"temp/syslibstest/winscw_udeb/tpdeletefileutility.exe") or die "failed : $!";
 
 system("7z a -tzip syslibstest.zip ./temp/*");
--- a/common/tools/ats/bctest/syslibs/syslibstest.xml	Mon Oct 05 18:23:03 2009 +0100
+++ b/common/tools/ats/bctest/syslibs/syslibstest.xml	Mon Oct 05 18:24:10 2009 +0100
@@ -8,7 +8,6 @@
 	<target>
         <device rank="master" alias="emulator_udeb">
             <property name="HARNESS" value="GENERIC" />
-            <property name="NAME" value="emulator_udeb" />
         </device>
 	</target>
 	<plan id="0.54" name="SyslibsSVSTests WINSCW UDEB" harness="GENERIC" enabled="true" passrate="100">
--- a/common/tools/ats/bctest/systemsw/systemsw.pl	Mon Oct 05 18:23:03 2009 +0100
+++ b/common/tools/ats/bctest/systemsw/systemsw.pl	Mon Oct 05 18:24:10 2009 +0100
@@ -36,7 +36,7 @@
 copy($epoc . "release/winscw/udeb/sysutiltest.dll",				"temp/systemswtest/winscw_udeb/sysutiltest.dll") or die "failed : $!";
 copy($epoc . "release/winscw/udeb/stiftextresolvertest.dll",	"temp/systemswtest/winscw_udeb/stiftextresolvertest.dll") or die "failed : $!";
 copy($epoc . "release/winscw/udeb/hwresmantest.dll",			"temp/systemswtest/winscw_udeb/hwresmantest.dll") or die "failed : $!";
-copy($epoc . "release/winscw/udeb/vibractrltest.dll",			"temp/systemswtest/winscw_udeb/vibractrltest.dll") or die "failed : $!";
+##copy($epoc . "release/winscw/udeb/vibractrltest.dll",			"temp/systemswtest/winscw_udeb/vibractrltest.dll") or die "failed : $!";
 copy($epoc . "release/winscw/udeb/platformvertest.dll",			"temp/systemswtest/winscw_udeb/platformvertest.dll") or die "failed : $!";
 copy($epoc . "release/winscw/udeb/accmonapibctests.dll",		"temp/systemswtest/winscw_udeb/accmonapibctests.dll") or die "failed : $!";
 
--- a/common/tools/ats/bctest/systemsw/systemsw.xml	Mon Oct 05 18:23:03 2009 +0100
+++ b/common/tools/ats/bctest/systemsw/systemsw.xml	Mon Oct 05 18:24:10 2009 +0100
@@ -8,7 +8,6 @@
 	<target>
         <device rank="master" alias="emulator_udeb">
             <property name="HARNESS" value="ATSINTERFACE" />
-            <property name="NAME" value="emulator_udeb" />
         </device>
 	</target>
 	<plan id="" name="System Software BC WINSCW UDEB" harness="ATSINTERFACE" enabled="true" passrate="100">
@@ -337,38 +336,6 @@
 						</params>
 					</step>
 				</case>
-				<case id="" name="Vibration Control" harness="ATSINTERFACE" enabled="true" passrate="100">
-                    <step id="" name="SPD_Logs XML (makedir)" harness="ATSINTERFACE" enabled="true" passrate="100" significant="false">
-                        <command>makedir</command>
-                        <params>
-                            <param dir="c:\spd_logs\xml" /> 
-                        </params>
-                    </step>
-                    <step id="" name="vibractrltest.dll (install)" harness="ATSINTERFACE" enabled="true" passrate="100" significant="false">
-						<command>install</command>
-						<params>
-							<param type="binary"/>
-							<param src="vibractrltest.dll"/>
-							<param dst="c:\sys\bin\vibractrltest.dll"/>
-							<param component-path="systemswtest" />
-						</params>
-					</step>
-					<step id="" name="vibractrltest (execute)" harness="ATSINTERFACE" enabled="true" passrate="100">
-						<command>execute</command>
-						<params>
-							<param file="atsinterface.exe"/>
-							<param parameters="-testmodule vibractrltest"/>
-                            <param result-file="c:\spd_logs\xml\vibractrltest.xml"/>
-                            <param timeout="3600"/>
-						</params>
-					</step>
-					<step id="" name="vibractrltest (fetch-log)" harness="ATSINTERFACE" enabled="true" passrate="100">
-						<command>fetch-log</command>
-						<params>
-							<param path="c:\logs\testframework\TestReport.txt" /> 
-						</params>
-					</step>
-				</case>
 				<case id="" name="Platform Version" harness="ATSINTERFACE" enabled="true" passrate="100">
                     <step id="" name="SPD_Logs XML (makedir)" harness="ATSINTERFACE" enabled="true" passrate="100" significant="false">
                         <command>makedir</command>
@@ -438,5 +405,16 @@
 	</plan>
 	<files>
 		<file>systemswtest/winscw_udeb/featuremanagertest.dll</file>
+		<file>systemswtest/winscw_udeb/finditemenginetest.dll</file>
+		<file>systemswtest/winscw_udeb/light.dll</file>
+		<file>systemswtest/winscw_udeb/networkstatustest.dll</file>
+		<file>systemswtest/winscw_udeb/phoneparsertest.dll</file>
+		<file>systemswtest/winscw_udeb/platformenvtest.dll</file>
+		<file>systemswtest/winscw_udeb/powerstatetest.dll</file>
+		<file>systemswtest/winscw_udeb/sysutiltest.dll</file>
+		<file>systemswtest/winscw_udeb/stiftextresolvertest.dll</file>
+		<file>systemswtest/winscw_udeb/hwresmantest.dll</file>
+		<file>systemswtest/winscw_udeb/platformvertest.dll</file>
+		<file>systemswtest/winscw_udeb/accmonapibctests.dll</file>
 	</files>
 </test>
--- a/common/tools/ats/bctest/websrv/websrv.xml	Mon Oct 05 18:23:03 2009 +0100
+++ b/common/tools/ats/bctest/websrv/websrv.xml	Mon Oct 05 18:24:10 2009 +0100
@@ -8,7 +8,6 @@
 	<target>
         <device rank="master" alias="emulator_udeb">
             <property name="HARNESS" value="ATSINTERFACE" />
-            <property name="NAME" value="emulator_udeb" />
         </device>
 	</target>
 	<plan id="" name="Web Services BC WINSCW UDEB" harness="ATSINTERFACE" enabled="true" passrate="100">
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/brag/brag.xsl	Mon Oct 05 18:24:10 2009 +0100
@@ -0,0 +1,80 @@
+<xsl:stylesheet version="1.0"
+	xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fn="http://www.w3.org/2005/xpath-functions">
+
+<!-- Initialise keys (sort of like hashes?) to enable us to list distinct packages/severities -->
+<xsl:key name="packages" match="failure" use="@package"/>
+<xsl:key name="severities" match="failures" use="@severity"/>
+
+<!-- Main template -->
+<xsl:template match="/buildStatus">
+	<html>
+	<head><title>Build Status</title></head>
+	<body>
+	<h1>Build Status</h1>
+
+	<xsl:variable name="criticalCount" select="count(phase/step/failures[@level='critical']/failure)"/>
+	<xsl:variable name="majorCount" select="count(phase/step/failures[@level='major']/failure)"/>
+	<xsl:variable name="minorCount" select="count(phase/step/failures[@level='minor']/failure)"/>
+	<xsl:variable name="unknownCount" select="count(phase/step/failures[@level!='critical' and @level!='major' and @level!='minor']/failure)"/>
+
+	<h2>
+	Overall BRAG staus: 
+	<xsl:choose>
+		<xsl:when test="$criticalCount != 0">BLACK</xsl:when>
+		<xsl:when test="$majorCount != 0">RED</xsl:when>
+		<xsl:when test="$minorCount != 0">AMBER</xsl:when>
+		<xsl:when test="$unknownCount != 0">GREEN</xsl:when>
+		<xsl:otherwise>GOLD!</xsl:otherwise>
+	</xsl:choose>
+	</h2>
+
+	<h2>Breakdown by severity</h2>
+	<table border="1">
+	<tr><td>Critical</td><td><xsl:value-of select="$criticalCount"/></td></tr>
+	<tr><td>Major</td><td><xsl:value-of select="$majorCount"/></td></tr>
+	<tr><td>Minor</td><td><xsl:value-of select="$minorCount"/></td></tr>
+	<tr><td>Unknown</td><td><xsl:value-of select="$unknownCount"/></td></tr>
+	<tr><th>Grand total</th><th><xsl:value-of select="count(phase/step/failures/failure)"/></th></tr>
+	</table>
+
+	<h2>Breakdown by phase/step</h2>
+	<table border="1">
+
+	<xsl:for-each select="phase">
+		<tr>
+		<th colspan='2'>Phase: <xsl:value-of select="@name"/></th>
+		</tr>
+		<xsl:for-each select="step">
+			<tr>
+			<td colspan='2'>Step: <xsl:value-of select="@name"/></td>
+			</tr>
+			<xsl:for-each select="failures">
+				<tr>
+				<td>Failures: <xsl:value-of select="@level"/></td>
+				<td>Number: <xsl:value-of select="count(failure)"/></td>
+				</tr>
+			</xsl:for-each>
+		</xsl:for-each>
+	</xsl:for-each>
+
+	</table>
+
+	<!-- If any failures are tied to a specific package... -->
+	<xsl:if test="phase/step/failures/failure[@package]">
+		<h2>Breakdown by package</h2>
+		<table border="1">
+		<tr><th>Package</th><th>Total failures</th></tr>
+		<!-- Use the Muenchian Method to get a set of distinct packages -->
+		<xsl:for-each select="phase/step/failures/failure[generate-id(.) = generate-id(key('packages', @package))]">
+			<xsl:sort select="@package"/>
+			<tr><td><xsl:value-of select="@package"/></td><td><xsl:value-of select="count(key('packages', @package))"/></td></tr>
+		</xsl:for-each>
+		</table>
+	</xsl:if>
+
+	</body>
+	</html>
+</xsl:template>
+
+</xsl:stylesheet>
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/brag/bragForDiamonds.xsl	Mon Oct 05 18:24:10 2009 +0100
@@ -0,0 +1,27 @@
+<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+
+<!-- Main template -->
+<xsl:template match="/buildStatus">
+	<xsl:variable name="criticalCount" select="count(phase/step/failures[@level='critical']/failure)"/>
+	<xsl:variable name="majorCount" select="count(phase/step/failures[@level='major']/failure)"/>
+	<xsl:variable name="minorCount" select="count(phase/step/failures[@level='minor']/failure)"/>
+	<xsl:variable name="unknownCount" select="count(phase/step/failures[@level!='critical' and @level!='major' and @level!='minor']/failure)"/>
+
+	<diamonds-build>
+	<schema>13</schema>
+	<build>
+	<status>
+	<xsl:choose>
+		<xsl:when test="$criticalCount != 0">Black</xsl:when>
+		<xsl:when test="$majorCount != 0">Red</xsl:when>
+		<xsl:when test="$minorCount != 0">Amber</xsl:when>
+		<xsl:when test="$unknownCount != 0">Green</xsl:when>
+		<xsl:otherwise>Gold</xsl:otherwise>
+	</xsl:choose>
+	</status>
+	</build>
+	</diamonds-build>
+</xsl:template>
+
+</xsl:stylesheet>
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/brag/logToBRAG.pl	Mon Oct 05 18:24:10 2009 +0100
@@ -0,0 +1,183 @@
+#!perl -w
+#
+# Copyright (c) 2009 Symbian Foundation Ltd
+# This component and the accompanying materials are made available
+# under the terms of the License "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Symbian Foundation Ltd - initial contribution.
+#
+# Contributors:
+#
+# Description:
+# Identifies failures in a log file (as determined by a set of rules) and produces a BRAG XML summary
+
+use strict;
+
+use Getopt::Long;
+
+my $phaseName;
+my $stepName;
+my $rulesFile;
+my $help = 0;
+GetOptions((
+	'phase=s' => \$phaseName,
+	'step=s' => \$stepName,
+	'rules=s' => \$rulesFile,
+	'help!' => \$help,
+));
+
+my $wrongArgs = 0;
+unless ($help)
+{
+	$wrongArgs += warn "No phase specified to indicate the phase that the failures fall under\n" unless defined $phaseName;
+	$wrongArgs += warn "No step specified to indicate the step that the failures fall under\n" unless defined $stepName;
+	$wrongArgs += warn "No file of rules specified to interpret the log file\n" unless defined $rulesFile;
+	$wrongArgs += warn "No log files to process\n" unless @ARGV;
+}
+if ($help || $wrongArgs)
+{
+	print <<"EOT";
+
+logToBRAG.pl --phase=prebuild --step=syncsource --rules=syncsourceRules.tsv presync.log [doSync.log ...] > output.xml
+EOT
+	exit(0 + !$help);
+}
+
+# Do the wild-carding thing
+@ARGV = map { glob $_ } @ARGV;
+
+# Start to build structure to be output as XML (same format as XML::Parser would create for us)
+my $xmlNewline = bless { Text => "\n" }, "Characters";
+my $step = bless {
+	name => $stepName,
+	Kids => [ $xmlNewline ]
+}, "step";
+my $phase = bless {
+	name => $phaseName,
+	Kids => [ $xmlNewline, $step, $xmlNewline ]
+}, "phase";
+my $buildStatus = [ bless {
+	Kids =>
+	[
+		$xmlNewline,
+		$phase,
+		$xmlNewline,
+	]
+}, "buildStatus"];
+
+# Also create empty <failures> tags with severities in a sensible order
+# And shortcuts to those items
+my $severityShortcut = {};
+foreach my $severity (qw{critical major minor})
+{
+	my $failureSet = bless { level => $severity, Kids => [ $xmlNewline ] }, "failures";
+	push @{$step->{Kids}}, $failureSet, $xmlNewline;
+	$severityShortcut->{$severity} = $failureSet;
+}
+
+# Read rules file
+my @rules;
+open(TSV, $rulesFile) or die "Unable to open rules file '$rulesFile'\n";
+while (my $line = <TSV>)
+{
+	chomp $line;
+	next unless $line;
+	my @terms = split m{\t+}, $line;
+	die "Rules file not formatted as expected at line $.\n" unless scalar @terms == 2;
+	push @rules, { regexp => qr{$terms[0]}, severity => $terms[1] };
+}	
+
+# Iterate through all the lines of all the files in @ARGV
+while (my $line = <>)
+{
+	chomp $line;
+	foreach my $rule (@rules)
+	{
+		if ($line =~ m[$rule->{regexp}])
+		{
+			last if $rule->{severity} eq "ignore";
+			# We found a match
+			my $failure = bless{ Kids => [ bless { Text => $line }, "Characters" ] }, "failure";
+			# Ensure we have a <failures> tag for this severity
+			if (!exists $severityShortcut->{$rule->{severity}})
+			{
+				# Create the failure set and add it to the shortcut list too
+				my $failureSet = bless { level => $rule->{severity}, Kids => [ $xmlNewline ] }, "failures";
+				push @{$step->{Kids}}, $failureSet, $xmlNewline;
+				$severityShortcut->{$rule->{severity}} = $failureSet;
+			}
+			push @{$severityShortcut->{$rule->{severity}}->{Kids}}, $failure, $xmlNewline;
+			# Do not consider any more rules
+			last;
+		}
+	}
+}
+
+# Print XML
+print "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n";
+print "<?xml-stylesheet type='text/xsl' href='brag.xsl'?>\n";
+printTree($buildStatus->[0]);
+print "\n";
+
+exit(0);
+
+sub printTree
+{
+	my $tree = shift or die;
+	die unless ref $tree;
+
+	my $tagName = ref $tree;
+	$tagName =~ s{^main::}{};
+	if ($tagName eq "Characters")
+	{
+		print escapeForXML($tree->{Text});
+		return;
+	}
+	
+	print "<$tagName";
+
+	foreach my $attr (
+		sort {
+			my $order = "name level start stop href";
+			my $ixA = index $order, $a;
+			my $ixB = index $order, $b;
+			die "$a $b" if $ixA + $ixB == -2;
+			$ixA - $ixB;
+		}
+		grep {
+			! ref $tree->{$_}
+		}
+		keys %$tree)
+	{
+		print " $attr=\"$tree->{$attr}\"";
+	}
+
+	my $children = $tree->{Kids} || [];
+	if (scalar @$children)
+	{
+		print ">";
+		foreach my $child (@$children)
+		{
+			printTree($child);
+		}
+		print "</$tagName";
+	}
+	else
+	{
+		print "/"
+	}
+
+	print ">";
+}
+
+sub escapeForXML
+{
+	$_ = shift;
+	s{&}{&amp;}g;
+	s{<}{&lt;}g;
+	s{>}{&gt;}g;
+	return $_;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/brag/raptorToBRAG.pl	Mon Oct 05 18:24:10 2009 +0100
@@ -0,0 +1,210 @@
+#!perl -w
+#
+# Copyright (c) 2009 Symbian Foundation Ltd
+# This component and the accompanying materials are made available
+# under the terms of the License "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Symbian Foundation Ltd - initial contribution.
+#
+# Contributors:
+#
+# Description:
+# Generate the BRAG-compatible XML summary of the Raptor log from the CSV output of the raptor parser
+
+use strict;
+
+use Getopt::Long;
+use Text::CSV;
+
+
+my $raptorSummary;
+my $help = 0;
+GetOptions((
+	'raptorsummary=s' => \$raptorSummary,
+	'help!' => \$help
+));
+
+$help = 1 if (!$raptorSummary);
+if ($help)
+{
+	print "Generate an XML summary of the Raptor build from a summary.csv file\n";
+	print "Usage: perl summarize.pl --raptorsummary=CSV\n";
+	exit(0);
+}
+
+# Start to build structure to be output as XML (same format as XML::Parser would create for us)
+my $xmlNewline = bless { Text => "\n" }, "Characters";
+my $buildStatus =
+[
+	bless
+	{
+		Kids =>
+		[
+			$xmlNewline,
+			bless
+			{
+				name => "build",
+				Kids => [ $xmlNewline ]
+			}, "phase",
+		]
+	}, "buildStatus"
+];
+# Get a shortcut reference to the bit we will use a lot
+my $buildPhase = $buildStatus->[0]->{Kids}->[-1];
+
+# READ SUMMARY.CSV FILE
+open(CSV, $raptorSummary);
+my $csv = Text::CSV->new();
+while (my $line = <CSV>)
+{
+	chomp $line;
+	
+	unless ($csv->parse($line))
+	{
+		my $err = $csv->error_input();
+		warn "Failed to parse $raptorSummary line line $. as CSV '$line': $err  Skipping\n";
+		next;
+	}
+	
+	my @keys = qw{category subcategory severity config component phase recipe file linenum};
+	my @values = $csv->fields();
+	unless (scalar @keys == scalar @keys)
+	{
+		warn "WARNING: line does not match expected format at $raptorSummary line $.. Skipping\n";
+		next;
+	}
+	
+	# Populate the hash using a hash slice
+	my $failure = {};
+	@{$failure}{@keys} = @values;
+	
+	if (!$failure->{category})
+	{
+		warn "WARNING: summary line without a category at $raptorSummary line $.. Skipping\n";
+		next;
+	}
+	
+	if ($failure->{category} =~ m{^recipe_failure$}i and !$failure->{component})
+	{
+		warn "WARNING: recipe_failure with component field empty at $raptorSummary line $.. Skipping\n";
+		next;
+	}
+	$failure->{subcategory} ||= 'uncategorized';
+	$failure->{severity} ||= 'unknown';
+	
+	# Look through the steps to see if we already have one to match this config
+	my $step;
+	foreach (@{$buildPhase->{Kids}})
+	{
+		next unless ref $_ eq "step";
+		if ($_->{name} eq $failure->{config})
+		{
+			$step = $_;
+			last;
+		}
+	}
+	unless ($step)
+	{
+		# First item found in this step - create step entry
+		$step = bless { name => $failure->{config}, Kids => [ $xmlNewline ] }, "step";
+		push @{$buildPhase->{Kids}}, $step, $xmlNewline;
+		# Also create empty <failures> tags with severities in a sensible order
+		foreach my $severity (qw{critical major minor})
+		{
+			my $failureSet = bless { level => $severity, Kids => [ $xmlNewline ] }, "failures";
+			push @{$step->{Kids}}, $failureSet, $xmlNewline;
+		}
+	}
+	
+	# Look through the sets of failures in this step to see if we hve one which matches this severity
+	my $failureSet;
+	foreach (@{$step->{Kids}})
+	{
+		next unless ref $_ eq "failures";
+		if ($_->{level} eq $failure->{severity})
+		{
+			$failureSet = $_;
+			last;
+		}
+	}
+	unless ($failureSet)
+	{
+		# First item found at this severity - create failures entry
+		$failureSet = bless { level => $failure->{severity}, Kids => [ $xmlNewline ] }, "failures";
+		push @{$step->{Kids}}, $failureSet, $xmlNewline;
+	}
+
+	# Now create the failure itself, and add it to this failure set
+	my $failureItem = bless {
+#		href => "",
+		Kids => [ bless { Text => $failure->{subcategory} }, "Characters" ]
+	}, "failure";
+	if ($failure->{component})
+	{
+		$failure->{component} =~ s{^(/sf/.*?/.*?)/.*$}{$1};
+		$failureItem->{package} = $failure->{component};
+	}
+	push @{$failureSet->{Kids}}, $failureItem, $xmlNewline;
+}
+close(CSV);
+
+# Print XML
+print "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n";
+print "<?xml-stylesheet type='text/xsl' href='brag.xsl'?>\n";
+printTree($buildStatus->[0]);
+print "\n";
+
+exit(0);
+
+sub printTree
+{
+	my $tree = shift or die;
+	die unless ref $tree;
+
+	my $tagName = ref $tree;
+	$tagName =~ s{^main::}{};
+	if ($tagName eq "Characters")
+	{
+		print $tree->{Text};
+		return;
+	}
+	
+	print "<$tagName";
+
+	foreach my $attr (
+		sort {
+			my $order = "name level start stop href";
+			my $ixA = index $order, $a;
+			my $ixB = index $order, $b;
+			die "$a $b" if $ixA + $ixB == -2;
+			$ixA - $ixB;
+		}
+		grep {
+			! ref $tree->{$_}
+		}
+		keys %$tree)
+	{
+		print " $attr=\"$tree->{$attr}\"";
+	}
+
+	my $children = $tree->{Kids} || [];
+	if (scalar @$children)
+	{
+		print ">";
+		foreach my $child (@$children)
+		{
+			printTree($child);
+		}
+		print "</$tagName";
+	}
+	else
+	{
+		print "/"
+	}
+
+	print ">";
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/mergeXML.pl	Mon Oct 05 18:24:10 2009 +0100
@@ -0,0 +1,193 @@
+#!perl -w
+# Copyright (c) 2009 Symbian Foundation Ltd
+# This component and the accompanying materials are made available
+# under the terms of the License "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Symbian Foundation Ltd - initial contribution.
+# 
+# Contributors:
+#
+# Description:
+# Merge a set of XML files
+
+use strict;
+
+use XML::Parser;
+use Getopt::Long;
+
+# Read option arguments
+my $howtoString;
+my $xslLink;
+my $help;
+GetOptions((
+	'xsl=s' => \$xslLink,
+	'merge=s' => \$howtoString,
+	'help!' => \$help,
+));
+
+my $wrongArgs = 0;
+unless ($help)
+{
+	$wrongArgs += warn "No merge string specified to indicate how the files should be merged\n" unless defined $howtoString;
+	$wrongArgs += warn "No files to be merged\n" unless scalar @ARGV;
+}
+if ($help || $wrongArgs)
+{
+	print <<"EOT";
+
+mergeXML.pl --xsl=brag.xsl --merge=SystemDefinition,systemModel,layer(name),block(name),package(name) sysModel1.xml [model*.xml ...] > output.xml
+EOT
+	exit(0 + !$help);
+}
+
+# Hash of tags that should be merged, with optional attribute consideration
+my $mergeTags;
+foreach my $term (split m{\s*,\s*}, $howtoString)
+{
+	my ($tag, $attribute) = $term =~ m{(\w+)\((\w+)\)};
+	$tag ||= $term;
+	$mergeTags->{$tag} = $attribute;
+}
+
+# Expand wildcards
+@ARGV = map { glob $_ } @ARGV;
+
+# Merge all the trees together
+my $outTree = mergeMultipleTrees($mergeTags, @ARGV);
+
+# Output total tree
+print "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n";
+print "<?xml-stylesheet type=\"text/xsl\" href=\"$xslLink\"?>\n" if $xslLink;
+printTree($outTree->[0]);
+print "\n";
+
+exit(0);
+
+sub mergeMultipleTrees
+{
+	my $mergeTags = shift or die;
+
+	# Create an XML parser
+	my $parser = new XML::Parser(Style => "Objects") or die;
+	
+	my $outTree;
+	# For each XML file to merge...
+	foreach my $xmlFile (@_)
+	{
+		my $tree = eval { $parser->parsefile($xmlFile) } or die "Failed to parse $xmlFile : $@";
+		if (!$outTree)
+		{
+			# The first file is taken verbatim
+			$outTree = $tree;
+		}
+		else
+		{
+			# Merge into output Tree
+			mergeTwoTrees($outTree->[0], $tree->[0], $mergeTags);
+		}
+	}
+
+	return $outTree;
+}
+
+sub mergeTwoTrees
+{
+	my $baseTree = shift or die;
+	my $extrasTree = shift or die;
+	my $mergeTags = shift or die;
+
+	die ("Trees do not match: ".(ref $baseTree)." vs ".(ref $extrasTree)) unless ref $baseTree eq ref $extrasTree;
+	return if ref $baseTree eq "main::Characters";
+
+	foreach my $extraChild (@{$extrasTree->{Kids}})
+	{
+		# Work out whether this child should be merged with a namesake, or appended
+		my $mergeIt;
+
+		my $extraChildTag = ref $extraChild;
+		$extraChildTag =~ s{^main::}{};
+		
+		if (exists $mergeTags->{$extraChildTag})
+		{
+			# Should be merged if there's already one there
+			# Look for a namesake in the base
+			$mergeIt = matchTag($baseTree->{Kids}, $extraChild, $mergeTags->{$extraChildTag});
+		}
+
+		if ($mergeIt)
+		{
+			# Merge children
+			mergeTwoTrees($mergeIt, $extraChild, $mergeTags);
+		}
+		else
+		{
+			# Add this child
+			push @{$baseTree->{Kids}}, $extraChild;
+		}
+	}
+}
+
+sub matchTag
+{
+	my $peers = shift;
+	my $outsider = shift;
+	my $attr = shift;
+
+	foreach my $peer (@$peers)
+	{
+		if (ref $peer eq ref $outsider && (!defined $attr || $peer->{$attr} eq $outsider->{$attr}))
+		{
+			return $peer;
+		}
+	}
+	
+	return undef;
+}
+
+sub printTree
+{
+	my $tree = shift or die;
+	die unless ref $tree;
+
+	my $tagName = ref $tree;
+	$tagName =~ s{^main::}{};
+	if ($tagName eq "Characters")
+	{
+		print $tree->{Text};
+		return;
+	}
+	
+	print "<$tagName";
+
+	foreach my $attr (
+		sort
+		grep {
+			! ref $tree->{$_}
+		}
+		keys %$tree)
+	{
+		print " $attr=\"$tree->{$attr}\"";
+	}
+
+	my $children = $tree->{Kids};
+	if (scalar @$children)
+	{
+		print ">";
+		foreach my $child (@$children)
+		{
+			printTree($child);
+		}
+		print "</$tagName";
+	}
+	else
+	{
+		print "/"
+	}
+
+	print ">";
+}
+
+