buildframework/helium/tests/minibuilds/qt/build.xml
changeset 1 be27ed110b50
child 179 d8ac696cc51f
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/tests/minibuilds/qt/build.xml	Wed Oct 28 14:39:48 2009 +0000
@@ -0,0 +1,261 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+============================================================================ 
+Name        : 
+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="minibuild.qt" default="mini-build" xmlns:au="org.apache.ant.antunit" xmlns:hlm="http://www.nokia.com/helium" basedir=".">
+    <property environment="env" />
+    <import file="../site/${env.TEAM}.ant.xml" optional="true"/>
+    <dirname property="config.dir" file="${ant.file.minibuild.qt}" />
+
+    <!-- Enable Helium internal assertion checking. -->
+    <property name="hlm.enable.asserts" value="1" />
+    
+    <!-- Configure Qt building -->
+    <property name="compile.sysdef.dtd.stub" location="${helium.dir}/tools/common/dtd/sysdef_dtd_1_5_1.xml" />
+    <property name="qmake.enabled" value="true" />
+    <property name="qt.dir" location="${build.drive}/sf/mw/qt" />
+    
+    <property name="build.name" value="minibuild_qt" />
+    <property name="build.family" value="test_minibuilds" />
+    <property name="major.version" value="0" />
+    <property name="minor.version" value="0" />
+    <property name="publish.root.dir" location="${build.drive}/release" />
+
+    <!-- For Grace upload-->
+    <property name="release.grace.service" value="Test_Helium" />
+    <property name="release.grace.product" value="minibuild_qt" />
+    <property name="release.label" value="${major.version}.${minor.version}" />
+
+    <!-- build configuration -->
+    <property name="sysdef.configurations.list" value="build_tools,build" />
+    <path id="system.definition.files">
+        <fileset dir="." includes="*.sysdef.xml" />
+    </path>
+
+    <property name="build.system" value="ec-helium" />
+
+    <!-- Synergy is not configured -->
+    <property name="skip.password.validation" value="1" />
+    <property name="zip.config.file" value="${helium.dir}/tests/minibuilds/qt/config/qmake_zip_cfg.xml"/>
+    <property name="zips.ee.spec.name" value="ee"/>
+
+
+    <import file="${helium.dir}/helium.ant.xml" />
+
+    <!-- Run the full sequence of target for the minibuild. ,mini-build-prep,compile-main,zip-ee,mini-build-check-->
+    <target name="do-mini-build" depends="mini-build-cleanup,mini-build-prep,export-tools,
+      compile-main,zip-ee, mini-build-check" />
+
+
+
+    <!--ant code coverage for mini-builds-->
+    <target name="mini-build">
+        <antcall target="database">
+            <param name="home.files.only" value="false"/>
+        </antcall>
+        <mkdir dir="${helium.build.dir}/temp" />
+        <hlm:coveragerecord name="${helium.build.dir}/temp/test_minibuild.xml" action="start" />
+        <runtarget target="do-mini-build" />
+        <hlm:coveragerecord name="${helium.build.dir}/temp/test_minibuild.xml" action="stop" />
+        <fmpp sourcefile="${helium.dir}/tools/common/templates/coveragerecord.txt.ftl" outputfile="${helium.build.dir}/temp/test_minibuild.txt">
+            <data expandProperties="yes">
+                doc: xml(${helium.build.dir}/temp/test_minibuild.xml)
+                database: xml(${database.file})
+            </data>
+        </fmpp>
+        <loadfile srcfile="${helium.build.dir}/temp/test_minibuild.txt" property="ant.coverage.summary" />
+        <echo>
+The summary of Ant code coverage:
+
+${ant.coverage.summary}</echo>
+        <fmpp sourcefile="${helium.dir}/tools/common/templates/coveragerecord.html.ftl" outputfile="${helium.build.dir}/temp/test_minibuild.html">
+            <data expandProperties="yes">
+                    doc: xml(${helium.build.dir}/temp/test_minibuild.xml)
+                    database: xml(${database.file})
+             </data>
+        </fmpp>
+    </target>
+        
+    <!-- Prepare the minibuild. -->
+    <target name="mini-build-prep" depends="prep" />
+
+    <!-- Stubbing few targets for easy testing with dragonfly ... -->
+    <target name="prep-drive" depends="build-number" />
+    <target name="dragonfly-prep-drive" />
+    <target name="do-prep-work-area" />
+    <target name="create-bom" />
+    <target name="check-env-prep" />
+    <target name="prep-copy">
+        <property name="qt.zip" value="qt-embedded-s60-commercial-src-4.5.0-garden.zip" />
+        <!-- Qt prerelease are accessible from the outside world too. -->
+        <if>
+            <not><available file="${build.drive}/${qt.zip}"/></not>
+            <then>
+                <get src="http://pepper.troll.no/s60prereleases/testpackages/garden05/${qt.zip}" dest="${build.drive}/${qt.zip}"/>
+            </then>
+        </if>
+        <mkdir dir="${qt.dir}"/>
+        <delete>
+            <fileset dir="${qt.dir}">
+                <include name="**/bld.inf"/>
+                <include name="**/*.mmp"/>
+            </fileset>
+        </delete>
+        <unzip src="${build.drive}/${qt.zip}" dest="${qt.dir}/../">
+            <mapper>
+                <regexpmapper from="^qt([^/]*)/(.*)$$" to="qt/\2"/>
+            </mapper>
+        </unzip>
+    </target>
+
+
+
+    <!-- Check that the XML data returned from Diamonds via the REST interface
+    is the same as what is sent. 
+        
+    Currently there are some differences between the formats so some edits to the
+    XML content are made before using XMLUnit to compare the content.
+    -->
+    <target name="check-diamonds">
+        <loadfile srcfile="${build.log.dir}/${build.id}_diamonds-log-start.xml" property="diamonds.log.start">
+            <filterchain>
+                <tokenfilter>
+                    <filetokenizer />
+                    <hlm:prettyprintxml />
+                </tokenfilter>
+            </filterchain>
+        </loadfile>
+        <echo>Data sent to Diamonds:
+            
+${diamonds.log.start}</echo>
+        <loadresource property="diamonds.log.start.output">
+            <url url="${diamonds.build.url}?fmt=xml" />
+            <filterchain>
+                <tokenfilter>
+                    <filetokenizer />
+                    <hlm:prettyprintxml />
+                </tokenfilter>
+            </filterchain>
+        </loadresource>
+        <echo>Data returned from Diamonds:
+            
+${diamonds.log.start.output}</echo>
+        <echo file="${helium.dir}/diamonds_build.xml">${diamonds.log.start}</echo>
+        <!--xmltask source="${helium.dir}/diamonds_build.xml" dest="${helium.dir}/diamonds_build_edit.xml">
+            
+            <cut path="/diamonds-build/tool" buffer="toolElements"/>
+            <cut path="/diamonds-build/locations" buffer="temp"/>
+        </xmltask-->
+        <!--<loadfile srcfile="${helium.dir}/diamonds_build_edit.xml" property="diamonds.log.start.edited"/>
+        <echo>Data sent massaged to match what is received:
+            
+${diamonds.log.start.edited}</echo>-->
+        <!-- TODO: make assertXmlEqual work with direct string input -->
+        <string id="control.id" value="${diamonds.log.start}" />
+        <string id="test.id" value="${diamonds.log.start.output}" />
+        <hlm:assertXmlEqual control="control.id" test="test.id" failonerror="true" />
+    </target>
+
+    <!-- Export tools under epoc32/tools -->
+    <target name="cmaker-qt" depends="cmaker-export,cmaker-what" />
+    <target name="export-tools">
+        <antcall target="cmaker-qt">
+            <param name="cmaker.config.dir" location="${qt.dir}/group/cmaker"/>
+        </antcall>
+    </target>
+
+    <target name="mini-build-cleanup">
+        <delete verbose="true" includeemptydirs="true">         
+            <fileset dir="${build.drive}/" casesensitive="false">
+                <include name="makefile" />
+                <include name="*.mk" />
+                <include name="*.make" />
+                <include name="ecloud_tmp_*/**" />
+                <include name="emake.*" />
+                <include name="epoc32/build/**" />
+                <include name="epoc32/rombuild/imaker_temp/**" />
+                <include name="epoc32/rombuild/${product.name}/**" />
+                <include name="epoc32/rom/config/*/**/foti*.*" />
+                <include name="output/**" />
+                <include name="timestart.txt" />
+                <include name="timestop.txt" />
+                <include name="epoc32/tools/qmake.exe" />
+                <include name="epoc32/tools/rcc.exe" />
+                <include name="epoc32/tools/uic.exe" />
+                <include name="epoc32/tools/moc.exe" />
+                <include name="sf/mw/qt/src/**/bld.inf" />
+                <include name="sf/mw/qt/src/**/*.mmp" />
+                <exclude name="output/build_area/localised/**" />
+            </fileset>
+        </delete>
+    </target>
+
+    <target name="mini-build-check">
+        <!-- Checking that the qmake command line have been generated correctly -->
+        <if>
+            <or>
+                <equals arg1="${build.system}" arg2="ec-helium" />
+                <equals arg1="${build.system}" arg2="sbs-ec" />
+            </or>
+            <then>
+                <au:assertFileExists file="${temp.build.dir}/run-qmake-build.mk" />
+                <loadfile property="qmake.build.makefile" srcFile="${temp.build.dir}/run-qmake-build.mk"/>
+                <au:assertTrue>
+                    <and>
+                        <contains string="${qmake.build.makefile}" substring="qmake -listgen -r src.pro" />
+                        <contains string="${qmake.build.makefile}" substring="qmake -listgen -platform symbian-abld -r examples.pro" />
+                    </and>
+                </au:assertTrue>
+            </then>
+            <else>
+                <xpathtest xmlfile="${temp.build.dir}/run-qmake-build.ant.xml">  
+                    <namespace uri="" prefix=""/>
+                    <xpath expression="/project/target[@name='all']/parallel/sequential/if/then/exec/arg[@value='-listgen']"/>
+                    <xpath expression="/project/target[@name='all']/parallel/sequential/if/then/exec/arg[@line='-r']"/>
+                    <xpath expression="/project/target[@name='all']/parallel/sequential/if/then/exec/arg[@line='-platform symbian-abld -r -listgen']"/>
+                </xpathtest>
+            </else>
+        </if>
+        
+        <!-- Check if prep has set some prop correctly... -->
+        <echo>'${arm.compiler.version}'</echo>
+        <au:assertMatches string="${arm.compiler.version}" pattern="RVCT2\.2 \[Build 616\]" casesensitive="false" multiline="true" />
+
+        <!-- Check if compile-main step did what expected... -->
+        <au:assertFileExists file="${canonical.sysdef.file}" />
+        <au:assertFileExists file="${qt.dir}/src/bld.inf" />
+        <au:assertFileExists file="${qt.dir}/examples/bld.inf" />
+        <au:assertFileExists file="${build.drive}/epoc32/tools/qmake.bat" />
+        <au:assertFileExists file="${build.drive}/epoc32/tools/moc.bat" />
+        <hlm:assertFileExists file="${build.log.dir}/${build.id}_build.qmake.generated.txt"/>
+        <hlm:assertFileExists file="${build.log.dir}/${build.id}_build_tools.qmake.generated.txt"/>
+        <loadfile srcFile="${build.log.dir}/${build.id}_build.qmake.generated.txt" property="qmake.generated.output"/>
+        <au:assertMatches string="${qmake.generated.output}" pattern="[^/]+/+[^/]+" />
+
+    </target>
+
+    <!-- Never fail the build. -->
+    <hlm:signalInput id="compileSignalInput" failbuild="never">
+        <hlm:notifierListRef refid="defaultSignalFailNotifier" />
+    </hlm:signalInput>
+    
+</project>
+