buildframework/helium/helium.ant.xml
changeset 628 7c4a911dc066
parent 588 c7c26511138f
child 645 b8d81fa19e7d
--- a/buildframework/helium/helium.ant.xml	Wed Jun 16 16:51:40 2010 +0300
+++ b/buildframework/helium/helium.ant.xml	Fri Aug 13 14:59:05 2010 +0300
@@ -24,9 +24,9 @@
     <description>
     Main full build targets and properties
     </description>
+    
     <property environment="env" />
 	
-    
     <!-- Load the current Helium version. -->
     <!--* @property helium.version
     @type string
@@ -34,591 +34,19 @@
     -->
     <property file="${helium.dir}/config/version.txt"/>
 
-    <!-- Libraries
-    ======================================================================-->
+
     <import file="helium_preinclude.ant.xml"/>
     
-    <!-- The path where Helium-specific outputs are written to.
-    @type string
-    @scope private
-    -->
-    <property name="helium.build.dir" location="${helium.dir}/build"/>
-    
-    <hlm:typedef file="${helium.dir}/tools/common/common.antlib.xml" uri="http://www.nokia.com/helium"/> 
-    
-    <!-- Location of generated logging config.
-    @type string
-    @scope private
-    -->
-    <property name="logging.output.file" location="${cache.dir}/logging.${env.PID}.conf" />
-    <fmpp sourceFile="${helium.dir}/config/logging.conf.ftl" outputFile="${logging.output.file}" quiet="true">
-        <data expandProperties="yes">
-            ant: antProperties()
-        </data>
-    </fmpp>
-     
-    <!-- Properties
-    ======================================================================-->
-    <!-- Used to specify which team configuration is being used. These configuration files are under /mc/mc_build/teams.
-    @type string
-    -->
-    <property name="team" value="${env.TEAM}"/>
-
-    <!-- See if 'bn' is defined as a shortcut for build.number. -->
-    <if>
-        <isset property="bn"/>
-        <then>
-            <!-- Build number
-            @type integer
-            @scope public
-            -->
-            <property name="build.number" value="${bn}"/>
-        </then>
-    </if>
-    
-    <!-- If build.drive not define then search the next free drive -->
-    <if>
-        <and>
-            <not>
-                <isset property="build.drive"/>
-            </not>    
-            <os family="windows"/>
-        </and>
-        <then>
-            <!-- used to track if build.drive has predefined or not
-            @type flag
-            @scope private
-            -->
-            <property name="build.drive.notdefined" value="true"/> 
-            <exec osfamily="windows" executable="python" failonerror="true" outputproperty="build.drive">
-                <arg line="-m searchnextdrive"/>               
-            </exec>
-            <if>
-                <equals arg1="${build.drive}" arg2="Error: No free drive!"/>
-                <then>            
-                    <fail message="ERROR: Failed to assign build drive, please check you are not running out of drives." />    
-                </then>
-            </if>
-            <exec osfamily="windows" executable="subst" failonerror="false">
-                <arg value="${build.drive}" />
-                <arg value="${env.TEMP}/helium/temp_drive" />
-            </exec>
-            <echo> Using build drive ${build.drive} </echo>
-        </then>
-    </if>
-    
-    <!-- For unix os prep.build.dir is equivalent to build.drive -->
-    <condition property="prep.build.dir" value="${build.drive}">
-        <and>
-            <isset property="build.drive"/>
-            <os family="unix"/>
-        </and>
-    </condition>
-    
     
