Catchup from platform build
authorDario Sestito <darios@symbian.org>
Fri, 19 Jun 2009 18:00:57 +0100
changeset 207 6d9dd19b6949
parent 168 bf91a7e3c25b (current diff)
parent 206 62976b2583f7 (diff)
child 208 64274d0f53a7
child 209 29424d1bc56b
Catchup from platform build
common/build.xml
common/common_props.ant.xml
sf-platform/build.xml
--- a/common/build.xml	Fri Jun 19 16:13:48 2009 +0100
+++ b/common/build.xml	Fri Jun 19 18:00:57 2009 +0100
@@ -21,11 +21,16 @@
     <property name="prep.root.dir" value="${sf.spec.job.rootdir}"/>
     <property name="publish" value="${sf.spec.publish.enable}"/>
     <property name="publish.root.dir" value="${sf.spec.publish.rootdir}"/>
+    <property name="diamonds.host" value="${sf.spec.publish.diamonds.server}"/>
+    <property name="diamonds.port" value="${sf.spec.publish.diamonds.port}"/>
+    <property name="diamonds.path" value="${sf.spec.publish.diamonds.path}"/>
     <property name="build.system" value="${sf.spec.build.system}"/>
     <property name="base_release.path" value="${sf.spec.baseline.location}"/>
     <property name="base_release.getenv_options" value="${sf.spec.baseline.getenv_options}"/>
 	
-	
+    <!-- SF-specific Helium properties not meant to be exposed in the project spec -->
+    <property name="diamonds.listener.configuration.file" location="${sf.common.config.dir}/diamonds/config.xml.ftl"/>
+    
     <!-- import all core HELIUM targets -->
     <import file="${helium.dir}/helium.ant.xml" />
     
@@ -176,6 +181,13 @@
     <target name="sf-prebuild">
         <echo>[SF-PREBUILD]</echo>
         
+        <if>
+            <istrue value="${sf.spec.publish.enable}"/>
+            <then>
+                <runtarget target="diamonds"/>
+            </then>
+        </if>
+        
         <!-- create BOM dir -->
         <mkdir dir="${build.drive}/output/logs/BOM"/>
         
@@ -245,7 +257,7 @@
                     <arg value="${sf.spec.baseline.location}"/>
                 </exec>
                 
-                <!-- run interal target preparation-getenv -->
+                <!-- run internal target preparation-getenv -->
                 <runtarget target="preparation-getenv"/>
                 
             </then>
@@ -469,7 +481,7 @@
     
     <target name="sf-diamondize-bom">
         <fmpp sourceFile="${sf.common.config.dir}/templates/build-info.xml.ftl"
-              outputFile="${build.drive}/output/logs/BOM/build-info.xml">
+              outputFile="${build.drive}/output/logs/sf-diamondize-bom.xml">
             <data expandProperties="yes">
                 ant: antProperties()
                 config: csv(${build.drive}/output/logs/BOM/config.csv,{separator:',',headers:[loc,dst,rev]})
@@ -709,14 +721,33 @@
       </path>
       <sequential>
         <propertyregex override="yes" property="yarpfile"  input="@{logfile}" regexp=".*[\\|\/](.*)_compile\.log" replace="\1_yarp.csv"/>
+        <propertyregex override="yes" property="yarpfile_short"  input="${yarpfile}" regexp="[^_]*_[^_]*_[^_]*_(.+)_[^_]*_yarp\.csv" replace="YARP_\1"/>
         <echo message="Yarping @{logfile}..."/>
         <exec executable="perl" dir="${build.drive}" failonerror="false" output="${build.log.dir}/analysis/${build.id}_yarp.log" append="true">
           <arg value="${sf.common.config.dir}/tools/analysis/yarp.pl"/>
           <arg value="@{logfile}"/>
           <arg value="${build.log.dir}/analysis/${yarpfile}"/>
         </exec>
+        <exec executable="cmd" output="${build.drive}/output/logs/analysis/tmp_yarp_files.csv" append="true">
+          <arg value="/c"/>
+          <arg value="echo"/>
+          <arg value="${yarpfile_short},${sf.spec.publish.networkdrive}\${sf.spec.job.name}\builds\${sf.spec.job.codeline}\${build.id}\logs\analysis\${yarpfile},${build.drive}\output\logs\analysis\${yarpfile}"/>
+        </exec>
       </sequential>
     </for>
