buildframework/helium/tools/compile/sbs/sbs.ant.xml
changeset 1 be27ed110b50
child 179 d8ac696cc51f
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/tools/compile/sbs/sbs.ant.xml	Wed Oct 28 14:39:48 2009 +0000
@@ -0,0 +1,236 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+============================================================================ 
+Name        : sbs.ant.xml 
+Part of     : Helium 
+
+Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+All rights reserved.
+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:
+Nokia Corporation - initial contribution.
+
+Contributors:
+
+Description:
+
+============================================================================
+-->
+<project name="compile.sbs" xmlns:hlm="http://www.nokia.com/helium">
+    <description>
+    Executes compilation of a System Model of System Definition file using Symbian SBS (Raptor) tools. 
+
+    Should not be called directly but through compile-main by setting ${build.system.sbs} property.
+
+    Example:
+
+    hlm -Dsysdef.configurations.list=ALL -Dbuild.system=sbs compile-main
+    hlm "-Dsysdef.configurations.list=REALLYCLEAN,ALL" -Dbuild.system=sbs compile-main
+    </description>
+
+    <!-- Executes compilation  of a System Model of System Definition file using Symbian SBS (Raptor) tools. 
+
+    Should not be called directly but through compile-main by setting ${build.system.sbs} property.
+
+    Example: 
+
+    hlm -Dsysdef.configurations.list=ALL -Dbuild.system=sbs compile-main
+    hlm "-Dsysdef.configurations.list=REALLYCLEAN,ALL" -Dbuild.system=sbs compile-main
+
+    -->
+
+    <property name="skip.sbs.layer.generation" value="false" />
+    
+    <!-- This target filters the canonical system definition file compare to the "raptor_${sysdef.configuration}" filter. -->
+    <macrodef name="generate-layers" uri="http://www.nokia.com/helium">
+        <sequential>
+            <echo message="canno-file:${canonical.sysdef.file}" />
+            <echo message="raptor-filters:raptor_${sysdef.configuration}" />
+            <if>
+                <istrue value="${skip.sbs.layer.generation}" />
+                <then>
+                    <copy file="${canonical.sysdef.file}" tofile="${build.drive}/output/build/canonical_system_definition_${sysdef.configuration}_temp.xml"/>
+                </then>
+                <else>
+                    <hlm:compileGenxmlFilterMacro input="${canonical.sysdef.file}" filter="raptor_${sysdef.configuration}"
+                        output="${build.output.dir}/build/canonical_system_definition_${sysdef.configuration}_temp.xml"/>
+                </else>
+            </if>
+            <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"/>
+        </sequential>
+    </macrodef>
+
+    <if>
+        <not>
+            <isset property="sbs.config"/>
+        </not>
+        <then>
+            <property name="sbs.config" value="armv5" />
+            <property name="sbs.tools.config" value="tools_rel" />
+        </then>
+    </if>
+
+    <import file="sbs.settings.ant.xml" />
+
+    <!-- SBS build with gmake as engine type. Default is using sbs macro, to use old implementation to
+    use using exec task, then sbs.using.exec needs to be set. -->
+    <target name="compile-sbs" description="This is the main build that gets built for ARMV5 and WINSCW platforms">
+        <if>
+            <or>
+                <equals arg1="${build.system}" arg2="sbs" />
+                <equals arg1="${build.system}" arg2="sbs-ec" />
+            </or>
+            <then>
+                <!-- Choosing the right command (either clean or normal command) and 
+                    the default command if no input is specified for sbs -->
+                <var name="sbs.cmd.reference" value="sbs" />
+                <var name="sbs.make.reference" value="${build.system}.make.options" />
+                <hlm:sbsMakeOptions id="sbs.internal.make.options" refid="${sbs.make.reference}" />
+                <if>
+                    <istrue value="${compile.cmd.clean}"/>
+                    <then>
+                        <var name="sbs.cmd.reference" value="${sbs.cmd.reference}.clean" />
+                    </then>
+                </if>
+                <if>
+                    <not>
+                        <isreference refid="${sbs.cmd.reference}.var"/>
+                    </not>
+                    <then>
+                        <var name="sbs.cmd.reference" value="${sbs.cmd.reference}.default" />
+                    </then>
+                </if>
+                <if>
+                    <not>
+                        <isreference refid="${sbs.make.reference}"/>
+                    </not>
+                    <then>
+                        <hlm:sbsMakeOptions id="sbs.internal.make.options" refid="${sbs.make.reference}.default" />
+                    </then>
+                </if>
+                <var name="sbs.cmd.reference" value="${sbs.cmd.reference}.var" />
+                <echo message="sbs build:${env.SBS_HOME}/python/plugins/filter_heliumlog.py" />
+
+                <!-- Generate the filtered layers -->
+                <hlm:generate-layers />
+
+                <!-- run arm license checking / setting arm version only for arm config --> 
+                <hlm:getVariableValue name="config" property="compilevalue.var">
+                    <hlm:argSet refid="${sbs.cmd.reference}" />
+                </hlm:getVariableValue>
+                <if>
+                    <not>
+                        <equals arg1="${compilevalue.var}" arg2="winscw"/>
+                    </not>
+                    <then>
+                        <runtarget target="set-arm-version"/>
+                    </then>
+                </if>
+
+                <!-- only temporary once config file option starts to work, then no 
+                need to copy the plugin file -->
+
+                <echo message="Copying helium filter plugin to sbs home" />
+                <copy file="${helium.dir}/tools/common/python/scripts/filter_metadatalog.py" todir="${env.SBS_HOME}/python/plugins/" failonerror="true" />
+                <copy file="${helium.dir}/tools/common/python/scripts/sbsscanlogmetadata.py" todir="${env.SBS_HOME}/python/plugins/" failonerror="true" />
+
+
+                <echo>Building with SBSv2</echo>
+                <echo message="build.drive:${build.drive}"/>
+                <echo message="build.log.dir:${build.log.dir}"/>
+                <echo message="sysdef.configuration:${sysdef.configuration}"/>
+                <echo message="canonical.sysdef.file:${canonical.sysdef.file}"/>
+                <echo message="env.SBS_HOME:${env.SBS_HOME}"/>
+                <!-- Implicit calls to tools configuration, for temporary once the sbs is working
+                    to execte all configuration at the same time, this could be removed. -->
+                <if>
+                    <istrue value="${sbs.implicit.tools.build}" />
+                    <then>
+                        <echo message="Implicit tools configuration build" />
+                        <hlm:sbsCompileMacro cmdreference = "sbs.implicit.tools.var" />
+                    </then>
+                </if>
+                <hlm:sbsCompileMacro cmdreference = "${sbs.cmd.reference}" />
+            </then>
+        </if>
+    </target>
+
+    <macrodef name="sbsCompileMacro" uri="http://www.nokia.com/helium">
+        <attribute name="cmdreference" />
+        <sequential>
+            <var name="sbs.log.file" value="" unset="true"/>
+            
+            <delete file="${build.log.dir}/${build.id}.${sysdef.configuration}_sbs_info.xml" failonerror="false"/>
+            <!-- sbs.log.file set by sbs tool execution, temporary -->
+            <hlm:toolMacro name="sbs">
+                <hlm:toolvarset refid="@{cmdreference}"/>
+            </hlm:toolMacro>
+            
+            <!-- update the resultes to database -->
+            <hlm:assertFileExists file="${build.log.dir}/${build.id}.${sysdef.configuration}_sbs_info.xml"/>
+            <echo message="Metadata enabled, storing build status in database" />
+            <echo message="sbs log file :${sbs.log.file}" />
+            <hlm:metadatarecord database="${metadata.dbfile}">
+                <hlm:sbsmetadatainput>
+                    <fileset casesensitive="false" file="${sbs.log.file}"/>
+                    <metadatafilterset refid="filterset.sbs" />
+                </hlm:sbsmetadatainput>
+            </hlm:metadatarecord>
+            <basename property="base.sbs.log.file" file="${sbs.log.file}" suffix=".log"/>
+            <echo message="base sbs log file :${base.sbs.log.file}" />
+            <fmpp sourceFile="${helium.dir}/tools/common/templates/log/scan2.html.ftl"
+                         outputfile="${sbs.log.file}.scan2.html">
+                <freemarkerLinks expandProperties="yes">
+                    macro: ${helium.dir}/tools/common/templates/macro
+                </freemarkerLinks>
+                <data expandProperties="yes">
+                    dbPath: ${metadata.dbfile}
+                    doc: xml(${build.log.dir}/${build.id}.${sysdef.configuration}_sbs_info.xml)
+                    ant: antProperties()
+                </data>
+            </fmpp>
+            <echo message="generating signal" />
+            <hlm:assertFileExists file="${sbs.log.file}.scan2.html"/>
+            <hlm:calculateErrorsFromLog logfile="${sbs.log.file}" />
+            <hlm:compileLogSignalMacro compile.summary.file="${base.sbs.log.file}" 
+                error.limit="${build.errors.limit}"/>
+            <!-- Blocks packaging configuration generation. -->
+            <if>
+                <istrue value="${blocks.enabled}" />
+                <then>
+                    <mkdir dir="${blocks.config.dir}" />
+                    <exec executable="python">
+                        <arg value="-m"/>
+                        <arg value="packager.cli"/>
+                        <arg value="--epocroot=${build.drive}/" />
+                        <arg value="--config=${blocks.config.dir}" />
+                        <arg value="--datasource=sbs" />
+                        <arg value="-Dsbslog=${sbs.log.file}" />
+                        <arg value="-Dsysdef=${canonical.sysdef.file}" />
+                        <arg value="-Dthreads=20" />
+                        <arg value="--updateData" />
+                    </exec>
+                </then>
+            </if>
+        </sequential>
+    </macrodef>
+
+    <!-- Get the supported configuration(armv5, winscw) from system definition file.  This is 
+    temporary and will be moved to get values from carbon tool. -->
+    <target name="get-sbs-configs">
+        <hlm:getSBSConfigMacro sbs.sysdef.file="${canonical.sysdef.file}"/>
+        <echo message="configs:${sbs.configs}"/>
+    </target>
+</project>