-    <if>
-        <and>
-            <isset property="major.version"/>
-            <isset property="minor.version"/>
-        </and>
-        <then>
-            <!-- This Defaults to the ${major.version}.${minor.version} combo and is available so that 1 number can be used (dot can be removed)
-            @type string
-            -->
-            <property name="core.build.version" value="${major.version}.${minor.version}"/>
-        </then>
-        <else>
-            <!-- This Defaults to the ${major.version}.${minor.version} combo and is available so that 1 number can be used (dot can be removed)
-            @type string
-            -->
-            <property name="core.build.version" value="${env.USERNAME}"/>
-        </else>
-    </if>
-    
-    <!--* @property read.build.int
-    If defined, indicates that the build number should be read from an incrementing text file.
-    @type string
-    @scope public
-    -->
-    <!--* @property build.tag
-    If defined, defines the prefix for the build number when it is read from an incrementing text file.
-    @type string
-    @scope public
-    -->
-    <if>
-        <and>
-            <isset property="read.build.int"/>
-            <not>
-                <isset property="build.number"/>
-            </not>
-        </and>
-        <then>
-            <if>
-                <isset property="build.tag"/>
-                <then>
-                    <property name="build.tag.ext" value="${build.tag}."/>
-                </then>
-                <else>
-                    <property name="build.tag.ext" value=""/>
-                    <property name="build.tag" value=""/>
-                </else>
-            </if>
-            <!-- Use an internal directory to store text files for assigning build number information. -->
-            <!-- The directory where the build integer database text files are stored.
-            @type string
-            @scope private
-            -->
-            <property name="build.int.db.dir" location="${publish.root.dir}/internal/build_int_db"/>
-            <mkdir dir="${build.int.db.dir}"/>
-            <property name="build.int.db.file" value="${build.int.db.dir}/${build.name}_${core.build.version}_${build.tag}_build_int_db.txt"/>
-            <if>
-                <available file="${build.int.db.file}"/>
-                <then>
-                    <echo>Reading from existing build number property file.</echo>
-                    <property file="${build.int.db.file}"/>
-                    <echo>Build int = ${build.int}</echo>
-                    <!-- Read the comments in the file too, for history information. -->
-                    <loadfile property="build.int.db.file.comments" srcFile="${build.int.db.file}">
-                        <filterchain>
-                            <linecontains>
-                                <contains value="# history: "/>
-                            </linecontains>
-                        </filterchain>
-                    </loadfile>
-                    <!-- Set the property in case nothing was found. -->
-                    <property name="build.int.db.file.comments" value=""/>
-                    <echo>History comments:
-${build.int.db.file.comments}</echo>
-                    <!-- Build number
-                    @type integer
-                    @scope public
-                    -->
-                    <property name="build.number" value="${build.tag.ext}${build.int}"/>
-                    <echo>Writing incremented build int back to file.</echo>
-                    <propertyfile file="${build.int.db.file}" comment="build.int database file">
-                        <entry key="build.int" type="int" default="001" operation="+" pattern="000"/>
-                    </propertyfile>
-                    <tstamp>
-                        <format property="build.int.db.file.tstamp" pattern="dd/MM/yyyy-HH:mm:ss"/>
-                    </tstamp>
-                    <concat destfile="${build.int.db.file}" append="true">
-${build.int.db.file.comments}
-# history: ${env.COMPUTERNAME};${env.USERNAME};${build.int.db.file.tstamp};${build.int}
-                    </concat>
-                </then>
-                <else>
-                    <echo>Build number property file not found. Creating a new one.</echo>
-                    <property name="new.build.int" value="001"/>
-                    <!-- Build number
-                    @type integer
-                    @scope public
-                    -->
-                    <property name="build.number" value="${build.tag.ext}${new.build.int}"/>
-                    <echo>Build number = ${build.number}</echo>
-                    <propertyfile file="${build.int.db.file}" comment="build.int database file">
-                        <entry key="build.int" type="int" default="001" operation="+" pattern="000"/>
-                    </propertyfile>
-                </else>
-            </if>
-        </then>
-    </if>
-
-
-    <!-- Define a number of properties that should be consistent amongst all builds. They can be overridden
-    within any config or team Ant file though. -->
-    <!-- A general label for this type of build. Currently if not defined, product.name will be used to set this property, but this will likely be removed in future.
-    @type string
-    @editable required
-    -->
-    <property name="build.name" value="helium"/>
-    <if>
-        <and>
-            <isset property="core.build.version"/>
-            <isset property="build.number"/>
-        </and>
-        <then>
-            <!-- Version of the build.
-            @type string
-            @scope private
-            -->
-            <property name="build.version" value="${core.build.version}.${build.number}"/>
-        </then>
-        <else>
-            <!-- Version of the build.
-            @type string
-            @scope private
-            -->
-            <property name="build.version" value="${env.USERNAME}"/>
-        </else>
-    </if>
-    
-    <!-- A unique ID for the build.
-    @type string
-    @scope private
-    -->
-    <property name="build.id" value="${build.name}_${build.version}"/>
-    <!-- The general type of the build. This is used for checking the tools environment. Potential values include core, ido, product.
-    @type string
-    -->
-    <property name="build.type" value="core"/>
-    <condition property="epocroot" value="${env.EPOCROOT}" else="${env.EPOCROOT}/">
-        <matches pattern="^.*[\\/]$" string="${env.EPOCROOT}" />
-    </condition>
-    <!-- The data model XML file for the Ant configuration.
-    @type string
-    @scope private
-    -->
-    <property name="data.model.file" location="${helium.dir}/config/helium_data_model.xml"/>
-    <!-- The data model XML file for the Ant configuration parsed.
-    @type string
-    @scope private
-    -->
-    <property name="data.model.parsed" location="${helium.build.dir}/datamodel.out"/>
-    <condition property="data.model.xsl" value="${helium.dir}/extensions/nokia/config/helium_nokia_data_model.xsl" else="${helium.dir}/config/helium_data_model.xsl">
-        <available file="${helium.dir}/extensions/nokia/config/helium_nokia_data_model.xsl"/>
-    </condition>
-    <!-- Location of helium database
-    @type string
-    @scope private
-    -->
-    <property name="database.file" location="${basedir}/build/database.xml"/>
-    <!-- Directory where CCM operations will be performed.
-    @type string
-    -->
-    <property name="ccm.base.dir" location="${ccm.home.dir}\${minor.version}"/>
-    <!-- This is the directory where the build area is prepared. Once created it is substed to the build.drive.
-    @type string
-    @scope private
-    -->
-    <property name="prep.build.dir" location="${prep.root.dir}/${build.id}"/>
-    <!-- This is the directory where build output is placed.
-    @type string
-    @scope private
-    -->
-    
-    <!-- If build.drive not define then prep.buil.dir is the value for build.drive for unix os -->
-    <condition property="build.drive" value="${prep.build.dir}">
-        <and>
-            <not>
-                <isset property="build.drive"/>
-            </not>    
-            <os family="unix"/>
-        </and>
-    </condition>
-    
-    <property name="build.output.dir" location="${build.drive}/output"/>
-    <!-- This is where the diamonds output XML files are stored.
-    @type string
-    @scope private
-    -->
-    <property name="diamonds.build.output.dir" location="${build.output.dir}/diamonds"/>
-    <!-- This is the directory where sisfiles are placed.
-    @type string
-    @scope private
-    -->
-    <property name="build.sisfiles.dir" location="${build.output.dir}/sisfiles"/>
-    <!-- This is the directory where build area is archived after the build has finished.
-    @type string
-    @scope private
-    -->
-    <property name="zips.build.dir" location="${build.output.dir}/build_area/engineering_english"/>
-    <!-- This is the directory where build area is archived after the localisation.
-    @type string
-    @scope private
-    -->
-    <property name="zips.loc.dir" location="${build.output.dir}/build_area/localised"/>
-    <!-- The directory where subcon zips are stored.
-    @type string
-    @scope private
-    -->
-    <property name="subcon.zips.dir" location="${build.output.dir}/build_area/subcon"/>
-    <!-- This is the directory where flash files are archived.
-    @type string
-    @scope private
-    -->
-    <property name="zips.flashfiles.dir" location="${build.output.dir}/zips_flashfiles"/>
-    <!-- This is where the build logs are stored.
-    @type string
-    @scope private
-    -->
-    <property name="build.log.dir" location="${build.output.dir}/logs"/>
-    <!-- This is where the signal related files are stored.
-    @type string
-    @scope private
-    -->
-    <property name="build.signal.status.dir" location="${build.log.dir}/signals"/>
-    <!-- This is the email template path where it updates the build status based on metadata database contents. The default file could (email_status_orm.html.ftl under tools\common\template\log)be used as the base and any additional info could be added
-    @type string
-    -->
-    <property name="build.status.email.template" location="${helium.dir}/tools/common/templates/log/email_status_orm.html.ftl" />
-    <!-- Location of build metadata database.
-    @type string
-    @scope private
-    -->
-    <condition property="metadata.dbfile" value="${build.log.dir}/${build.id}_metadata_db" else="${build.log.dir}/${build.id}${env.PID}_metadata_db">
-        <isset property="build.number"/>
-    </condition>
+    <hlm:typedef file="${helium.dir}/tools/common/common.antlib.xml" uri="http://www.nokia.com/helium"/>
     