+    
+    <exec executable="perl" dir="${build.drive}" failonerror="false" outputproperty="sf.job.totalyarperrors">
+      <arg value="${sf.common.config.dir}/tools/analysis/parse_yarp_files.pl"/>
+      <arg value="${build.drive}/output/logs/analysis/tmp_yarp_files.csv"/>
+    </exec>
+    <echo message="Total yarp errors: ${sf.job.totalyarperrors}"/>
+    
+    <fmpp sourceFile="${sf.common.config.dir}/diamonds/sf-run-analysis.xml.ftl" outputFile="${build.drive}/output/logs/sf-run-analysis.xml">
+      <data expandProperties="yes">
+        ant: antProperties()
+        files: csv(${build.drive}/output/logs/analysis/tmp_yarp_files.csv,{separator:',',headers:[name,path,localpath]})
+      </data>
+    </fmpp>
 
     </target>
   
--- a/common/common_props.ant.xml	Fri Jun 19 16:13:48 2009 +0100
+++ b/common/common_props.ant.xml	Fri Jun 19 18:00:57 2009 +0100
@@ -50,6 +50,9 @@
     <property name="sf.spec.publish.network.freespace" value="10"/>
     <property name="sf.spec.publish.networkdrive" value="\\v800008\Builds01\SF_builds"/>
     <property name="sf.spec.publish.rootdir" value="\\v800008\Builds01\SF_builds"/>
