Re-apply changes to allow sources.csv to specify a revision by a *local* tag in the web repository.
Uses "hg id" instead of "hg in", so not affected by the aborts we had previously. And no need for an empty repo this time either.
<?xml version="1.0" encoding="UTF-8"?>
<project name="SF-COMPILE" xmlns:hlm="http://www.nokia.com/helium">
<math result="sf.spec.sbs.numberofjobs" operand1="${env.NUMBER_OF_PROCESSORS}" operation="*" operand2="2" datatype="int"/>
<!-- compile specified sysdef file. called from sf-compile target in sf-platform/build.xml -->
<target name="sf-os-compile">
<antcall target="sf-do-compile" inheritAll="false" inheritRefs="true">
<param name="sysdef.configurations.list" value="${sf.spec.os.sysdef.clean.configurations.list}" />
<reference refid="sf.spec.os.system.definition.files" torefid="system.definition.files" />
</antcall>
</target>
<!-- compile specified sysdef file. called from sf-compile target in sf-platform/build.xml -->
<target name="sf-s60-compile">
<antcall target="sf-do-compile" inheritAll="false" inheritRefs="true">
<param name="sysdef.configurations.list" value="${sf.spec.s60.sysdef.clean.configurations.list}" />
<reference refid="sf.spec.s60.system.definition.files" torefid="system.definition.files" />
</antcall>
</target>
<!-- compile sbs.tools.config and sbs.config. tools built only if its not being unpacked first.
note: must be called from sf-os/s60-compile targets, as sys model input needed -->
<target name="sf-do-compile" depends="sf-do-full-export">
<echo message="INFO Using Helium 7+ for sf-do-compile"/>
<propertyregex property="sf.unpack.tools" override="true" input="${sf.spec.baseline.getenv_options}" regexp="-i tools" select="true" defaultValue="false" casesensitive="false"/>
<if> <!-- If tools baseline unpack has not been specified, or its not a "fast" build then try to build them -->
<or>
<isfalse value="${sf.unpack.tools}"/>
<isfalse value="${sf.spec.baseline.enable}"/>
<isfalse value="${sf.os.compile.fast}"/>
</or>
<then>
<echo message="INFO Building tools, unpack is not specified"/>
<!-- sf.spec.sbs.tools.config param used. do-target-build will decide to build sequentially/together -->
<antcall target="sf-do-target-compile" inheritAll="false" inheritRefs="true">
<param name="i.sf.spec.sbs.config" value="${sf.spec.sbs.tools.config}" />
</antcall>
</then>
<else>
<echo message="INFO Skipping tools build, tools were unpacked from ${sf.spec.baseline.location}"/>
</else>
</if>
<!-- sf.spec.sbs.config param used. do-target-build will decide to build sequentially/together -->
<antcall target="sf-do-target-compile" inheritAll="false" inheritRefs="true">
<param name="i.sf.spec.sbs.config" value="${sf.spec.sbs.config}" />
</antcall>
<!-- Export model to BOM, as generate-layers target is no longer called from compile-main target -->
<copy file="${build.drive}/output/build/canonical_system_definition_${sysdef.configurations.list}.xml" todir="${build.log.dir}/BOM/"/>
</target>
<!-- perform export only first to assist when parallel makefile parsing -->
<target name="sf-do-full-export">
<hlm:sbsinput id="sf.export">
<sbsOptions>
<arg line="-k" />
<arg line="-j ${sf.spec.sbs.numberofjobs}"/>
<arg line="-t ${sf.spec.sbs.retry.limit}"/>
<arg name="--logfile" value="${compile.log.dir}/${build.id}_${sf.spec.os.sysdef.clean.configurations.list}_compile_full_export.log" />
<arg name="--makefile" value="${compile.log.dir}/${build.id}_${sf.spec.os.sysdef.clean.configurations.list}_compile_full_export_Makefile" />
<arg line="--export-only"/>
</sbsOptions>
</hlm:sbsinput>
<!-- call helium's compile-main target using the sbsInput args defined above -->
<echo message="INFO Full export for all targets"/>
<antcall target="compile-main" inheritAll="false" inheritRefs="true">
<param name="build.system" value="${sf.spec.build.system}" />
<param name="sbs.inputs.list" value="sf.export"/>
</antcall>
</target>
<!-- compile sbs.config list of targets either sequentially or together -->
<target name="sf-do-target-compile">
<if>
<istrue value="${sf.os.compile.iterate}"/>
<then>
<for list="${i.sf.spec.sbs.config}" delimiter="," param="item.sbs.splitconfig">
<sequential>
<!-- define sbs args, log name etc -->
<hlm:sbsinput id="sf.build">
<sbsOptions>
<arg line="-c @{item.sbs.splitconfig}"/>
<arg line="-k" />
<arg line="-j ${sf.spec.sbs.numberofjobs}"/>
<arg line="-t ${sf.spec.sbs.retry.limit}"/>
<arg line="${sf.spec.sbs.options}"/>
<arg name="--filters" value=""${sf.spec.sbs.filter.list}""/>
<arg name="--logfile" value="${compile.log.dir}/${build.id}_@{item.sbs.splitconfig}_${sf.spec.os.sysdef.clean.configurations.list}_compile.log" />
<arg name="--makefile" value="${compile.log.dir}/${build.id}_@{item.sbs.splitconfig}_${sf.spec.os.sysdef.clean.configurations.list}_Makefile" />
<arg line="--noexport"/>
</sbsOptions>
</hlm:sbsinput>
<!-- call helium's compile-main target using the sbsInput args defined above -->
<echo message="INFO Iterative compile building target: @{item.sbs.splitconfig}"/>
<antcall target="compile-main" inheritAll="false" inheritRefs="true">
<param name="build.system" value="${sf.spec.build.system}" />
<param name="sbs.inputs.list" value="sf.build"/>
</antcall>
</sequential>
</for>
</then>
<else>
<!-- turn comma separated list into sbs friendly -c list, and _ separated list for friendly log names -->
<propertyregex property="i.sf.spec.sbs.config.expanded" override="true" input="${i.sf.spec.sbs.config}" regexp="(,)" replace=" -c " defaultValue="${i.sf.spec.sbs.config}" global="true" casesensitive="false"/>
<propertyregex property="i.sf.spec.sbs.config.expanded.logname" override="true" input="${i.sf.spec.sbs.config}" regexp="(,)" replace="_" defaultValue="${i.sf.spec.sbs.config}" global="true" casesensitive="false"/>
<echo message="INFO Target : ${i.sf.spec.sbs.config.expanded}"/>
<echo message="INFO Logname: ${i.sf.spec.sbs.config.expanded.logname} + Config: ${sf.spec.os.sysdef.clean.configurations.list}"/>
<!-- TODO: Make this use above compile-main call? -->
<!-- define sbs args, log name etc -->
<hlm:sbsinput id="sf.build">
<sbsOptions>
<arg line="-c ${i.sf.spec.sbs.config.expanded}"/>
<arg line="-k" />
<arg line="-j ${sf.spec.sbs.numberofjobs}"/>
<arg line="-t ${sf.spec.sbs.retry.limit}"/>
<arg line="${sf.spec.sbs.options}"/>
<arg name="--filters" value=""${sf.spec.sbs.filter.list}""/>
<arg name="--logfile" value="${compile.log.dir}/${build.id}_${i.sf.spec.sbs.config.expanded.logname}_${sf.spec.os.sysdef.clean.configurations.list}_compile.log" />
<arg name="--makefile" value="${compile.log.dir}/${build.id}_${i.sf.spec.sbs.config.expanded.logname}_${sf.spec.os.sysdef.clean.configurations.list}_Makefile" />
<arg line="--noexport"/>
</sbsOptions>
</hlm:sbsinput>
<!-- call helium's compile-main target using the sbsInput args defined above -->
<echo message="INFO Building target(s): ${i.sf.spec.sbs.config.expanded}"/>
<antcall target="compile-main" inheritAll="false" inheritRefs="true">
<param name="build.system" value="${sf.spec.build.system}" />
<param name="sbs.inputs.list" value="sf.build"/>
</antcall>
</else>
</if>
</target>
</project>