-    <!-- Directory to store temporary files generated during the process.
-    @type string
-    @scope private
-    -->
-    <property name="temp.build.dir" location="${build.output.dir}/temp_build_files"/>
-    <!-- The 'failonerror' attribute for exec tasks.
-    @type boolean
-    @scope public
-    -->
-    <property name="failonerror" value="false"/>
-    <!-- Maximum allowable errors in a build.
-    @type number
-    -->
-    <property name="build.errors.limit" value="0"/>
-    <!-- Unsubsted drive after build finished. If not defined then helium should left the drive as subst. Set the value as "yes" if you want to unsubst after build finished.
-    @type string
-    -->
-    <property name="unsubst.after.build" value="no"/>
-    <!-- display warnings at build startup if required properties are not defined.
-    @type string
-    @scope private
-    -->
-    <property name="validate.properties.at.startup" value="yes"/>
-    <!-- A unique name for the WA Sources ZIP file.
-    @type string
-    @scope private
-    -->
-    <property name="zip.wa.file" value="${build.drive}/output/src/${build.id}_sources.zip"/>
-    <!-- The location and name of the target times log file. Default value is: ${build.log.dir}/${build.id}_targetTimesLog.csv
-    @type string
-    -->
-    <property name="target.times.log.file" value="${build.log.dir}/${build.id}_targetTimesLog.csv"/>
-
-    <!-- Cache related properties. -->
-    <!-- Directory where Helium can store files on a temporary basis for a user per build.
-    @type string
-    @scope private
-    -->
-    <property name="build.cache.dir" location="${cache.dir}/${build.id}"/>
-    <!-- Directory where Helium can store log files on a temporary basis for a user per build.
-    @type string
-    @scope private
-    -->
-    <property name="build.cache.log.dir" location="${build.cache.dir}/logs"/>
-    <mkdir dir="${build.cache.log.dir}"/>
-    
-    <!-- Path location for the memory tracing data captured by the TracingLogger.
-    @type string
-    @scope private
-    -->
-    <property name="tracing.csv.file" location="${build.cache.dir}/logs/${build.id}_traces.csv"/>
-    
-    <!-- Publish dir configuration. Defines subdir first and next toplevel properties. -->
-    <!-- Subdir part of the publish dir, relative to publish.root.dir
-    @type string
-    -->
-    <property name="publish.subdir" value="${build.name}/builds/${core.build.version}/${build.id}"/>
-    <!-- Subdir part of the publish release dir, relative to publish.root.dir
-    @type string
-    @scope private
-    -->
-    <property name="publish.release.subdir" value="${build.name}/releases/${core.build.version}/${build.id}"/>
-    <!-- Directory where the build is published (includes build.id)
-    @type string
-    -->
-    <property name="publish.dir" location="${publish.root.dir}/${publish.subdir}"/>
-    <!-- The directory where the release of this build is published to on the local network.
-    @type string
-    @scope private
-    -->
-    <property name="publish.release.dir" location="${publish.root.dir}/${publish.release.subdir}"/>
-    <condition property="is.published" else="false">
-        <isset property="publish"/>
-    </condition>
-    
-    <!-- The directory where flash images of build can be found
-    @type string
-    @scope private
-    -->
-    <property name="release.images.dir" value="${build.output.dir}/release_flash_images"/>
-    <!-- Defines location of binaries created in build. Used in check-capability target while generating capability scan report.
-    @type string
-    @scope private
-    -->
-    <property name="binary.root" value="${build.drive}/epoc32/release/armv5/urel" />
-    <!-- Location of python library
-    @type string
-    @scope private
-    -->
-    <property name="python.dir" value="${helium.dir}/external/python/lib"/>
-    <!-- @type string
-    @scope private
-    -->
-    <property name="python.tools" value="${helium.dir}/external/python/bin"/>
-
-    <!-- EBS is selected as the default build system, but ec for Electric Cloud could be used. -->
-    <!-- This specifies which build system is used. Default for this is ebs You can use ec for Electric Cloud..
-    @type string
-    -->
-    <property name="build.system" value="ebs"/>
-    <!-- Path for the output XML file generated by genxml used as input to EBS or EC.
-    @type string
-    @scope private
-    -->
-    <property name="genxml.output.file" location="${temp.build.dir}/${build.id}.${sysdef.configuration}.xml" />
-    <!-- The path of the generated canonical System Definition file that contains all the input System Definition file content.
-    @type string
-    @scope private
-    -->
-    <property name="canonical.sysdef.file" value="${build.output.dir}/build/canonical_system_definition.xml"/>
-    <!-- @type string
-    @scope private
-    -->
-    <property name="build.system.${build.system}" value="Not used"/>
-    <!-- This is the file where build summary is stored.
-    @type string
-    @scope private
-    -->
-    <property name="build.summary.file" location="${build.log.dir}/summary/${build.id}_summary.log.xml"/>
-    <property name="error.summary.file" location="${build.log.dir}/summary/${build.id}_error_summary.log.xml"/>
-    <!-- Defines name of the log file.
-    @type string
-    @scope private
-    -->
-    <property name="build.log" value="${build.log.dir}/${build.id}_main.ant.log"/>
-    <!-- Diamonds Configuration file with full path used for diamonds listener.
-    @type string
-    -->
-    <property name="diamonds.listener.configuration.file" location="${helium.dir}/config/diamonds_config.xml.ftl"/>
-    <!-- Path where ant XML files dynamically downloaded from jar file.
-    @type string
-    @scope private
-    -->
-    <property name="antlib.import.module.path" location="${helium.dir}/tools/hlm-antlib-imports"/>
-    
-    <!-- Following are temporarily defined here until global tools available-->
-    <!-- This specifies the directory where Electric Cloud history files are stored. Currently defined in helium.ant.xml and mapped related to publish.root.dir
-    @type string
-    @scope private
-    -->
-    <property name="ec.history.dir" location="${publish.root.dir}\${product.family}\ec_history"/>
-    <!-- Version of build
-    @type string
-    -->
-    <property name="release.label" value="${build.version}"/>
-    <!-- mode is either serial / parallel - default is parallel
-    @type string
-    -->
-    <property name="ec.mode" value="parallel" />
-    <!-- Setting this to "1" will force xml2mak to generate only warnings (instead of errors) for duplicate components in the component list
-    @type string
-    @scope private
-    -->
-    <property name="ec.allow.duplicates" value="0" />
-    <!-- Defines log file where to record archiving of engineering english area.
-    @type string
-    @scope private
-    -->
-    <property name="zip.ee.log.file" location="${build.log.dir}/${build.id}_ee_zip.log" />
-    <!-- The path to the localization zipping log file.
-    @type string
-    @scope private
-    -->
-    <property name="zip.localised.log.file" location="${build.log.dir}/${build.id}_localised_zip.log" />
-    <!-- Defines log file where to record archiving of subcon environment.
-    @type string
-    @scope private
-    -->
-    <property name="zip.subcon.log.file" value="${build.log.dir}/${build.id}_subcon_zip.log" />
-    <!-- The log file name for zipping subcon_roms.
-    @type string
-    @scope private
-    -->
-    <property name="zip.subcon_roms.log.file" location="${build.log.dir}/${build.id}_subcon_roms_zip.log" />
-    <!-- The log file name for zipping trace_roms.
-    @type string
-    @scope private
-    -->
-    <property name="zip.trace_roms.log.file" location="${build.log.dir}/${build.id}_trace_roms_zip.log" />
-    <!-- target to be executed in case of exceptions (mainly to generate the summary and raise signal).
-    @type string
-    @scope private
-    -->
-    <property name="exceptions.target" value="hlm-exception-handler"/>
-    <!-- The tools dependencies Ivy settings configuration file.
-    @type string
-    -->
-    <property name="tools.ivy.config.file" location="${helium.dir}/config/ivy/tools_ivy_settings.xml" />
-    
-    <!-- A file where persistent properties for a build should be stored.
-    @type string
-    @scope private
-    -->
-    <property name="build.property.cache.file" location="${diamonds.build.output.dir}/build_properties_cache.txt" />
-    <!-- The path for the Python script to handle the ccm task bridge to the ccm.py module.
-    @type string
-    @scope private
-    -->
-    <property name="ccmtask.python.script.file" location="${helium.dir}/tools/preparation/synergy/ccmtask.jep" />
-    <!-- Level of ant logging.
-    @type string
-    -->
-    <property name="ant.loglevel" value="verbose"/>
-
-    <if>
-        <available file="${build.property.cache.file}"/>
-        <then>
-            <property file="${build.property.cache.file}"/>
-        </then>
-    </if>
-    
-
-    <!-- Default number of threads is 2 * NUMBER_OF_PROCESSORS, but this can be overridden by defining the
-    property manually. -->
-    <if>
-        <not>
-            <isset property="number.of.threads"/>
-        </not>
-        <then>
-            <if>
-                <isset property="env.NUMBER_OF_PROCESSORS"/>
-                <then>
-                    <math result="number.of.threads" operand1="${env.NUMBER_OF_PROCESSORS}" operation="*" operand2="2" datatype="int"/>
-                </then>
-                <else>
-                    <!-- how many parallel threads can run
-                    @type string
-                    @scope public
-                    -->
-                    <property name="number.of.threads" value="2"/>
-                </else>
-            </if>
-        </then>
-    </if>
-    
-    <!--* @property product.family
-    In product builds defines the product family that the build product belong to.
-    @type string
-    @editable required
-    @scope public
-    -->
-    
-    <!--* @property product.list
-    In product builds defines the list of products that are build in the configuration. Property is used in rom image creation, localisation release notes creation and data packaging.
-    @type string
-    @editable required
-    @scope public
-    -->
-     
-    <!--* @property diamonds.build.tags
-    
-    @type string
-    @editable optional
-    @scope public
-    -->
+    <!-- Import default configuration settings. -->
+    <import file="tools/common/default_config.ant.xml"/>
 
     <!-- Import basic targets.
         
     The intention would be to split the targets into separate files somewhat