+    <property name="sf.spec.publish.diamonds.server" value="v800002.ad-sfpd.intra"/>
+    <property name="sf.spec.publish.diamonds.port" value="80"/>
+    <property name="sf.spec.publish.diamonds.path" value="/diamonds/builds/"/>
     
     <property name="sf.spec.tagafterbuild.enable" value="false"/>
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/common/diamonds/config.xml.ftl	Fri Jun 19 18:00:57 2009 +0100
@@ -0,0 +1,78 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+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:
+Diamonds configuration template
+-->
+<configuration>
+<config>
+    <template-dir path="${ant['helium.dir']}/tools/common/templates/diamonds"/>
+    <output-dir path="${ant['build.log.dir']}"/>
+    <property name="smtpserver" value="email.smtp.server" />
+    <property name="ldapserver" value="email.ldap.server" />
+    <property name="initialiser-target-name" value="diamonds" />
+    <server>
+        <property name="host" value="diamonds.host" />
+        <property name="port" value="diamonds.port" />
+        <property name="path" value="diamonds.path" />
+        <property name="tstampformat" value="yyyy-MM-dd'T'HH:mm:ss" />
+        <property name="mail" value="diamonds.mail" />
+        <property name="category-property" value="build.family" />
+        <property name="buildid-property" value="diamonds.build.id" />
+    </server>
+</config>
+<logger>
+    <stages>
+        <stage name="pre-build" start="prep" end="prebuild" />
+        <stage name="build" start="compile-main" end="compile-main" />
+        <stage name="post-build" start="postbuild" end="zip-localised" />
+        <stage name="release" start="publish-variants" end="final" />
+    </stages>
+    <targets>
+        <target name="diamonds" template-file="tool.xml.ftl" 
+            logfile="${ant['temp.build.dir']}/build/doc/ivy/tool-dependencies-${ant['build.type']}.xml" ant-properties="true"/>        
+        
+        <!-- note: replaced by sf-run-analysis -->
+        <!-- target name="compile-main" template-file="compile.xml.ftl"
+            logfile="${ant['diamonds.compile.summary']}" ant-properties="true"/ -->
+                    
+        <target name="ido-codescanner" template-file="codescanner.xml.ftl"
+            logfile="${ant['ido.codescanner.output.dir']}/problemIndex.xml"/>
+
+        <!-- if no logfile provided, looks for xml file to send 
+            using <build.id_target_name.xml> file or<target_name.xml> file, 
+            if both doesn't exists does nothing. tries to pass ant properties
+            and sends it.-->
+            
+        <target name="create-bom"/>
+
+        <target name="rndsdk-create-api-descr-xml" template-file="apimetrics.xml.ftl"
+            logfile="${ant['build.drive']}/output/apidescr/apidescr.xml"/>
+            
+        <#if (ant?keys?seq_contains('validate.policy.log'))>
+        <target name="render-validate-policy" template-file="validate-policy-log.xml.ftl" 
+            logfile="${ant['validate.policy.log']}"/>
+        </#if>
+
+        <!-- defer will store all the converted output file and sends only if there any other
+            stage / target starts to send some data to diamonds -->
+        <target name="check-tool-dependencies" template-file="tool.xml.ftl" 
+            logfile="${ant['temp.build.dir']}/build/doc/ivy/tool-dependencies-${ant['build.type']}.xml" ant-properties="true"
+            defer="true"/>
+            
+        <!-- SF specific -->
+        <target name="sf-diamondize-bom"/>
+        <target name="sf-run-analysis"/>
+    </targets>
+</logger>
+</configuration>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/common/diamonds/sf-run-analysis.xml.ftl	Fri Jun 19 18:00:57 2009 +0100
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<diamonds-build>
+  <schema>10</schema>
+
+  <faults>
+    <total severity="error">${ant['sf.job.totalyarperrors']}</total>
+    <total severity="warning">0</total>
+    <total severity="warning_rvct_bad">0</total>
+    <total severity="warning_rvct_other">0</total>
+    <total severity="codescanner_high">0</total>
+    <total severity="codescanner_medium">0</total>
+    <total severity="codescanner_low">0</total>
+  </faults>
+  
+  <files>
+    <#list files as f>
+    <file>
+      <type>log</type>
+      <name>${f.name}</name>
+      <url>file:///${f.path}</url>
+    </file>
+    </#list>
+  </files>
+  
+</diamonds-build>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/analysis/parse_yarp_files.pl	Fri Jun 19 18:00:57 2009 +0100
@@ -0,0 +1,38 @@
+
+my @asYarpFiles = ();
+open(FILE, $ARGV[0]);
+while ( <FILE> )
+{
+	if ( m/^[^,]*,[^,]*,([^,]*)/ )
+	{
+		my $sFile = $1;
+		chomp $sFile;
+#		print "$sFile\n";
+		push(@asYarpFiles, $sFile);
+	}
+}
+close(FILE);
+my $nYarpFiles = scalar(@asYarpFiles);
+#print "Found $nYarpFiles files to parse\n";
+
+my $nTotalRecipeErrors = 0;
+for my $nYarpFile (@asYarpFiles)
+{
+	my $nRecipeErrors = 0;
+#	print "Parsing file $nYarpFile...\n";
+	open(FILE, $nYarpFile);
+	while ( <FILE> )
+	{
+		if ( m/^Raptor recipe failures:\s+(\d+)$/ )
+		{
+#			print "Raptor recipe failures: $1\n";
+			$nRecipeErrors = $1;
+		}
+	}
+	close(FILE);
+#	print "Recipe errors in $nYarpFile: $nRecipeErrors\n";
+	$nTotalRecipeErrors += $nRecipeErrors;
+}
+#print "Total recipe errors across all files: $nTotalRecipeErrors\n";
+
+print "$nTotalRecipeErrors";
\ No newline at end of file
--- a/common/tools/analysis/yarp.pl	Fri Jun 19 16:13:48 2009 +0100
+++ b/common/tools/analysis/yarp.pl	Fri Jun 19 18:00:57 2009 +0100
@@ -68,6 +68,7 @@
     my %licenceattempts;
     my $counter = 0;
     my $licence = 0;
+    my $failures = 0;
     while( my $line = <FILE>)
     {
       ++$counter;
@@ -84,6 +85,7 @@
 #          if($recipe->{'exit'} !~ m/ok/)
           if($recipe->{'exit'} =~ m/failed/)
           {
+	          ++$failures;
 #            if($recipe->{'target'} =~ m/\S:epoc32\//i) 
 #               && $recipe->{'target'} !~ m/\S:epoc32\/build/i)
             {
@@ -131,6 +133,9 @@
     }
   close FILE;
   print OUT "\n\nSummaries\n\n";
+  
+  print OUT "Raptor recipe failures: $failures\n";
+  
   foreach my $attempt (sort keys %attempts)
   {
     print OUT "Overall attempts: $attempt,".$attempts{$attempt}.",\n";
--- a/sf-package/build.xml	Fri Jun 19 16:13:48 2009 +0100
+++ b/sf-package/build.xml	Fri Jun 19 18:00:57 2009 +0100
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<project name="SF-PACKAGE-CONFIG">
+<project name="SF-PACKAGE-CONFIG" xmlns:hlm="http://www.nokia.com/helium">
   <!-- location of this config -->
   <dirname property="sf.package.config.dir" file="${ant.file.SF-PACKAGE-CONFIG}"/>
   
@@ -12,5 +12,85 @@
   <!-- import package references -->
   <import file="${sf.package.config.dir}/package_refs.ant.xml" />
   
+  <target name="sf-compile">
+    <runtarget target="sf-package-compile"/>
+  </target>
+  
+  <target name="sf-package-compile">
+    
+    <hlm:sbsMakeOptions engine="gmake" id="sbs.fullbuild.options"/>
+    <hlm:sbsMakeOptions engine="gmake" id="sbs.toolsbuild.options"/>
+    
+    <!-- CLEAN -->
+    <hlm:argSet id="sbs.main.clean.sbs.var">
+      <hlm:arg name="config" value="${sf.spec.sbs.config}" />
+      <hlm:arg name="enable-filter" value="${sf.spec.logs.raptorfilter.enable}" />
+      <hlm:arg name="command" value="CLEAN" />
+    </hlm:argSet>
+    <antcall target="compile-main" inheritAll="false" inheritRefs="true">
+      <param name="build.system" value="${sf.spec.build.system}" />
+      <!-- param name="compile.sysdef.dtd.stub" value="${sf.spec.os.sysdef.dtd}" / -->
+      <param name="sysdef.configurations.list" value="${sf.spec.sysdef.configurations.list}" />
+      <!-- param name="sf.spec.sysdef.version" value ="${sf.spec.os.sysdef.version}"/ -->
+      <reference refid="sbs.main.clean.sbs.var" torefid="sbs.var" />
+      <reference refid="sbs.fullbuild.options" torefid="sbs.make.options" />
+      <reference refid="sf.spec.system.definition.files" torefid="system.definition.files" />
+    </antcall>
+    
+    <!-- BUILD tools2 -->
+    <hlm:argSet id="sbs.tools2.var">
+      <hlm:arg name="config" value="tools2_rel" />
+      <hlm:arg name="singlejob" value="false" />
+      <hlm:arg name="enable-filter" value="${sf.spec.logs.raptorfilter.enable}" />
+    </hlm:argSet>
+    <antcall target="compile-main" inheritAll="false" inheritRefs="true">
+      <param name="build.system" value="${sf.spec.build.system}" />
+      <!-- param name="compile.sysdef.dtd.stub" value="${sf.spec.os.sysdef.dtd}" / -->
+      <param name="sysdef.configurations.list" value="${sf.spec.sysdef.configurations.list}" />
+      <!-- param name="sf.spec.sysdef.version" value ="${sf.spec.os.sysdef.version}"/ -->
+      <reference refid="sbs.tools2.var" torefid="sbs.var" />
+      <reference refid="sbs.toolsbuild.options" torefid="sbs.make.options" />
+      <reference refid="sf.spec.system.definition.files" torefid="system.definition.files" />
+    </antcall>
+    
+    <!-- BUILD tools -->
+    <hlm:argSet id="sbs.tools.var">
+      <hlm:arg name="config" value="tools_rel" />
+      <hlm:arg name="singlejob" value="true" />
+      <hlm:arg name="enable-filter" value="${sf.spec.logs.raptorfilter.enable}" />
+    </hlm:argSet>
+    <antcall target="compile-main" inheritAll="false" inheritRefs="true">
+      <param name="build.system" value="${sf.spec.build.system}" />
+      <!-- param name="compile.sysdef.dtd.stub" value="${sf.spec.os.sysdef.dtd}" / -->
+      <param name="sysdef.configurations.list" value="${sf.spec.sysdef.configurations.list}" />
+      <!-- param name="sf.spec.sysdef.version" value ="${sf.spec.os.sysdef.version}"/ -->
+      <reference refid="sbs.tools.var" torefid="sbs.var" />
+      <reference refid="sbs.toolsbuild.options" torefid="sbs.make.options" />
+      <reference refid="sf.spec.system.definition.files" torefid="system.definition.files" />
+    </antcall>
+    
+    <!-- BUILD -->
+    <hlm:argSet id="sbs.main.sbs.var">
+      <hlm:arg name="config" value="${sf.spec.sbs.config}.whatlog" />
+      <hlm:arg name="enable-filter" value="${sf.spec.logs.raptorfilter.enable}" />
+    </hlm:argSet>
+    <antcall target="compile-main" inheritAll="false" inheritRefs="true">
+      <param name="build.system" value="${sf.spec.build.system}" />
+      <!-- param name="compile.sysdef.dtd.stub" value="${sf.spec.os.sysdef.dtd}" / -->
+      <param name="sysdef.configurations.list" value="${sf.spec.sysdef.configurations.list}" />
+      <!-- param name="sf.spec.sysdef.version" value ="${sf.spec.os.sysdef.version}"/ -->
+      <reference refid="sbs.main.sbs.var" torefid="sbs.var" />
+      <reference refid="sbs.fullbuild.options" torefid="sbs.make.options" />
+      <reference refid="sf.spec.system.definition.files" torefid="system.definition.files" />
+    </antcall>
+    
+    <!-- CHECK -->
+    <exec executable="cmd" dir="${build.drive}/" output="${build.drive}/output\logs\build_check_compile.log">
+      <arg value="/c sbs.bat -s ${build.drive}/output\build\canonical_system_definition_SF.xml -k -c ${sf.spec.sbs.config} -j 32 --check -m ${build.drive}/output\logs\build_check_Makefile"/>
+      <!-- argument of -j option can be parameterized with: ${number.of.threads} -->
+    </exec>
+    
+  </target>
+  
 </project>
 
--- a/sf-package/package_props.ant.xml	Fri Jun 19 16:13:48 2009 +0100
+++ b/sf-package/package_props.ant.xml	Fri Jun 19 18:00:57 2009 +0100
@@ -1,4 +1,18 @@
 <?xml version="1.0"?>
 
-<project name="SF-PACKAGE-PROPS"/>
+<project name="SF-PACKAGE-PROPS">
+  
+  <property name="sf.spec.baseline.enable" value="true"/>
+  <property name="sf.spec.baseline.select" value="location"/>
+  <property name="sf.spec.baseline.location" value="\\v800008.ad-sfpd.intra\g$\Releases\PDK_candidate_2.0.b_flat"/>
+  <property name="sf.spec.baseline.getenv_options" value="-i emu -i rnd"/>
+  
+  <property name="sf.spec.systemdefinition.assemble" value="false"/>
+  <property name="sf.spec.sysdef.configurations.list" value="SF"/>
+  
+  <property name="sf.spec.sbs.config" value="winscw"/>
+  
+  <property name="sf.spec.logs.raptorfilter.enable" value="false"/>
 
+</project>
+
--- a/sf-package/package_refs.ant.xml	Fri Jun 19 16:13:48 2009 +0100
+++ b/sf-package/package_refs.ant.xml	Fri Jun 19 18:00:57 2009 +0100
@@ -1,3 +1,11 @@
 <?xml version="1.0"?>
 
-<project name="SF-PACKAGE-REFS"/>
\ No newline at end of file
+<project name="SF-PACKAGE-REFS">
+
+  <path id="sf.spec.system.definition.files">
+    <fileset dir="${sf.spec.job.drive}/" casesensitive="false">
+      <include name="${sf.spec.systemdefinition.location}" />
+    </fileset>
+  </path>
+
+  </project>
\ No newline at end of file
--- a/sf-platform/build.xml	Fri Jun 19 16:13:48 2009 +0100
+++ b/sf-platform/build.xml	Fri Jun 19 18:00:57 2009 +0100
@@ -88,24 +88,6 @@
         </for>
     </target>
 
-    <target name="generate-layers">
-       <echo message="canno-file:${canonical.sysdef.file}"/>
-       <echo message="raptor-filters:raptor_${sysdef.configuration}"/>
-
-       <!-- All we want is a sysdef with the config name appended, so just copy it -->
-       <echo message="INFO: Skip GenXML and copy sysdef to sysdef+config name"/>
-       <copy file="${canonical.sysdef.file}" tofile="${build.drive}/output/build/canonical_system_definition_${sysdef.configuration}_temp.xml"/>
-
-	<copy file="${build.drive}/output/build/canonical_system_definition_${sysdef.configuration}_temp.xml" tofile="${build.drive}/output/build/canonical_system_definition_${sysdef.configuration}.xml">
-		<filterchain>
-			<linecontainsregexp negate="true">
-			  <regexp pattern="^\s*$"/>
-			</linecontainsregexp>
-		</filterchain>
-	</copy>
-	<delete file="${build.drive}/output/build/canonical_system_definition_${sysdef.configuration}_temp.xml"/>
-	</target>
-
   <!--
     == Name: SF-COMPILE
     ==