-    matching the build phases located inside \nbuild and import each one here.
+    matching the build phases and import each one here.
     -->
     <import file="extensions/nokia/build.xml" optional="true"/>
     <import file="tools/preparation/preparation.ant.xml"/>
@@ -643,28 +71,8 @@
     <import file="config/signaling_config_default.ant.xml"/>
     <import file="config/stages_config_default.ant.xml"/>
     <import file="config/metadata_filter_config_default.ant.xml"/>
+    <import file="config/diamonds_config_default.ant.xml"/>
 
-    
-    <!-- Top level build execution targets.
-        
-    All of these should simply depend on other targets. They should not contain any tasks.
-    -->
-    
-    <!-- Top-level target for platform builds. -->
-    <target name="platform-build"
-            depends="prep,prebuild,compile-main,postbuild,build-roms,zip-ee,publish-generic,
-                     report,final"
-            description="The default platform build"/>
-    
-    <!-- Top-level target for IBUSAL builds. -->
-    <target name="ibusal-build"
-            depends="prep-drive,init-build-area,prebuild,build-info,log-build-env,
-                     check-env-prep,diamonds,prep-copy,set-arm-version,
-                     create-canonical-sysdef-file,compile-main,zip-ee"
-            description="The default IBUSAL build"/>
+</project>
 
-    <!-- Top-level target for IDO builds. -->
-    <target name="ido-build"
-            depends="diamonds,compile-clean,compile-main,build-roms"
-            description="IDO build"/>
-</project>
+